2012-05-18 81 views
5

我跑了一些搜索,但發現沒有可用的答案這個問題。什麼是正確的架構MVC4 WebAPI

好了,我的MVC 3架構是這樣的:

- Project.EDM (contains only the entity framework edmx file and its .tt and .cs entity classes) 
- Project.DAL (contains IXxxRepositiory and XxxRepository where CRUD is performed on the entity classes) 
- Project.Web (the MVC3 project. Controllers transfer data from ViewModels into entity models and call the CRUD functions in the DAL repositories.) 

MVC4WebApi出現如此大的吸引力,因爲我們將能夠從其他應用程序調用的CRUD操作。我們都喜歡這個想法。

但是我發現的現有例子在ApiController下的MVC4項目中有CRUD操作。我習慣於將這些操作放入單獨的DAL項目中。推薦的選擇是什麼?我們是否仍然有單獨的DAL課程?您的專家如何設計架構?

謝謝你的一切有用的建議。

+2

這個問題有點主觀 – MilkyWayJoe

+0

這可能是有用的,如果你提供一個鏈接到我看的例子。 – Bull

回答

7

我這樣做是:

  • 庫查詢數據庫
    • 服務層驗證的東西,以避免重複代碼
      • 的Web UI
      • 的Web API

因此UI和API都有一個或多個服務,而這些服務又有一個或多個存儲庫對象。

大多數示例直接從ApiController查詢數據庫的唯一原因可能是因爲簡單。

+0

您的Web API是另一個MVC4項目嗎? – Blaise

+2

是的,通常我會爲一切創建單獨的項目。 所以我的解決辦法可能是這樣的: - 上下文(持有EDMX) - 庫 - 服務(服務層) - 實體 - 的ViewModels - WebUI中 - 的WebAPI - DependencyInjection(因爲DI內核必須從API和UI項目中調用) –

+0

哇!你真的分開了一切! CRUD操作在哪裏進行?他們還在儲存庫嗎? – Blaise