以编程方式验证Web引用是否与.NET 3.5中的端点匹配

时间:2010-08-24 04:55:44

标签: c# .net web-services .net-3.5 wsdl

我处于不幸的情况,我需要使用没有定义合同的Web服务,这是正常的SOA实践。这意味着我需要防止破坏我的Web引用的Web服务的更改。过去,新的Web服务版本中的更改(例如更改枚举值)导致难以调试失败。

我正在使用Web引用来访问Web服务。我主要使用ASMX端点。

防止重大更改的明智方法似乎是检查每个Web服务的端点,确保为服务定义的WSDL与当前端点架构匹配。我想在构建时执行此操作,也可能在应用程序启动时执行此操作。优选地,检查只会因破坏更改而失败,这意味着向端点模式添加新元素是可以的。

执行此操作的一种方法是从端点生成临时WSDL,并验证现有WSDL中的每个XML元素是否都包含在临时WSDL中。但这似乎很繁琐,我想知道是否有现有的工具,或者更好的方法。

感谢您的帮助和建议。

1 个答案:

答案 0 :(得分:0)

检查this question - 它被要求出于同样的目的。请注意,服务兼容性是一个棘手的问题,即使比较WSDL也只意味着你要防止语法上的变化。无法检测服务合同/实现中的语义更改 - 只有正确的方式才能提供服务提供版本控制,然后提供方法来查看客户端是否与版本兼容。