我可以在不影响现有客户端的情况下修改/扩展生产Web服务吗?

时间:2009-02-06 14:31:03

标签: c# .net asp.net vb.net web-services

我目前正在调用一个Web服务,它返回一个服务定义的类,我在我的应用程序中解释它。我正在考虑要求这个Web服务的供应商在这个类中添加一个属性,这将使我和其他客户的生活更加轻松。要明确我不是要求他们修改现有的行为或属性,所以这会扩展现有的功能。

我的问题是,如果他们将此属性添加到课程中,是否会对现有客户的应用程序产生负面影响?

3 个答案:

答案 0 :(得分:3)

这可能是一个问题,是的:

  • 旧客户端在从服务器接收意外属性时可能会被禁止
  • 当没有从旧客户端收到预期的财产时,服务器可能会被禁止

它也可以工作......它只需要测试/计划。

更安全的选项(如果您的复杂部署不能同时进行)是考虑密封API并添加新的“v2”端点等。

答案 1 :(得分:2)

是的,如果您尚未更新代理,则可能意味着您会收到序列化错误。它更好地版本化服务接口,即使这意味着同时支持多个版本。

答案 2 :(得分:1)

除了你要求第三方承担开发的事实之外(他们通常不会兴奋)。修改/扩展Web服务可能需要停机,这可能很重要。它还会干扰其API的向后兼容性。

如果该属性包含大量额外数据,并且会不必要地传播给所有客户端,那么还有一个性能考虑因素。