2010-01-29 79 views
5

當使用IPC庫時,即使它們的API版本不同,重要的是它提供了客戶端和服務器都可以通信的可能性。正如我正在考慮爲我們的客戶端/服務器應用程序使用SOAP,我想知道SOAP/WSDL解決方案是否可以很好地處理API更改。SOAP/WSDL中的API可以輕鬆向後兼容嗎?

例如:

  • 添加參數到現有功能
  • 添加變量到現有結構即在現有的其他功能使用
  • 卸下功能
  • 從現有功能
  • 卸下變量卸下參數來自現有功能中使用的現有結構
  • Chang荷蘭國際集團在現有的功能
  • 改變的參數的順序在現有的功能
  • 在現有的結構
  • 改變複合材料零件的順序重命名現有功能
  • 重命名參數
中使用的參數的類型

:通過「結構」我的意思是一個複合型

+0

我認爲你的意思是RPC - 不是IPC? – troelskn 2010-01-29 11:32:58

+0

@troelskn:是的。對我而言,這些是同義詞。 – 2010-01-29 11:42:48

回答

3

據我所知,沒有像SOAP/WSDL標準那樣的東西。但是存在解決這些問題的工具。例如,在Glassfish中,您可以指定XSL樣式表來轉換Web服務的請求/響應。其他解決方案(如Oracle SOA套件)提供了更多精細的工具來管理Web服務的版本控制和組件集成。消息可以是自動路由到不同版本的web服務和/或轉換。你將需要檢查你的目標基礎設施提供什麼。

編輯

XML和XSD是關於架構比在面向對象的語言種類,系列化的發展更加靈活。只需簡單地將它們聲明爲可選,即可使某些東西向後兼容。

  • 添加參數對現有功能 - 如果一個參數是可選的,你會得到一個null值,如果客戶端不發送
  • 添加變量,以現有的某些現有功能使用結構 - 如果該值是可選的,你得到null如果客戶不提供它
  • 刪除功能 - 這裏沒有魔法
  • 個從現有的功能刪除參數 - 客戶端發送的參數將根據新的定義是多餘的,將被省略
  • 刪除了在現有的其他功能用於從現有結構變量 - 我不知道在這種情況下,
  • 更改現有功能中使用的參數類型 - 取決於所做的更改。對於簡單類型,序列化/反序列化仍然可以工作,例如,字符串轉換爲int。

請注意,我不是100%確定的名單。但是一些測試可以告訴你什麼可行,什麼不可行。關鍵是XML是通過電線發送的,因此它具有一定的靈活性。

+0

「這裏沒有魔力」:你說得對:D – 2010-02-04 10:58:19

+0

非常感謝你的回答!但是,我突然意識到我忘了提到另外兩種情況:重命名函數和重命名參數。你知道在這些情況下會發生什麼嗎? – 2010-02-04 11:10:49

+0

在這種情況下,XML將不兼容,所以它不起作用。我認爲您需要轉換信息,例如與XSLT。 – ewernli 2010-02-04 11:27:45

3

事實並非如此。你必須以某種方式手動管理它。通常通過在您介紹重大/突破性更改時創建新界面。

更一般地說,這是一個架構問題,而不是技術問題。一旦發佈了界面,您就需要考慮如何處理更改。