并非所有名称空间都通过WCF引用传递

时间:2014-08-11 14:27:47

标签: c# .net wcf

我的解决方案中有3个项目。

  • 一个名为ReportBuilderLib的常见类库
  • 一个名为ReportClient的WPF应用程序,它包含对第三个项目的服务引用 -
  • 一个WCF Web服务,其中包含供我的应用程序调用的Web方法。

最初在设置服务和应用程序时,我将公共库添加到两个项目的引用中,以便我可以使用我需要的类。

很快就发现,在生成代码以在我的客户端应用程序中使用Web方法的过程中,它会自动导入我在服务应用程序中使用的某些命名空间。

这给我带来了相互矛盾的参考警告,因为它们实际上是从两个不同的资源中导入的。

然后我在报表客户端中删除了对库的引用,我可以看到VS只导入了客户端需要的两个命名空间中的一个。这两个都是由我的ServiceContract中的方法返回的。

查看了客户端生成的代码之后,它似乎重新创建了我已经包含在库中的类,并且只提供了用于访问的公共属性。

是否可以使用像我正在尝试使用WCF的库。或者我应该废弃常见的库想法,只是在服务端创建一些数据传输类?

1 个答案:

答案 0 :(得分:0)

你应该能够在两端引用公共库,但它可能是有用的,并且不像你建议的那样实现数据传输类。使用特殊类(或类似JSON的序列化)从服务发送和接收数据将使您更容易为多个客户端项目重用该服务。

每当您减少应用程序各层之间的耦合时,您将来可以更轻松地实施更改/升级:)