引言
軟件系統(tǒng)的復(fù)雜性不斷增長(zhǎng)、軟件人員的頻繁流動(dòng)和軟件行業(yè)的激烈競(jìng)爭(zhēng)迫使軟件企業(yè)提高軟件質(zhì)量、積累和固化知識(shí)財(cái)富,并盡可能地縮短軟件產(chǎn)品的開(kāi)發(fā)周期。于是集軟件復(fù)用、分布式對(duì)象計(jì)算、企業(yè)級(jí)應(yīng)用開(kāi)發(fā)等技術(shù)為一體的"基于中間件的軟件開(kāi)發(fā)"(cbsd,component based sortware development)應(yīng)運(yùn)而生,這種技術(shù)以軟件架構(gòu)為組裝藍(lán)圖,以可復(fù)用軟件構(gòu)件為組裝模塊,支持組裝式軟件的復(fù)用,大大提高了軟件生產(chǎn)效率和軟件質(zhì)量。為此國(guó)風(fēng)外對(duì)于這一技術(shù)的研究正在不斷深入,同時(shí)大型的軟件公司(例如sun,microsoft)及軟件組織機(jī)構(gòu)(omg)都推出了支持中間件技術(shù)的軟件平臺(tái)。面對(duì)高深的中間件技術(shù)和繁多的軟件平臺(tái),很多人感到很茫然和無(wú)從下手,本文簡(jiǎn)單介紹了中間件技術(shù)的發(fā)展和特點(diǎn),重點(diǎn)闡述和比較了三大主流中間件技術(shù)平臺(tái),使讀者對(duì)中間件技術(shù)有個(gè)全面的了解。
1 中間件技術(shù)的概念及發(fā)展
顧名思義,中間件是處于應(yīng)用軟件和系統(tǒng)軟件之間的一類(lèi)軟件,是獨(dú)立于硬件或數(shù)據(jù)庫(kù)廠商(處于其產(chǎn)品的中間,實(shí)現(xiàn)其互連)的一類(lèi)軟件,是客戶方與服務(wù)方之間的連接件,是需要進(jìn)行二次開(kāi)發(fā)的中間產(chǎn)品。
應(yīng)該說(shuō),中間件技術(shù)是伴隨網(wǎng)絡(luò)而發(fā)展起來(lái)的一種面向?qū)ο蟮募夹g(shù)。以前的計(jì)算機(jī)系統(tǒng)多是單機(jī)系統(tǒng),多個(gè)用戶是通過(guò)聯(lián)機(jī)終端來(lái)訪問(wèn)的,沒(méi)有網(wǎng)絡(luò)的概念。網(wǎng)絡(luò)出現(xiàn)后,產(chǎn)生了client/server的計(jì)算服務(wù)模式,多個(gè)客戶端可以共享數(shù)據(jù)庫(kù)服務(wù)器和打印服務(wù)器等等。隨著網(wǎng)絡(luò)的更進(jìn)一步發(fā)展,許多軟件需要在不同廠家的網(wǎng)絡(luò)產(chǎn)品、硬件平臺(tái)、網(wǎng)絡(luò)協(xié)議異構(gòu)環(huán)境下運(yùn)行,應(yīng)用的規(guī)模也從局域網(wǎng)發(fā)展到廣域網(wǎng)。在這種情況下,client/server模式的局限性也就暴露出來(lái)了,于是中間件應(yīng)運(yùn)而生。中間件是位于操作系統(tǒng)和應(yīng)用軟件之間的通用服務(wù),它的主要作用是用來(lái)屏蔽網(wǎng)絡(luò)硬件平臺(tái)的差異性和操作系統(tǒng)與網(wǎng)絡(luò)協(xié)議的異構(gòu)性,使應(yīng)用軟件能夠比較平滑地運(yùn)行于不同平臺(tái)上。同時(shí)中間件在負(fù)載平衡、連接管理和調(diào)度方面起了很大的作用,使企業(yè)級(jí)應(yīng)用的性能得到大幅提升,滿足了關(guān)鍵業(yè)務(wù)的需求。
2 當(dāng)前支持服務(wù)器端中間件技術(shù)的平臺(tái)
考察當(dāng)前主流的分布計(jì)算技術(shù)平臺(tái),主要有omg的corba、sun的j2ee和microsoft dna 2000。它們都是支持服務(wù)器端中間件技術(shù)開(kāi)發(fā)的平臺(tái),但都有其各自的特點(diǎn),將分別闡述如下。
2.1 omg的corba
corba分布計(jì)算技術(shù)是omg組織基于眾多開(kāi)放系統(tǒng)平臺(tái)廠商提交的分布對(duì)象互操作內(nèi)容的基礎(chǔ)上制定的公共對(duì)象請(qǐng)求代理體系規(guī)范。
corba分布計(jì)算技術(shù),是由絕大多數(shù)分布計(jì)算平臺(tái)廠商所支持和遵循的系統(tǒng)規(guī)范技術(shù),具有模型完整、先進(jìn),獨(dú)立于系統(tǒng)平臺(tái)和開(kāi)發(fā)語(yǔ)言,被支持程度廣泛的特點(diǎn),已逐漸成為分布計(jì)算技術(shù)的標(biāo)準(zhǔn)。cobra標(biāo)準(zhǔn)主要分為3個(gè)層次:對(duì)象請(qǐng)求代理、公共對(duì)象服務(wù)和公共設(shè)施。最底層是對(duì)象請(qǐng)求代理orb,規(guī)定了分布對(duì)象的定義(接口)和語(yǔ)言映射,實(shí)現(xiàn)對(duì)象間的通訊和互操作,是分布對(duì)象系統(tǒng)中的"軟總線";在orb之上定義了很多公共服務(wù),可以提供諸如并發(fā)服務(wù)、名字服務(wù)、事務(wù)(交易)服務(wù)、安全服務(wù)等各種各樣的服務(wù);最上層的公共設(shè)施則定義了組件框架,提供可直接為業(yè)務(wù)對(duì)象使用的服務(wù),規(guī)定業(yè)務(wù)對(duì)象有效協(xié)作所需的協(xié)定規(guī)則。目前,corba兼容的分布計(jì)算產(chǎn)品層出不窮,其中有中間件廠商的orb產(chǎn)品,如beam3,ibm component broker,有分布對(duì)象廠商推出的產(chǎn)品,如ionaobix和oocobacus等.
corba規(guī)范的近期發(fā)展,增加了面向internet的特性,服務(wù)質(zhì)量控制和corba構(gòu)件模型(corba component model)。
internet集成特性包括了針對(duì)iiop傳輸?shù)姆阑饓?firewall)和可內(nèi)部操作的定義了url命名格式的命名服務(wù)(naming service)。
服務(wù)質(zhì)量控制包括能夠具有質(zhì)量控制的異步消息服務(wù),一組針對(duì)嵌入系統(tǒng)的corba定義,一組關(guān)于實(shí)時(shí)corba與容錯(cuò)corba的請(qǐng)求方案。
corba ccm(corba component model)技術(shù),是在支持poa的corba規(guī)范(版本2.3以后)基礎(chǔ)上,結(jié)合ejb當(dāng)前規(guī)范的基礎(chǔ)上發(fā)展起來(lái)的。corba構(gòu)件模型,是omg組織制定的一個(gè)用于開(kāi)發(fā)和配置分布式應(yīng)用的服務(wù)器端中間件模型規(guī)范,它主要包括如下三項(xiàng)內(nèi)容:
a.抽象構(gòu)件模型,用以描述服務(wù)器端構(gòu)件結(jié)構(gòu)及構(gòu)件間互操作的結(jié)構(gòu);
b.構(gòu)件容器結(jié)構(gòu),用以提供通用的構(gòu)件運(yùn)行和管理環(huán)境,并支持對(duì)安全、事務(wù)、持久狀態(tài)等系統(tǒng)服務(wù)的集成;
c.構(gòu)件的配置和打包規(guī)范,ccm使用打包技術(shù)來(lái)管理構(gòu)件的二進(jìn)制、多語(yǔ)言版本的可執(zhí)行代碼和配置信息,并制定了構(gòu)件包的具體內(nèi)容和基于xml的文檔內(nèi)容標(biāo)準(zhǔn)。
總之,corba的特點(diǎn)是大而全,互操作性和開(kāi)放性非常好。corba的缺點(diǎn)是龐大而復(fù)雜,并且技術(shù)和標(biāo)準(zhǔn)的更新相對(duì)較慢,cobra規(guī)范從1.0升級(jí)到2.0所花的時(shí)間非常短,而再往上的版本的發(fā)布就相對(duì)十分緩慢了。在具體的應(yīng)用中使用不是很多。
2.2 sun的j2ee
為了推動(dòng)基于java的服務(wù)器端應(yīng)用開(kāi)發(fā),sun于是在1999年底推出了java2技術(shù)及相關(guān)的j2ee規(guī)范,j2ee的目標(biāo)是:提供平臺(tái)無(wú)關(guān)的、可移植的、支持并發(fā)訪問(wèn)和安全的,完全基于java的開(kāi)發(fā)服務(wù)器端中間件的標(biāo)準(zhǔn)。
在j2ee中,sun給出了完整的基于java語(yǔ)言開(kāi)發(fā)面向企業(yè)分布應(yīng)用規(guī)范,其中,在分布式互操作協(xié)議上,j2ee同時(shí)支持rmi和iiop,而在服務(wù)器端分布式應(yīng)用的構(gòu)造形式,則包括了java servlet、jsp(java server page)、ejb等多種形式,以支持不同的業(yè)務(wù)需求,而且java應(yīng)用程序具有"write once,run anywhere"的特性,使得j2ee技術(shù)在發(fā)布計(jì)算領(lǐng)域得到了快速發(fā)展。
j2ee簡(jiǎn)化了構(gòu)件可伸縮的、其于構(gòu)件服務(wù)器端應(yīng)用的復(fù)雜度,雖然dna 2000也一樣,但最大的區(qū)別是dna 2000是一個(gè)產(chǎn)品,j2ee是一個(gè)規(guī)范,不同的廠家可以實(shí)現(xiàn)自己的符合j2ee規(guī)范的產(chǎn)品,j2ee規(guī)范,是眾多廠家參與制定的,它不為sun所獨(dú)有,而且其支持跨平臺(tái)的開(kāi)發(fā),目前許多大的分布計(jì)算平臺(tái)廠商都公開(kāi)支持與j2ee兼容技術(shù)。
ejb是sun推出的基于java的服務(wù)器端構(gòu)件規(guī)范j2ee的一部分,自從j2ee推出之后,得到了廣泛的發(fā)展,已經(jīng)成為應(yīng)用服務(wù)器端的標(biāo)準(zhǔn)技術(shù)。sunejb技術(shù)是在java bean本地構(gòu)件基礎(chǔ)上,發(fā)展的面向服務(wù)器端分布應(yīng)用構(gòu)件技術(shù)。它基于java語(yǔ)言,提供了基于java二進(jìn)制字節(jié)代碼的重用方式。ejb給出了系統(tǒng)的服務(wù)器端分布構(gòu)件規(guī)范,這包括了構(gòu)件、構(gòu)件容器的接口規(guī)范以及構(gòu)件打包、構(gòu)件配置等的標(biāo)準(zhǔn)規(guī)范內(nèi)容。ejb技術(shù)的推出,使得用java基于構(gòu)件方法開(kāi)發(fā)服務(wù)器端分布式應(yīng)用成為可能。從企業(yè)應(yīng)用多層結(jié)構(gòu)的角度,ejb是業(yè)務(wù)邏輯層的中間件技術(shù),與javabeans不同,它提供了事務(wù)處理的能力,自從三層結(jié)構(gòu)提出以后,中間層,也就是業(yè)務(wù)邏輯層,是處理事務(wù)的核心,從數(shù)據(jù)存儲(chǔ)層分離,取代了存儲(chǔ)層的大部分地位。從分布式計(jì)算的角度,ejb像corba一樣,提供了分布式技術(shù)的基礎(chǔ)。提供了對(duì)象之間的通訊手段。
從internet技術(shù)應(yīng)用的角度,ejb和servlet,jsp一起成為新一代應(yīng)用服務(wù)器的技術(shù)標(biāo)準(zhǔn),ejb中的bean可以分為會(huì)話bean和實(shí)體bean,前者維護(hù)會(huì)話,后者處理事務(wù),現(xiàn)在servlet負(fù)責(zé)與客戶端通信,訪問(wèn)ejb,并把結(jié)果通過(guò)jsp產(chǎn)生頁(yè)面?zhèn)骰乜蛻舳恕?br>
j2ee的優(yōu)點(diǎn)是,服務(wù)器市場(chǎng)的主流還是大型機(jī)和unix平臺(tái),這意味著以java開(kāi)發(fā)構(gòu)件,能夠做到"write once,run anywhere",開(kāi)發(fā)的應(yīng)用可以配置到包括windows平臺(tái)在內(nèi)的任何服務(wù)器端環(huán)境中去。
2.3 microsoft dna 2000
microsoft dna 2000(distributed internet applications)是microsoft在推出windows2000系列操作系統(tǒng)平臺(tái)基礎(chǔ)上,在擴(kuò)展了分布計(jì)算模型,以及改造back office系列服務(wù)器端分布計(jì)算產(chǎn)品后發(fā)布的新的分布計(jì)算體系結(jié)構(gòu)和規(guī)范。
在服務(wù)器端,dna 2000提供了asp、com、cluster等的應(yīng)用支持。目前,dna2000在技術(shù)結(jié)構(gòu)上有著巨大的優(yōu)越性。一方面,由于microsoft是操作系統(tǒng)平臺(tái)廠商,因此dna 2000技術(shù)得到了底層操作系統(tǒng)平臺(tái)的強(qiáng)大支持;另一方面,由于microsoft的操作系統(tǒng)平臺(tái)應(yīng)用廣泛,支持該系統(tǒng)平臺(tái)的應(yīng)用開(kāi)發(fā)廠商數(shù)目眾多,因此在實(shí)際應(yīng)用中,dna 2000得到了眾多應(yīng)用開(kāi)發(fā)商的采用和支持。
dna 2000融合了當(dāng)今最先進(jìn)的分布計(jì)算理論和思想,如事務(wù)處理、可伸縮性、異步消息隊(duì)列、集群等內(nèi)容。dna使得開(kāi)發(fā)可以基于microsoft平臺(tái)的服務(wù)器構(gòu)件應(yīng)用,其中,如數(shù)據(jù)庫(kù)事務(wù)服務(wù)、異步通訊服務(wù)和安全服務(wù)等,都由底層的分布對(duì)象系統(tǒng)提供。
以microsoft為首的dcom/com/com+陣營(yíng),從dde,ole到activex等,提供了中間件開(kāi)發(fā)的基礎(chǔ),如vc,vb,delphi等都支持dcom,包括ole db在內(nèi)新的數(shù)據(jù)庫(kù)存取技術(shù),隨著windows2000的發(fā)布,microsoft的dcom/com/com+技術(shù),在dna2000分布計(jì)算結(jié)構(gòu)基礎(chǔ)上,展現(xiàn)了一個(gè)全新的分布構(gòu)件應(yīng)用模型。首先,dcom/com/com+的構(gòu)件仍然采用普通的com(component object model)模型。com最初作為microsoft桌面系統(tǒng)的構(gòu)件技術(shù),主要為本地的ole應(yīng)用服務(wù),但是隨著microsoft服務(wù)器操作系統(tǒng)nt和dcom的發(fā)布,com通過(guò)底層的遠(yuǎn)程支持使得構(gòu)件技術(shù)延伸到了分布應(yīng)用領(lǐng)域。dcom/com/com+更將其擴(kuò)充為面向服務(wù)器端分布應(yīng)用的業(yè)務(wù)邏輯中間件。通過(guò)com+的相關(guān)服務(wù)設(shè)施,如負(fù)載均衡、內(nèi)存數(shù)據(jù)庫(kù)、對(duì)象池、構(gòu)件管理與配置等等,dcom/com/com+將com、dcom、mts的功能有機(jī)地統(tǒng)一在一起,形成了一個(gè)概念、功能強(qiáng)的構(gòu)件應(yīng)用體系結(jié)構(gòu)。而且,dna2000是單一廠家提供的分布對(duì)象構(gòu)件模型,開(kāi)發(fā)者使用的是同一廠家提供的系列開(kāi)發(fā)工具,這比組合多家開(kāi)發(fā)工具更有吸引力。
但是它的不足是依賴(lài)于microsoft的操作系統(tǒng)平臺(tái),因而在其它開(kāi)發(fā)系統(tǒng)平臺(tái)(如unix、linux)上不能發(fā)揮作用。
3 相關(guān)性比較分析
目前,針對(duì)上述的各種分布計(jì)算平臺(tái)技術(shù),都出現(xiàn)了相似且具有可比性的分布式構(gòu)件,即corba ccm(corba component model)技術(shù)、sun的ejb(enterprise javabean)技術(shù)和dna 2000中的com/dcom/com+技術(shù)。
對(duì)于以上三個(gè)分布計(jì)算平臺(tái),本文采用業(yè)界常用的做法從以下三個(gè)方面進(jìn)行分析:
集成性:集成性主要反映在基礎(chǔ)平臺(tái)對(duì)應(yīng)用程序互操作能力的支持上。它要求分布在不同機(jī)器平臺(tái)和操作系統(tǒng)上、采用不同的語(yǔ)言或者開(kāi)發(fā)工具生成的各類(lèi)商業(yè)應(yīng)用必須能集成在一起,構(gòu)成一個(gè)統(tǒng)一的企業(yè)計(jì)算框架。這一集成框架必須建立在網(wǎng)絡(luò)的基礎(chǔ)之上,并且具備對(duì)于遺留應(yīng)用的集成能力;
可用性:要求所采用的軟件構(gòu)件技術(shù)必須是成熟的技術(shù),相應(yīng)的產(chǎn)品也必須是成熟的產(chǎn)品,在至關(guān)重要的企業(yè)應(yīng)用中能夠穩(wěn)定、安全、可靠地運(yùn)行。另外,由于數(shù)據(jù)庫(kù)在企業(yè)計(jì)算中扮演著重要角色,軟件構(gòu)件技術(shù)應(yīng)能與數(shù)據(jù)庫(kù)技術(shù)緊密集成;
可擴(kuò)展性:集成框架必須是可擴(kuò)展的,能夠協(xié)調(diào)不同的設(shè)計(jì)模式和實(shí)現(xiàn)策略,可以根據(jù)企業(yè)計(jì)算的需求進(jìn)行裁剪,并能迅速反應(yīng)市場(chǎng)的變化和技術(shù)的發(fā)展趨勢(shì)。通過(guò)保證當(dāng)前應(yīng)用的可重用性,最大程度地保護(hù)企業(yè)的投資。
雖然這三種平臺(tái)因?yàn)槠湫纬傻臍v史背景和商業(yè)背景有所不同,各自有自己的側(cè)重和特點(diǎn),其實(shí)在它們之間也有很大的相通性和互補(bǔ)性。例如,ejb提供了一個(gè)概念清晰、結(jié)構(gòu)緊湊的分布計(jì)算模型和構(gòu)件互操作的方法,為構(gòu)件應(yīng)用開(kāi)發(fā)提供了相當(dāng)?shù)撵`活性。但由于它還處于發(fā)展初期,因此其形態(tài)很難界定。corba ccm是一種集成技術(shù),而不是編程技術(shù)。它提供了對(duì)各種功能模塊進(jìn)行構(gòu)件化處理并將它們捆綁在一起的粘合劑。ejb和corba在很大的程度是可以看作為互補(bǔ)的。這個(gè)適應(yīng)web應(yīng)用的發(fā)展要求,許多廠商多非常重視促進(jìn)ejb和corba技術(shù)的結(jié)合,將來(lái)rmi可能建立在iiop之上。corba不只是對(duì)象請(qǐng)求代理orb,也是一個(gè)非常完整的分布式對(duì)象平臺(tái)。corba可以擴(kuò)展ejb在網(wǎng)絡(luò)、語(yǔ)言、組件邊界、操作系統(tǒng)中的各種應(yīng)用。目前許多平臺(tái)都能實(shí)現(xiàn)ejb構(gòu)件和corba構(gòu)件的互操作。同ejb和corba之間相互之間方便的互操作性相比,docm和corba之間的互操作性要相對(duì)復(fù)雜些,雖然dcom和corba極其類(lèi)似。docm的接口指針大體相當(dāng)于corba的對(duì)象引用。為了實(shí)現(xiàn)corba和dcom的互操作,omg在corba3。0的規(guī)范中,加入了有關(guān)的corba和dcom互操作的實(shí)現(xiàn)規(guī)范,并提供了接口方法。因?yàn)樯虡I(yè)利益的原因,在ejb和dcom之間基本沒(méi)有提供互操作方法。
該文章在 2010/5/12 23:45:49 編輯過(guò)