[RUN DOWN]
我需要使用嵌入在网络服务名称中的版本信息来调用Web服务 例如。 webserviceV1
当我从wsdl生成代理类时,webservice名称被用作类名。
我正在使用wsdl.exe工具。
我可以预见,新版本的web服务会导致我的代码库必须支持2组代理类。或者使用现有代理类重命名的代码。
[我的问题]
我想向提供商提出一个解决方案,允许他们在项目的早期提供多个版本的Web服务。
我被告知可能的解决方案是通过不同的端口提供Web服务。 然而,自己尝试过后,我不知道是否可以通过IIS。
是否可以在同一台机器上同时运行多个版本的Web服务?
答案 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为这个确切的主题提供了非常好的结果。