在一个分层的应用程序中,让你在共享层中定义实体是否好的做法?我想我会在所有图层中使用它们。还是他们属于业务层?分层应用程序中的共享层中的实体(横切关注)?
MSDN's layered application guideline把业务实体在业务层
的Layered Architecture Sample for .NET放实体共享层
难道是这样吗?
- 介绍
- 业务
- 数据
- 共享
- 实体
还是必须是这样的
-
个
- 介绍
- 业务
- 实体
- 数据
- 共享
做什么,为什么?
在一个分层的应用程序中,让你在共享层中定义实体是否好的做法?我想我会在所有图层中使用它们。还是他们属于业务层?分层应用程序中的共享层中的实体(横切关注)?
MSDN's layered application guideline把业务实体在业务层
的Layered Architecture Sample for .NET放实体共享层
难道是这样吗?
还是必须是这样的
做什么,为什么?
我平时组织项目结构如下:
业务层
DAL数据访问服务层
我会说这取决于如果这些实体包含业务逻辑或没有。
从分层应用指南:
业务实体也验证包含的实体 内的数据和封装业务逻辑,以确保一致性,并实现 业务规则和行为。
相比之下,Layered Architecture Solution Guidance似乎依靠代码生成创建实体,它们仅仅是数据的容器很少在他们没有逻辑。
Rich domain entities倾向于不在共享模块中,因为这意味着携带大量您不希望每个人都拥有的行为(想象能够直接在客户端操纵业务逻辑......)相反,贫血是轻量级的,并且可能在各处愉快而方便地分布。
我的方法有点不同。在数据层中,我存储所有实体,并在共享层中拥有DTO对象(Domain Transfer Objects),它们是实体的精确副本,但没有实体框架控件。为了映射对方,我使用了流畅且易于使用的mapper(AutoMapper)。
我不明白为什么实体框架不支持接口,只使用实例。