是否可以运行同一Web服务的多个版本?

时间:2010-01-28 07:24:42

标签: web-services iis .net-1.1

[RUN DOWN]

  • 我需要使用嵌入在网络服务名称中的版本信息来调用Web服务 例如。 webserviceV1

  • 当我从wsdl生成代理类时,webservice名称被用作类名。
    我正在使用wsdl.exe工具。

  • 我可以预见,新版本的web服务会导致我的代码库必须支持2组代理类。或者使用现有代理类重命名的代码。

[我的问题]

  • 我想向提供商提出一个解决方案,允许他们在项目的早期提供多个版本的Web服务。

  • 我被告知可能的解决方案是通过不同的端口提供Web服务。 然而,自己尝试过后,我不知道是否可以通过IIS。

  • 是否可以在同一台机器上同时运行多个版本的Web服务?

1 个答案:

答案 0 :(得分:3)

当然有可能。而不是将版本号附加到webservice类,而是将它们放在单独的虚拟目录中:

http://host/services/1.0/service.asmx
http://host/services/1.3/service.asmx
http://host/services/2.0/service.asmx

然后,您必须设计版本控制方案(正确使用分支;请参阅this以获取有关的一些想法)以同时支持所有版本的服务。

对于代码,您可以尝试在公共接口(思考AbstractService)后面的服务版本之间抽象差异,然后将其用作特定于版本的实现(ServiceV1_3)的基础。

Google为这个确切的主题提供了非常好的结果。