POCO (Plain Old CLR Object)源自Java EE编程领域的POJO概念(2000年由Martin Fowler提出)和POTS (Plain Old Telephone Service)概念。POCO被应用于面向.NET框架的CLR (Common Language Runtime, 公共语言运行时)。但是POCO本身不依赖于外部框架,它是PLAIN的。
POCO的优点:
- 简单数据存储机制,简化层间数据传递和序列化。
- 可用于依赖注入和仓库(Repository)模式。
- 减少对其它逻辑层的依赖和复杂性,实现松耦合(较高的逻辑层需要考虑POCO,POCO不关心其它任何事物)。
- 通过简化实现可测试性。
POCO是计算机领域限定名词。
Entity是实体,代表以自身存在,实际的或潜在的、具体的或抽象的、物理的或非物理的。Entity是非计算机领域限定名词,所以有时会有Data Entity或POCO Entity。
Model是数学逻辑名词,包括有限操作的集合以及定义于其上的关系,主要用于分析、设计过程。
DTO (Data Transfer object)是数据传输实体,用于在进程间传递数据。其概念从进程间通讯到本地与远程接口(如Web服务)的通讯,每次调用都是很消耗资源和性能的操作。
DTO与BO或者DAO的区别是DTO没有任何行为(方法),只是存储和提供它所拥有数据的查询(访问器和修改器)。DTO是简单对象,不包含任何需要测试的业务逻辑。
DTO模式经常被错误地用于远程接口调用以外的场景,实际上是错误的,这意味着进程内层间调用使用的对象是不应该被称为DTO的。
应用中的所有实体(Entity)都是业务对象(Business Object),但并不是所有业务对象都是实体。业务对象(Business Object)包括包含方法的实体对象(Entity Object)和不包含方法的值对象(Value Object)。
业务实体(Business Entity)封装了高阶逻辑需要的业务逻辑或业务规则。它使用实体字段进行裁决或者在必要时修改并进行实体的序列化。
领域对象/实体/类型(Domain Object/Entity/Class)包含复杂的业务逻辑。描述了多条件下不同的行为逻辑和业务规则。领域实体与业务实体无大致区别,谈到领域实体多数情况是因其复杂的逻辑和规则。
持久化对象/实体/类型(Persistent Object/Entity/Class)主要是为了将数据保存到内存或数据库中的载体类型。