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