POCO = 普通旧 CLR(或更好:类)对象
DTO = 数据传输对象
In this post http://rlacovara.blogspot.com/2009/03/what-is-difference-between-dto-and-poco.html这是有区别的,但坦率地说,我读过的大多数博客都以 DTO 的定义方式描述 POCO:DTO 是简单的数据容器,用于在应用程序的各层之间移动数据。
POCO和DTO是同一个东西吗?
POCO 遵循 OOP 规则。它应该(但不必)有状态and行为。 POCO来自POJO,由Martin Fowler创造[这里有轶事 http://www.martinfowler.com/bliki/POJO.html]。他使用 POJO 一词来让拒绝框架重的 EJB 实现变得更加性感。 POCO 应该在 .Net 中的相同上下文中使用。不要让框架决定对象的设计。
DTO 的唯一目的是传输状态,并且不应该有任何行为。参见马丁·福勒的DTO 的解释 http://martinfowler.com/eaaCatalog/dataTransferObject.html有关使用此模式的示例。
区别如下:POCO 描述了一种编程方法(好的老式面向对象编程),其中DTO是一种模式用于使用对象“传输数据”。
虽然您可以像对待 DTO 一样对待 POCO,但您可能会面临创建贫血域模型 http://www.martinfowler.com/bliki/AnemicDomainModel.html如果你这样做。此外,结构上也存在不匹配,因为 DTO 应该被设计为传输数据,而不是代表业务领域的真实结构。这样做的结果是 DTO 往往比您的实际域更加扁平。
在任何合理复杂性的域中,创建单独的域 POCO 并将其转换为 DTO 几乎总是更好。 DDD(领域驱动设计)定义了(另一个链接here http://moffdub.wordpress.com/2008/09/21/anatomy-of-an-anti-corruption-layer-part-1/,但最好的办法是买书 https://rads.stackoverflow.com/amzn/click/com/0321125215),这是一个很好的结构,可以使隔离清晰。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)