实体框架POCO与WCF软件设计问题

时间:2010-09-21 12:27:53

标签: wcf entity-framework poco datacontract

我将在我的应用程序中使用Entity Framework和WCF。正如我所看到的,建议的做法是使用POCO和Entity Framework,并使用POCO类作为DataContracts。这实际上是POCO和属性的用途,如果我没有错的话。

但是我被要求对Entity Framework POCO和WCF DataContracts使用单独的分类。并在POCO和DataContracts之间使用映射器。比如,FooFooContract具有相同的属性。

我是第一种方法,但我想知道第二种方法(单独的类方法)是否为应用程序提供了灵活性,或者只是浪费精力。

如果您能分享您对POCO和DataContracts使用单独类别的想法和经验,我们将不胜感激。

3 个答案:

答案 0 :(得分:7)

为您的POCO和您的合同分别设置类将允许您创建面向消息的服务而不是RPC样式服务。

拥有面向消息的服务将使您的服务更灵活,做更多工作,并且与每个服务使用的对象联系更少。

基于消息的服务也更符合面向服务的体系结构的精神。您可以在Wikipedia阅读有关面向消息的服务的更多信息。

如果您对优质服务设计背后的原则感兴趣,我还建议选择Thomas Erl Service-Oriented Architecture: Concepts, Technology & Design

答案 1 :(得分:3)

在持久层和合同级别拥有不同的数据类可以提供最大的灵活性。例如,您可能不希望在合同上公开所有持久字段,或者您可能希望通过合同等公开不同的数据层次结构。它还允许彼此独立地更改两者。

起初看起来似乎在两个层面上使用不同的类都是重复 - 但从长远来看,努力并不是那么多(与你获得的灵活性相比)。您可能会在需要时尝试使用相同的类并开发不同的类,但问题是在短时间内,您的服务与数据类紧密耦合,而不是服务应该暴露/使用的信息/数据。

答案 2 :(得分:1)

我同意@JustinNiessner,我发现使用SOLID原则构建.NET应用程序的最佳指导是series of posts .Net Junkie和{{}} { {3}}。清楚地陈述和提供信息,非常值得一读。