我建立在C#標準的三層應用程序三層應用程序 - 在哪裏把數據和商業模式
1個控制檯應用程序的前端/但我可能會改變這一個ASP.NET MVC的Web頁面
2業務邏輯層
3使用實體框架數據層連接到一個SQL數據庫/但是這可能會改變到Windows Azure
的主要目的是,以顯示一些客戶數據。
存儲在數據庫中的客戶具有以下字段 -
CustomerID
Firstname
Lastname
DateOfBirth
Othervalue1
Othervalue2
Othervalue3
Creationdate
Updatedate
IsDisabled //this represents "deleted" customers i.e. the app will never use deleted customers, but I want to keep them in the database anyway
在中間層,我只想
CustomerID
Firstname
Lastname
DateOfBirth
Othervalue1
Othervalue2
Othervalue3
Updatedate
而且在第一個應用程序的前端我只顯示
CustomerID
Firstname
Lastname
DateOfBirth
如何從加載的角度正確實現n層應用程序來自數據層的客戶(可能會更改),並在中間層使用該客戶,然後在表示層(可能會更改)中使用該客戶?
我在哪裏放置客戶模型?我需要多個嗎?我需要某個ICustomer接口嗎?
項目細節 該項目將由兩個小組進行開發,一個設在美國,東歐等,將有四個到五人組成員之間。
有一個傳統的數據訪問層,這個項目不會使用。相反,我們將用Entity Framework構建一個新的;我們需要設計和構建一個將用於所有新應用程序的數據層(對於這個應用程序,我們只需要客戶表和一個或兩個表)。其他項目將爲此圖層添加其他表格。
我正在使用DI注入ICustomerRepository(請參閱此SO question)。但是會實施存儲庫和工作模式單元。
我的問題是關於適當分離圖層。我們將在未來幾個月內增加許多新項目,新的數據層將迅速增長。我們也在考慮在某個時候遷移到Azure,所以我希望能夠替換實體框架數據層,而不必重寫業務層和前端層。
我認爲這是更主觀的,你可能會想。 Mark Seeman在http://blog.ploeh.dk/2012/02/09/IsLayeringWorthTheMapping.aspx – Joe 2013-02-10 01:23:04
寫了一篇很棒的文章。我正在閱讀他關於DI的書以及他的一些博客文章。他們被認爲是令人髮指。 – tom 2013-02-10 02:25:38