冰釋前嫌 論新生事物SOAP的誤解如何消融

2021-04-01 07:10:58 字數 1773 閱讀 5308

作為新生事物,soap 不得不做一些解釋以獲得認可。soap 將成為包括 corba、 rmi 和 d*** 在內的其它伺服器到伺服器通訊技術的鄰居。圍繞現有的技術陣營已經形成。現在各種誤解、流言和譏諷橫飛。在這篇文章中將細述並解釋了很多圍繞 soap 的誤解。

作為乙個新來者,soap 被拿來與它的已確立的和成熟的前輩作比較,包括 corba、d***、rmi 及其它技術。soap 採取了乙個輕量級的「讓我們與一切互操作」方法。很多圍繞 soap 的誤解需要向大家公布事實。正如 ralph waldo emerson 曾經說過的要成為乙個真正偉大的人要先被誤解一樣。這裡是一些比較常見的圍繞 soap 的誤解:

誤解:soap 存在是因為 corba 對防火牆不友好,corba 難與防火牆一起工作的名聲是不公平的。 soap 和 corba 包含把通過網際網路連線傳送到遠端服務的資料組織在一起的機制。雖然 corba 1.0 成功地定義了一種語言無關的通訊方式,但它卻把實現「物件請求**」(object request broker,orb)的協議的任務留給了**商。因為網際網路在它剛出來時是相當新的東西。大部分 corba 1.0 orb 不能互操作。corba 2.0 引入了「orb 間協議」(inter-orb protocol,(iiop)),它和其它網路協議一起,執行在 tcp/ip 之上。

防火牆注意到這個新協議,並且有的時候就阻止 orb 通訊。iiop 很快給 corba 帶來乙個不應有的難與防火牆一起工作的壞名聲。

然而,soap 通過建立 http 連線隧道來部署自己的協議:soap 要求把請求引數組織在 xml 文件中,該文件然後被放到 http post 請求體中傳送到執行在 web 主機基於 soap 的 web 服務。同樣,現在正在做很多擴充套件 soap 的工作,使它能使用其它的傳輸協議,例如 https 和 **tp。

soap 插入現有的 web 環境;corba 擴充套件自己以包含 web。舊系統 — 包括「開放式軟體**會」(open software foundation,(osf))的「分布式計算環境」(distributed ***puting environment,(dce))、聯機事務處理(online transaction processing,(oltp))軟體,例如 ibm cics 和其它擁有自己的協議和語言相關的系統 — 被期望能實現支援 soap 的 http 型別的無狀態協議。另一方面,iiop 被設計來使這些舊系統能成為跨網路連線 orb 的通訊協議。

自從 corba 2.0 在 1995 年問世以來,啟動了很多 iiop/http 閘道器來啟用 iiop 在 http 上建立隧道。

誤解:soap 能更好地伸縮,因為 soap 是無狀態的

soap 也將最終變成有狀態的 soap 把請求引數組織到 xml 文件並使用 http 來把請求傳送到 web 服務。很多人認為 soap 對 http 的依賴使它無狀態。並且 soap 1.2 確實缺少對會話機制的定義。然而,soap 將不可避免地擁有會話機制以啟用事務請求。設想乙個資料庫應用程式,那裡由幾個 soap 請求構成乙個事務,並且 soap 請求組可能被立即回滾或者提交。畢竟,連想象的無狀態 http 協議都有啟用有狀態事務的 cookie。

corba 以乙個使用無狀態的 orb 請求的簡單機制為特色。選擇無狀態還是有狀態是系統設計者在 corba 環境中要作的決定。很多系統當它們試圖實現複雜的無狀態系統時失去了可伸縮性。

saxbuilder responsesaxtree = new saxbuilder();

document doc = responsesaxtree.build( response );

root theroot = doc.getroot();