并不是所有的命名空间都是通过WCF引用的

本文关键字:WCF 引用 命名空间 并不是 | 更新日期: 2023-09-27 18:17:23

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

    一个名为ReportBuilderLib的公共类库
  • 一个名为ReportClient的WPF应用程序,包含对第三个项目的服务引用-
  • 一个包含web方法的WCF web服务。

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

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

这会给我带来冲突的引用警告,因为它们实际上是从两个独立的资源中导入的。

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

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

是否有可能使用库,就像我试图与WCF。或者我应该放弃公共库的想法,简单地在服务端创建一些数据传输类?

并不是所有的命名空间都是通过WCF引用的

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

任何时候你减少了应用程序层之间的耦合,你就更容易在未来实现更改/升级:)