WCF数据合同/设计问题的命名空间问题?

时间:2010-11-09 07:43:17

标签: wcf service datacontract

我在我的应用程序中有多个服务。我有一个数据提取,我需要在多个服务中使用。

例如:我的两项服务myCommonClassservice1

正在使用班级service2

为此,在服务级别,我有一个MyApplication.Common库,此库包含myCommonClass。由于我的服务都引用了MyApplication.Common,因此他们都可以使用它。

我的客户端应用程序包含对service1service2的服务引用。 对于我的客户端应用程序,与service1.myCommonClass相比,service2.myCommonClass是一个单独的命名空间,其中<​​strong>是我的问题

在我的Reference.cs中(通过svcutil生成 - BOTH类的命名空间是相同,即

System.Runtime.Serialization.DataContractAttribute
(Name="MyCommonClass", Namespace="http://A.B.MyCommonClassNamespace")])

但是,这两个文件都在2个单独的reference.cs文件中,而reference.cs中的命名空间由于属于两个单独的服务引用而不同。

因此,对于我的客户端应用程序,它们显示为两个完全不相关的类。

* 问题1 * :有什么方法可以向我的客户端应用程序指出service1.myCommonClassservice2.myCommonClass本质上是同一个类?

* 问题2 * :我的设计在运行中是否存在某些问题让我无法运行 陷入这个问题?

1 个答案:

答案 0 :(得分:1)

不,你的设计很好。而不是从Visual Studio添加服务引用,而是在命令提示符下使用svcutil生成代理类。创建一个类库项目并将生成的.cs文件添加到其中。您也可以创建批处理文件并在预构建步骤中运行它 使用如下的svcutil在service dll(实现两个服务的dll)的单个文件中生成代理类

svcutil.exe /t:metadata "PATH\service1.dll" "PATH\service2.dll"  
svcutil.exe /t:code *.wsdl *.xsd /o:Proxy.cs