【问题标题】:Namespace Issue with WCF Data Contract / Design Problem?WCF 数据协定/设计问题的命名空间问题?
【发布时间】:2010-11-09 07:43:17
【问题描述】:

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

例如:myCommonClass 类在我的两个服务service1service2 中使用

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

我的客户端应用程序具有对service1service2 的服务引用。 对于我的客户端应用程序,service1.myCommonClassservice2.myCommonClass 相比是一个单独的命名空间,这就是我的问题

在我的 Reference.cs 中(通过 svcutil 生成 - 两个类的命名空间是 same

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

但是,这两个文件都位于 2 个单独的 reference.cs 文件中,并且 reference.cs 中的命名空间是不同的,因为它们是两个单独的服务引用的一部分。

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

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

*问题 2 * :我的设计是否存在固有问题,让我运行 遇到这个问题?

【问题讨论】:

    标签: wcf service datacontract


    【解决方案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
    

    【讨论】:

    • 谢谢。我一定会试试这个并更新它的进展情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 2011-02-05
    • 2011-12-31
    • 1970-01-01
    • 2010-11-14
    相关资源
    最近更新 更多