具有不同XSD/WSDL版本的一个WCF服务



我遇到了一个问题,找不到一个好的解决方案。也许有人能帮我。

有一个WCF服务,它是几年前创建的。现在必须做出调整。这是一个场景:

示例WCF CarService.svc。这个WCF有一个生成的类CarV1.cs,它是从带有svcutil.exe的Car WSDL(v1(创建的。因此,这个CarV1.cs包含几个类和属性。在CarV1.cs中还有一个接口CarIdentification,它是在CarService.svc.cs中派生的。到目前为止还不错。现在有了一个新版本的Car WSDL(v2(。我还使用svcutil.exe从WSDL生成了一个CarV2.cs类。现在我有两个生成的.cs(一个v1和一个v2(。除了一些调整(新的类和一些类已经重命名(,其余的在v2中是相同的,即类名和属性名称以及接口名称,都被称为CarIdentification。

我的问题是必须提供这两个版本,我不知道如何在WCF中集成这两个。由于两者具有相同的派生接口名称,而且许多类也具有相同的名称。我可以复制整个解决方案,然后在IIS中提供版本1和版本2。但我希望有一个WCF与两个版本。我也可以使用多个端点,但如果大多数名称都相同,我该怎么做呢?这可能吗?接下来的事情是,在CarService.svc.cs中有一个派生方法,它在接口中定义,并且具有来自CarV1.cs的返回值;GetDetails";我无法解决它,因为它总是引用CarV1。我已经尝试过用CarV2.GetDetails来解决这个方法,但这不起作用。

我怎样才能明智地实施整个事情?如果我不必调整访问服务的客户端应用程序,那将是一个优势。

谢谢

第一个问题是实现接口后创建的类参数可以区分。

第二个问题是,如果方法名称相同且无法区分,也可以通过在同一方法名称中添加不同的参数来实现。

相关内容

最新更新