1

我们有一个 WCF 服务,它由三个不同的程序集组成:

  1. 实体层 (POCO)
  2. BL 层(业务逻辑和数据访问)
  3. 服务层 (WCF)

使用服务时,直接引用实体 dll 与从服务的 WSDL 创建数据契约的优缺点是什么?

4

3 回答 3

2

如果您只在所有客户端上使用 .Net,那么您最好只引用 dll。如果您有无法引用程序集的非 .Net 客户端,或者您有 .Net 客户端由于各种原因(例如安全性)无法执行此操作,则 WSDL 可以很好地工作。

于 2013-08-01T18:44:51.947 回答
1

通过 WSDL 引用

生成的 DataContracts 自动提供两个接口的实现。

  • INotifyPropertyChanged - 通常用于绑定到数据(WPF/Silverlight)。因此,如果您想使用 View/ViewModel 中的对象,您可以直接使用它。
  • IExtensibleDataObject - 用于在不丢失数据的情况下保持版本兼容性。如果您的客户端使用旧版本的代理并希望与新版本的服务和此类场景通信,这将非常有用。

直接引用实体层组件

假设您将业务层拆分为两个程序集——服务器和客户端。您显然想在客户端上使用客户端业务层。但是,服务和客户端业务层程序集都引用了实体层程序集。

在这种情况下,如果您从 WSDL 生成 DataContract,它们将是不同的类型(尽管具有相同的类名),您将无法轻松地将它们与客户端业务层程序集一起使用。在这里,添加对实体层程序集的引用可能更有意义,并且在生成代理时,您应该选择重用引用程序集中的类型。

于 2013-08-01T18:18:20.010 回答
0

例如,在客户端重用业务逻辑。如果您添加一个包含其他属性聚合的属性,您可以让客户端在需要时使用该属性,而不是总是通过网络发送它。

于 2013-08-01T16:27:13.390 回答