2009-02-06 31 views
3

我目前正在調用一個Web服務,返回一個服務定義的類,我正在解釋我的應用程序。我正在考慮要求這個Web服務的供應商給這個類添加一個屬性,這將使我的生活以及他們的其他客戶的生活變得更加容易。爲了清楚我不要求他們修改現有的行爲或屬性,所以這會擴展現有的功能。我可以在不影響現有客戶的情況下修改/擴展生產Web服務嗎?

我的問題是,如果他們將此屬性添加到類中,是否會對現有客戶的應用程序產生負面影響?

回答

3

它可能是一個問題,是:

  • 舊的客戶端從服務器接收的意外屬性時可以BARF
  • 服務器時可能沒有收到來自老客戶
  • 預期的財產BARF

它也可以工作......它只是需要測試/規劃。

更安全的選擇(如果你有複雜的部署不能都去一次)是考慮密封的API,並添加了新的「V2」終點等

2

是的,這可能意味着如果您沒有更新代理服務器,則會出現序列化錯誤。它更好地對服務接口進行版本化,即使這意味着一次支持多個版本。

+0

鑑於此供應商的過去的行爲,我可以預見他們不希望這樣做,因爲未來的維護費用。 – BenAlabaster 2009-02-06 14:39:28

+0

理論上 - 現有客戶端代理中的序列化不應該忽略其他屬性嗎? – BenAlabaster 2009-02-06 14:40:09

+0

它可以工作,但如果我有多個客戶使用界面,我不會冒這個風險 - 我如何確保他們全部測試正確等。 – Jeremy 2009-02-06 14:44:30

1

除了您要求第三方承擔發展(他們通常不會很興奮)之外。 Web服務的修改/擴展可能需要停機,這可能很重要。它也會干擾其API的向後兼容性。

如果該屬性包含大量額外的數據,這些數據將不必要地傳播到所有客戶端,那麼還有一個性能考慮因素。

相關問題