向客户发送数据的最佳做法是什么:POCO或DTO?我正在使用EF4和POCO开始一个项目。向客户端发送数据的最佳做法是什么?我应该发送POCO还是应该有DTO?将实体(与上下文断开连接)发送给客户端时,我应该注意什么问题吗?是否建议将POCO发送到客户端层?对我而言,将EF4与POCO一起使用的主要原因之一是您不需要DTO。我可以理解,对于使用DTO的传统EDMX文件,您的实体非常臃肿,但事实并非如此。您的POCO显然需要可序列化,但实际上不应该存在任何特定于发送POCO实体的问题,它们也不会出现在DTO中。我相信我们在这里混合了两个彼此无关的定义。DTO或数据传输对象是一种设计模式,可用于在层之间传输数据,它们也没有行为。MartinFowler对此非常熟悉:http://www.martinfowler.com/eaaCatalog/dataTransferObject.html另一方面,我们有POCO或普通旧CLR对象。但是要说起POCO,就必须要知道它的来历,POJO或者PlainOldJavaObject。MartinFowler与两个合作伙伴一起创造了这个术语,他在这里对此进行了解释:http://www.martinfowler.com/bliki/POJO.html所以POCO可以拥有您想要的行为和一切。它们与您每天编写的普通类相同,它们只是给它们命名,并以简短易记的方式称呼它们。在回答你的第二个问题时,我认为最好的方法和我经常使用的方法是将DTO从业务层发送到使用它的所有东西(例如:你的服务、网站、桌面应用程序、移动应用程序等)。这是因为它们没有行为,而且在大多数情况下不仅仅是属性,所以它们是轻量级的,非常适合用于服务,当然,它们不会泄露您企业的敏感数据。也就是说,如果您打算使用DTO,我可以推荐您下载EntitiesToDTOs,这是我刚刚在CodePlex上发布的实体框架DTO生成器,它是免费和开源的。转到http://entitiestodtos.codeplex.com我对上面的说法有点异议。我相信在服务器层的外部仍然需要DTO或ViewModel。实际上,有些视图层只需要一个领域对象,也就是说,几乎每个视图都需要多个领域对象。所有这些域对象都包含在DTO或ViewModel类中。这就是为什么我坚持使用DTO或ViewModel,即使它们是POCO。我会考虑将EF4实体业务模型和视图模型合二为一。例如,他们已经实现了开箱即用的PropertyChanged。如果需要,某些类可以提供自定义功能。在我看来,使用您自己的安全层镜像实体会产生不必要的工作和维护。我相信业务逻辑和其他一切的分离。但对于EF4,这项工作已经为您完成。发疯。以上是C#学习教程:Whatisthebestpracticeforsendingdatatoclient:POCOorDTO?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
