我们有一个 WCF 服务,它由三个不同的程序集组成:
- 实体层 (POCO)
- BL 层(业务逻辑和数据访问)
- 服务层 (WCF)
使用服务时,直接引用实体 dll 与从服务的 WSDL 创建数据契约的优缺点是什么?
如果您只在所有客户端上使用 .Net,那么您最好只引用 dll。如果您有无法引用程序集的非 .Net 客户端,或者您有 .Net 客户端由于各种原因(例如安全性)无法执行此操作,则 WSDL 可以很好地工作。
通过 WSDL 引用
生成的 DataContracts 自动提供两个接口的实现。
直接引用实体层组件
假设您将业务层拆分为两个程序集——服务器和客户端。您显然想在客户端上使用客户端业务层。但是,服务和客户端业务层程序集都引用了实体层程序集。
在这种情况下,如果您从 WSDL 生成 DataContract,它们将是不同的类型(尽管具有相同的类名),您将无法轻松地将它们与客户端业务层程序集一起使用。在这里,添加对实体层程序集的引用可能更有意义,并且在生成代理时,您应该选择重用引用程序集中的类型。
例如,在客户端重用业务逻辑。如果您添加一个包含其他属性聚合的属性,您可以让客户端在需要时使用该属性,而不是总是通过网络发送它。