更改WCF项目的命名空间而不影响客户端

时间:2015-11-04 13:38:26

标签: c# wcf namespaces

我们已经创建并部署了一个由各种第三方使用的WCF服务。

但是我们现在想要更改该特定项目中类的名称空间。无论如何,如果没有第三方不得不做出任何改变,他们会这样做吗?

示例:

namespace Test.Service 
{
    [ServiceContract]
    public interface MyService 
    { 
         [OperationContract]
         List<People> GetPeople();
    }

    public class MyService : IMyService 
    {
         public List<People> GetPeople() 
         {
            // Logic here
         }
    }
}

namespace Test.Service.DTO 
{
    [DataContract]
    public class Person { }
}

namespace Something.Different
{
    [ServiceContract]
    public interface MyService 
    { 
         [OperationContract]
         List<People> GetPeople();
    }

    public class MyService : IMyService 
    {
         public List<People> GetPeople() 
         {
            // Logic here
         }
    }
}

namespace Something.Different.DTO 
{
    [DataContract]
    public class Person { }
}

它实际上似乎是一个问题,主要是在WDSL中生成的DTO的名称空间。

他们正在改为

http://schemas.datacontract.org/2004/07/Something.Different.DTO 

http://schemas.datacontract.org/2004/07/Test.Service.DTO 

这似乎导致调用的结果(没有错误)不反序列化,因此List最终为空。

1 个答案:

答案 0 :(得分:1)

只要在服务内部进行所有重构,就不会出现任何问题,前提是:

  • 您只与第三方共享WSDL
  • 另一种说法:你没有为第三方提供一个包含接口的共享库和[DataContract]

此致