2011-07-27 93 views
0

我最近開始學習ASP.Net MVC及其各種功能MVC_3_MUSIC_STORE + CODE
它看起來非常結構化和簡單易懂。將ASP.Net MVC轉換爲N層

我讀到有關企業應用程序以及它們是如何分層/分級在不同的部分
(邏輯/物理)

我想知道(學習)怎麼辦分離(轉換)上述MVC_3_MUSIC_STORE成n - 層或3層應用程序(因爲我們已經有一個工作示例)爲了有一個清晰的關注點分離。 我沒有太多的經驗。

需要做什麼改變?

將會需要哪些不同的DTO或POCO? 以上示例使用從控制器到視圖周圍的POCO實體。 假設使用EF代碼,它會保持不變。

另外我想知道如果WCF Webservice作爲數據訪問層引入將需要什麼更改。即,取代從DAL檢索數據,客戶端將向WCF Web服務請求數據。客戶端可以是Web應用程序或WinForms或Sliverlight應用程序。
[DAL < - >WCF WS] < - >N個客戶端

很想知道的各種方法。

示例代碼會有幫助和/或相同的示例。

編輯1 - 增加
一個我注意到的事情是,當我移動模型類從模型文件夾複製到新的項目「基於myModel」我將不得不重新添加引用「System.ComponentModel.DataAnnotations」和新模型項目中的「System.Web.Mvc」?

這怎麼可以避免?這些驗證如何移到業務層?

References will be lost if moved to new project

編輯2
尋找類似於將需要此 Advice For A Newbie About N-Tier Applications

回答

2

通常情況下,唯一改變的東西是,你會提供存儲庫(DAL層)的實現,其將調用WCF Web服務來獲取域模型,而不是直接與數據庫交談的EF DataContext。對控制器和視圖完全透明的更改。

+1

這並不是「使其成爲N層」,這使得它面向服務(這本身就是一個超載的術語)。 UI層+業務層+數據存儲層= 3層架構。該任務中沒有任何要求Web服務。 –

+0

@Eric J.,雖然我對這些術語並不熟悉,但我絕對會這樣做。 –

+0

根據什麼要求設置?與直接訪問數據庫相比,WCF速度較慢(與本機HTTP處理程序相比,WCF速度也較慢)。在許多情況下,通過Web服務公開功能是有價值的,但也有成本。應用解決方案而不質疑問題會導致糟糕的架構選擇。我們的解決方案每天可以處理數十億次請求,如果我們將WCF作爲附加層引入,則硬件幾乎需要兩倍。有關術語的定義,請參閱http://en.wikipedia.org/wiki/Multitier_architecture –