我很好奇,想知道是什么感觉社会在这个问题上。我最近接触到一个NHibernate的/ WCF情景问题(实体坚持在服务层),并意识到我可以在这里走错了方向。

我的问题显然是,用持久对象图(NHibernate的,LINQ到SQL等)后面的Web服务(WCF在这种情况下)的时候,你更喜欢通过网络发送这些实体?或者你会穿过创建一组轻DTO的(没有循环引用)?

有帮助吗?

解决方案

DTO的。使用AutoMapper为对象到对象映射

其他提示

我已经在这个方案之前多次,可以从两侧经验发言。本来我只是序列化我的实体和发送它们原样。这从功能角度精细的工作,但我看过,我越意识到,我是送比我需要更多的数据,我失去改变两边的执行能力的更多。在随后的服务应用程序我已经采取了创建DTO的,其唯一目的是让数据和从Web服务。

任何互操作性之外,不必考虑所有正在通过网络发送的领域是非常有帮助的(对我来说),以确保我不发送是不需要或者更糟的数据,不应该趴下到客户端。

正如其他人提及的, AutoMapper 是对于实体一个伟大的工具DTO映射。

我几乎总是创造DTOS转移过线,我的服务器和客户端上使用里克特实体。在客户端,他们将有一些常见的表现逻辑,同时在服务器上,他们将有业务逻辑。在DTOS和实体之间的映射可能是愚蠢的,但它需要发生。像AutoMapper工具帮助你。

如果你问我做派系列化实体从Web服务到外面的世界?那么答案肯定是否定的,你会如果你这样做来获得最小的互操作性。 DTO的帮助通过定义一套可以用任何语言,无论您是使用C#,Java和Javascript或其他任何被实例化“对象”的解决这个问题。

我一直在导线发送NHibernate的对象问题。特别是如果你使用的ActiveRecord模型。和/或如果你的对象有联系的会话(呸)。另一个讨厌的结果是,可能的nHibernate尝试,并在其也可以可能会导致问题的方法(,然后才能得到它)的条目加载对象。

所以......收到消息吗?问题,问题的问题... DTO的一路

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top