2010-11-09 81 views
1

我在我的应用程序中有多个服务。我有一个datacontract,我需要在超过1个服务中使用。WCF数据合同/设计问题的命名空间问题?

如:类myCommonClass在我的服务service1 2和service2

使用要做到这一点,在服务水平,我有一个MyApplication.Common库,这个库包含myCommonClass。由于我的服务都提到了MyApplication.Common,他们都可以使用它。

我的客户端应用程序具有对service1service2的服务引用。 为了我的客户端应用程序,service1.myCommonClass是相比于service2.myCommonClass潜藏我的问题

以我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

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

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

由于单个文件。我一定会尝试一下并更新它的方式。 – InSane 2010-11-10 07:36:58