如上所述,我正在实现一个多层架构以使用 WCF 和 Entity Framework 4(使用 poco)。由于我已经对 POCO 有持久性的无知,我确实需要实现 DTO 或者我可以以其纯粹的方式使用 WCF?
主要引述是——我确实需要 DTO 来在网络上传递轻量级对象,或者我可以使用我的 POCO 实体。
你们推荐什么?
最佳答案
除非您定义什么是“纯粹的方式”,否则很难回答。我们是在谈论纯 SOA 还是纯 WCF?
WCF 代理在某种程度上已经是 DTO,因为它们不会在您的服务契约(Contract)中带来任何业务逻辑。在 WCF 生成的代理类之上创建另一层 DTO 似乎是多余的。
您想回答的最大问题是“SOA 是如何解决这个问题的?”。如果您想符合 SOA,则不能跨服务边界共享您的 POCO 实体。 SOA 完全是关于不同的契约。
如果你完全基于 SOA,那么你会失去很多功能,因为你的 Web 层大部分时间将使用的类将是愚蠢的代理。您将不得不重复大量逻辑,并且丢失了 MVC 2 提供的大量“元数据,约定优于配置”功能。
如果您将 SOA 流行语扔进粉碎机,您应该这样做 (http://soafacts.com/),那么您将可以更轻松地跨层共享业务逻辑和元数据信息。如果您的 Web 服务的唯一消费者是您自己,那么此方法可能是您的最佳选择。
这是您可以使用 DTO 代替 POCO 实体通过网络发送的地方。唯一的缺点又是,重复逻辑,以及大量无所事事的样板仪式代码。真的取决于你的项目的大小。如果它很小,请忘记 DTO,但如果您有 20 个开发人员处理 200,000 个 LoC,那么 DTO 可能值得创建。
关于c# - 将 WCF 服务与 Entity Framework 4 和...DTO 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2006142/