我使用MVC和EF創建具有多個圖層的示例Web應用程序。我也使用Repository Pattern進行數據庫訪問。我只是具有MVC4 EF和存儲庫模式的N層體系結構
的層
大學生創業
- 撥打存儲庫和執行業務邏輯。
學生資料
- 實體POCO
- 實體上下文
- 實體庫
Student對象
- 包含了使用NInject域對象
- MVC Web應用程序
- 實體控制器(這裏實例化服務後)
- 我綁定的所有接口(這個項目包含所有其他層的引用)。
我需要幫助在這個設計的優點和缺點。
我使用MVC和EF創建具有多個圖層的示例Web應用程序。我也使用Repository Pattern進行數據庫訪問。我只是具有MVC4 EF和存儲庫模式的N層體系結構
的層
大學生創業
學生資料
Student對象
我需要幫助在這個設計的優點和缺點。
除了adv。和優點。 (http://www.codeproject.com/Articles/430014/N-Tier-Architecture-and-Tips#nAdvantages)是N層定義的,我會根據我最近與類似的架構經驗包括幾個要點:
好處是:
由於控制器是薄層和業務邏輯都存儲在實際服務,您可以共享不同用途的服務項目,例如Windows桌面等。您也可以在將來爲Webapi公開相同的服務。因此可用性很高。
當您在關注NInject的接口時,您可以使用Mocks for TDD。因此,您可以在列表中添加TDD和DI優點。
代碼首先是很好的方法來表示你的數據庫,它是乾淨和透明的方法。你知道發生了什麼事。
數據庫版本控制通過Code首先是最大的賣點。
缺點:
即使你在邏輯上分離這些組分,但你不能單獨部署這些組件。因此,通過適當的會話處理可以實現縮放。因此更多的工作。
CS文件過多,每個控制器(1或2),服務(1接口和1類),存儲庫(1接口,1類)一個。因此,取決於您的應用程序,它將會廣泛地增長。我已經有超過100個文件可以管理。但在Resharper的幫助下,你可以擺脫這個缺點並將其轉化爲你自己的好處。
儘管您可以爲存儲庫,控制器以及服務編寫通用CRUD操作。將有一段時間,你會最終會使得每個控制器有它自己的服務等等的路徑...
如果你先用Code創建POCO,那麼你肯定需要理解Migration;我仍然在努力尋找許多答案。
對於代碼優先的DbContext,沒有直接和簡單的方法來調用函數(就像你在導入函數中,在Database first - edmx中使用sp)。它很乾淨,但有很多可能需要的破解。
Like Code首先爲您創建數據庫,因此數據庫管理不需要版本控制。不過,我覺得複雜的是處理部署,視圖,功能,sp;需要編碼。
就性能而言,我想這將歸結爲您如何編寫代碼。
總的來說,我對我的Webapi完全一樣的架構,我對這個架構感到非常滿意。
感謝您的詳細解釋... – DON 2014-09-27 13:33:25