我建立在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