關于遠程調用(XFire/HttpInvoker/Hessian etc.)及遠程服務管理的一些隨想
摘要: 在現代J2EE企業應用系統中,存在著Hessian、HttpInvoker、XFire、Axis等多種形式的遠程調用技術。盡管有Spring等框架對這些技術進行了封裝,降低了使用的復雜度,但對普通程序員而言仍是復雜的——至少需要要掌握這些技術的基礎知識。
無論使用那種技術,其基本原理都是一樣的:服務端生成骨架,對外暴露服務;客戶端生成服務代理,訪問調用服務。通常情況下,生成服務代理的代價比較高昂,這也是我們第一次訪問遠程服務速度比較慢的原因,為每個請求生成新的服務代理恐怕不是我們所期望的。更何況,如果采用這種方式,就要在代碼里針對各種不同的技術(如XFire、HttpInvoker)編寫不同的服務生成和調用的處理代碼。不僅麻煩,而且容易出錯。我想,沒有人愿意去直接操作各種框架技術的底層代碼,這并不是一個好注意!
作為一種替代方案,我們設計了一個“服務池”的功能,或者說“服務工廠”更貼切一點。先看下面這張類圖:
閱讀全文