摘要:中間件是為解決分布式環(huán)境中的異構(gòu)問(wèn)題而提出的,它是當(dāng)前軟件技術(shù)發(fā)展的一個(gè)潮流,是發(fā)展最快的軟件品種之一。該文闡述了中間件技術(shù)的概念、分類(lèi)、優(yōu)勢(shì)以及作用,同時(shí)提出了目前中間件的發(fā)展趨勢(shì)。
關(guān)鍵詞:中間件;IDC;分布式環(huán)境
中圖分類(lèi)號(hào):TP31文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2009)04-0978-02
Analysis of Research on Middleware Technology
XI Li-qian,YUAN Guo-liang
(College of Information Engineering,Shanghai Maritime University,Shanghai 200135,China)
Abstract: The middleware was presented to solve the integration problem of distributed heterogeneous computer and network environment,it is a trend in software technology development and it is one of the fastest evolving soft wares.This paper discusses about the concept,classification,advantage and function.Also the developing prospect of the middleware has provided in this paper.
Key words: middleware; IDC; distributed environment
隨著信息技術(shù)的迅猛發(fā)展,各企業(yè)IT部門(mén)面臨的問(wèn)題也越來(lái)越多。諸如:不同硬件平臺(tái)、不同網(wǎng)絡(luò)環(huán)境、不同數(shù)據(jù)庫(kù)之間的互操作,多種應(yīng)用模式并存,系統(tǒng)效率過(guò)低,傳輸不可靠,數(shù)據(jù)加密、軟件開(kāi)發(fā)周期過(guò)長(zhǎng)等等。想要解決這些問(wèn)題,如果單純依靠傳統(tǒng)的系統(tǒng)軟件或工具軟件已經(jīng)不能滿(mǎn)足要求。因此人們開(kāi)始關(guān)注中間件(middleware),并且伴隨著分布式應(yīng)用的迅猛發(fā)展,中間件這一新興的軟件領(lǐng)域已悄然崛起。
眾所周知,從19世紀(jì)開(kāi)始的工業(yè)革命發(fā)展至今,關(guān)鍵的一步就是標(biāo)準(zhǔn)零部件的出現(xiàn),這使得生產(chǎn)走向了規(guī)模化和分工協(xié)作的道路。而軟件生產(chǎn)構(gòu)件化技術(shù)的發(fā)展就是受到了大工業(yè)生產(chǎn)分工協(xié)作方式的啟發(fā),這也是軟件技術(shù)跨世紀(jì)的一個(gè)發(fā)展趨勢(shì),其意義在于改變軟件的生產(chǎn)方式從個(gè)別生產(chǎn)發(fā)展到標(biāo)準(zhǔn)化分工協(xié)作,從而在根本上提高了軟件生產(chǎn)的效率和質(zhì)量,提高開(kāi)發(fā)大型軟件系統(tǒng)尤其是商用系統(tǒng)的成功率。
中間件是構(gòu)件化軟件的一種表現(xiàn)形式。中間件抽象了典型的應(yīng)用模式,應(yīng)用軟件開(kāi)發(fā)人員可以基于標(biāo)準(zhǔn)的中間件進(jìn)行二次開(kāi)發(fā),開(kāi)發(fā)方式其實(shí)質(zhì)就是軟件構(gòu)件化的具體實(shí)現(xiàn)。
1 中間件的概念[2]
在眾多關(guān)于中間件的定義中,比較普遍接受的是IDC(國(guó)際數(shù)據(jù)集團(tuán))的表述:中間件是一種獨(dú)立的系統(tǒng)軟件或服務(wù)程序,分布式應(yīng)用軟件借助這類(lèi)軟件在不同的技術(shù)之間共享資源;中間件位于客戶(hù)機(jī)/服務(wù)器的操作系統(tǒng)之上,管理計(jì)算資源和網(wǎng)絡(luò)通信。IDC對(duì)中間件的定義表明,中間件是一類(lèi)軟件,而非一種軟件;中間件是介于操作系統(tǒng)(包括底層通信協(xié)議)和各種分布式應(yīng)用程序之間的一個(gè)軟件層??偟淖饔檬墙⒎植际杰浖K之間互操作的機(jī)制,屏蔽底層分布式環(huán)境的復(fù)雜性和異構(gòu)性,為處于自己上層的應(yīng)用軟件提供運(yùn)行與開(kāi)發(fā)環(huán)境,幫助用戶(hù)靈活、高效地開(kāi)發(fā)和集成復(fù)雜的應(yīng)用軟件。在具體實(shí)現(xiàn)上,中間件是一個(gè)用應(yīng)用程序接口定義的分布式軟件管理框架,具有強(qiáng)大的通信能力和良好的可擴(kuò)展性。
2 中間件的分類(lèi)[3]
隨著計(jì)算機(jī)軟件技術(shù)的發(fā)展,中間件技術(shù)已日漸成熟,并且出現(xiàn)了不同層次,不同類(lèi)型的中間件產(chǎn)品。中間件的產(chǎn)品種類(lèi)很多,分類(lèi)的方式有很多種,據(jù)國(guó)際數(shù)據(jù)組織(IDC)的分類(lèi)標(biāo)準(zhǔn),中間件可分為6類(lèi):
1) 終端仿真與屏幕轉(zhuǎn)換中間件(TSCTM)
這類(lèi)中間件用以實(shí)現(xiàn)客戶(hù)極端的圖形用戶(hù)接口和現(xiàn)有服務(wù)器端字符捷克方式的應(yīng)用程序間的互操作。
2) 數(shù)據(jù)庫(kù)中間件(DM)
這類(lèi)中間件適用于應(yīng)用程序與數(shù)據(jù)源之間的互操作模型,客戶(hù)端使用面向數(shù)據(jù)庫(kù)的API,以提請(qǐng)直接訪(fǎng)問(wèn)和更新基于服務(wù)器的數(shù)據(jù)源,數(shù)據(jù)源可以是關(guān)系型、非關(guān)系型和對(duì)象型,是所有中間件應(yīng)用中最廣泛、技術(shù)最成熟的一種。這類(lèi)中間件大都基于SQL語(yǔ)句,采用同步通訊方式。此類(lèi)中間件使應(yīng)用開(kāi)發(fā)簡(jiǎn)單化,但如果透過(guò)廣域網(wǎng)使用,則會(huì)帶來(lái)嚴(yán)重的效率問(wèn)題,因?yàn)樵诘退倬W(wǎng)上來(lái)回交互SQL語(yǔ)句會(huì)使通訊流量過(guò)大,同時(shí)對(duì)數(shù)據(jù)壓縮、加密帶來(lái)不便。
3) 遠(yuǎn)程過(guò)程調(diào)用中間件(RPC)
RPC機(jī)制是早期開(kāi)發(fā)分布式應(yīng)用時(shí)經(jīng)常采用的一種同步式的請(qǐng)求應(yīng)答協(xié)議。通過(guò)這種協(xié)議,程序員編寫(xiě)客戶(hù)方的應(yīng)用,需要時(shí)可以調(diào)用位于遠(yuǎn)端服務(wù)器上的過(guò)程。RPC擴(kuò)展了過(guò)程語(yǔ)言中的“功能調(diào)用/結(jié)果返回”的機(jī)制,使得它可以適用于一個(gè)遠(yuǎn)程環(huán)境。由于RPC機(jī)制是同步方式,因而在工作的時(shí)候,要求客戶(hù)方和服務(wù)方均能正確工作才能很好地運(yùn)行,有一方不能工作將導(dǎo)致RPC失敗。在網(wǎng)絡(luò)故障、機(jī)器故障存在的情況下,這一要求是很難保證的。另外,由于大多數(shù)RPC機(jī)制很難建立點(diǎn)到點(diǎn)的關(guān)系,因而也很難用在面向?qū)ο蟮木幊坍?dāng)中。
4) 消息中間件(MOM)
越來(lái)越多的分布式應(yīng)用采用消息中間件來(lái)構(gòu)建,通過(guò)消息中間件把應(yīng)用擴(kuò)展到不同的操作系統(tǒng)和不同的網(wǎng)絡(luò)環(huán)境?;谙⒌臋C(jī)制更多地適用于事件驅(qū)動(dòng)的應(yīng)用,當(dāng)一個(gè)事件發(fā)生時(shí),消息中間件通知服務(wù)方應(yīng)該進(jìn)行何種操作。其核心安裝在需要進(jìn)行消息傳遞的系統(tǒng)上,在它們之間建立邏輯通道,由消息中間件實(shí)現(xiàn)消息發(fā)送。消息中間件可以支持同步方式和異步方式,實(shí)際上是一種點(diǎn)到點(diǎn)的機(jī)制,因而可以很好的適用于面向?qū)ο蟮木幊谭绞健?/p>
5) 對(duì)象中間件(OM)
傳統(tǒng)的對(duì)象技術(shù)通過(guò)封裝、繼承及多態(tài)性,提供了良好的代碼重用功能。但這些對(duì)象只存在于一個(gè)程序中,外界并不知道它們的存在,也無(wú)法訪(fǎng)問(wèn)它們。對(duì)象中間件提供了一個(gè)標(biāo)準(zhǔn)的構(gòu)件框架,使不同廠(chǎng)家的軟件通過(guò)不同的地址空間、網(wǎng)絡(luò)和操作系統(tǒng)互相交互訪(fǎng)問(wèn)。而該構(gòu)件的具體實(shí)現(xiàn)、位置及所依附的操作系統(tǒng)對(duì)客戶(hù)來(lái)說(shuō)都是透明的。對(duì)象中間件技術(shù)的目標(biāo)是為軟件用戶(hù)及開(kāi)發(fā)者提供一種應(yīng)用級(jí)的即插即用的互操作性軟件。
6) 基于對(duì)象請(qǐng)求代理的中間件(ORBM)
對(duì)象請(qǐng)求代理是近年來(lái)才發(fā)展起來(lái)的一項(xiàng)新技術(shù),它可被看作和編程語(yǔ)言無(wú)關(guān)的面向?qū)ο蟮腞PC應(yīng)用,被視為從面向?qū)ο筮^(guò)渡到分布式計(jì)算的強(qiáng)大推動(dòng)力量。從管理和封裝的模式上看,對(duì)象請(qǐng)求代理和遠(yuǎn)過(guò)程調(diào)用有些類(lèi)似,不過(guò)對(duì)象請(qǐng)求代理可以包含比遠(yuǎn)過(guò)程調(diào)用和消息中間件更復(fù)雜的信息,并且可以適用于非常結(jié)構(gòu)化的或者非常關(guān)系型的數(shù)據(jù)。
3 中間件的優(yōu)勢(shì)
中間件是一種位于具體應(yīng)用和底層系統(tǒng)(包括操作系統(tǒng)、網(wǎng)絡(luò)協(xié)議棧、硬件等)之間的軟件。中間件在這個(gè)軟件體系中所扮演的角色是:連接應(yīng)用程序和底層軟硬件基礎(chǔ)設(shè)施,協(xié)調(diào)應(yīng)用各部分的連接和互操作;使系統(tǒng)開(kāi)發(fā)者能夠?qū)崿F(xiàn)并簡(jiǎn)化基于各種不同技術(shù)的服務(wù)組件之間的集成。在應(yīng)用系統(tǒng)開(kāi)發(fā)中采用中間件技術(shù)有以下優(yōu)點(diǎn):
1) 能對(duì)軟件開(kāi)發(fā)者屏蔽底層的、復(fù)雜繁瑣的、易出錯(cuò)的平臺(tái)細(xì)節(jié),減少應(yīng)用開(kāi)發(fā)的復(fù)雜性。
2) 能提供大批可復(fù)用的、構(gòu)件化的服務(wù),從而加快應(yīng)用開(kāi)發(fā)周期,降低開(kāi)發(fā)成本。
3) 能為應(yīng)用提供一個(gè)面向網(wǎng)絡(luò)的高層抽象的集合,這種一致的高層抽象能簡(jiǎn)化分布式系統(tǒng)的開(kāi)發(fā)。
4) 協(xié)調(diào)應(yīng)用系統(tǒng)各部分之間的互聯(lián)、互操作,使得從小到組件模塊,大到企業(yè)應(yīng)用實(shí)體所提供的服務(wù)都能夠相互集成,并使這種集成得到簡(jiǎn)化。
總之,中間件技術(shù)為降低分布式應(yīng)用系統(tǒng)的開(kāi)發(fā)、部署、運(yùn)行和維護(hù)的復(fù)雜性提供了有力的工具。但是現(xiàn)在,使用中間件集成復(fù)雜系統(tǒng)的要求還不能完全得到滿(mǎn)足,相關(guān)的技術(shù)還不夠成熟。因?yàn)椋瑥闹虚g件上層的分布式應(yīng)用需求到下層的基礎(chǔ)架構(gòu)的不斷發(fā)展都給中間件技術(shù)帶來(lái)了新的問(wèn)題和潛在的解決方案;而且,以網(wǎng)絡(luò)為中心的系統(tǒng)開(kāi)發(fā)范式促使多層次中間件的形成,每個(gè)層次的中間件都包含了互相交織的技術(shù),這給基于中間件的系統(tǒng)集成帶來(lái)了新的復(fù)雜性。
4 中間件的作用[1]
過(guò)去的十多年是中間件技術(shù)飛速發(fā)展的時(shí)期,中間件技術(shù)已經(jīng)被廣泛應(yīng)用到IT行業(yè)的各個(gè)技術(shù)領(lǐng)域,它極大的緩解了分布式應(yīng)用開(kāi)發(fā)、運(yùn)行、管理中的一些固有的復(fù)雜問(wèn)題。中間件技術(shù)已經(jīng)成為分布式軟件系統(tǒng)不可或缺的關(guān)鍵基礎(chǔ)設(shè)施,它同操作系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)共同構(gòu)成了基礎(chǔ)軟件體系的三大支柱。中間件的主旨就是要支持網(wǎng)絡(luò)應(yīng)用的有效開(kāi)發(fā)、部署、運(yùn)行和管理。
1) 支持分布軟件(資源)的交互與訪(fǎng)問(wèn)
分布式軟件必須包含了分布式操作,需要與其他分布軟件/服務(wù)通信交互,需要訪(fǎng)問(wèn)分布資源?,F(xiàn)代操作系統(tǒng)不能解決這些互連、互操作問(wèn)題,而中間件系統(tǒng)就是要提供高層次的抽象和封裝,解決分布軟件的通信交互,分布資源的訪(fǎng)問(wèn)問(wèn)題。
2) 屏蔽異構(gòu)
網(wǎng)絡(luò)分布應(yīng)用面臨多種多樣的異構(gòu)問(wèn)題,要實(shí)現(xiàn)分布應(yīng)用的正確交互,必須有相應(yīng)的機(jī)制解決異構(gòu)問(wèn)題。而中間件系統(tǒng)的主要作用就是提供不同層次和方面的抽象機(jī)制,屏蔽操作系統(tǒng)、編程語(yǔ)言、通信協(xié)議、交互模式和數(shù)據(jù)編碼的異構(gòu),提高網(wǎng)絡(luò)分布應(yīng)用的互操作性。
3) 提供公共服務(wù)
公共服務(wù)是對(duì)分布式應(yīng)用共性功能的抽取,其好處在于一方面共性功能的抽取由中間件統(tǒng)一提供,減少系統(tǒng)開(kāi)發(fā)的工作量,另一方面使得應(yīng)用開(kāi)發(fā)者更關(guān)注業(yè)務(wù)功能,有助于提高軟件質(zhì)量。
4) 運(yùn)行管理
中間件就像是交互樞紐、生態(tài)環(huán)境,它支持網(wǎng)絡(luò)分布應(yīng)用的連接交互,支撐網(wǎng)絡(luò)分布應(yīng)用的運(yùn)行。在分布應(yīng)用的運(yùn)行期間,中間件需要對(duì)其通信能力進(jìn)行調(diào)度,對(duì)其計(jì)算資源進(jìn)行管理,對(duì)負(fù)載進(jìn)行均衡,對(duì)計(jì)算進(jìn)程/線(xiàn)程進(jìn)行調(diào)度等等。中間件不僅提供這些管理能力,重要的是這些管理活動(dòng)大多是由中間件系統(tǒng)自動(dòng)進(jìn)行,這樣就降低了系統(tǒng)管理的復(fù)雜度,提高了系統(tǒng)的可靠性。
5 總結(jié)
中間件是軟件技術(shù)發(fā)展的一種潮流,正在成為軟件行業(yè)新技術(shù)與經(jīng)濟(jì)的增長(zhǎng)點(diǎn)。
根據(jù)有關(guān)組織的預(yù)測(cè),消息中間件是目前中間件技術(shù)的發(fā)展熱點(diǎn),在目前市場(chǎng)上占據(jù)主導(dǎo)地位,而且發(fā)展勢(shì)頭迅猛。消息中間件以其獨(dú)特的優(yōu)勢(shì)為各種分布式應(yīng)用的開(kāi)發(fā)注入了強(qiáng)大的動(dòng)力,極大地推動(dòng)了應(yīng)用系統(tǒng)集成的發(fā)展。對(duì)象中間件技術(shù)也發(fā)展迅速,各大軟硬件廠(chǎng)商如IBM、HP、DEC、ATT、ICL、Microsoft等都在積極參與有關(guān)標(biāo)準(zhǔn)的制度和產(chǎn)品的開(kāi)發(fā)工作。中間件的另一個(gè)發(fā)展動(dòng)向是向Internet的延伸,由于Internet自身的技術(shù)特點(diǎn),在構(gòu)造許多大企業(yè)級(jí)應(yīng)用時(shí)仍顯不足,因而仍然存在供中間件發(fā)展的中間地帶。
總體來(lái)說(shuō),中間件已滲透到信息社會(huì)的方方面面,網(wǎng)絡(luò)計(jì)算環(huán)境下“中間件已無(wú)處不在”。
參考文獻(xiàn):
[1] 魏峻.軟件中間件技術(shù)現(xiàn)狀與展望[J].新技術(shù)新工藝,2007(7):5-13.
[2] 樂(lè)嘉錦,郭瑞強(qiáng).中間件的由來(lái)、現(xiàn)狀及我們的機(jī)遇[J].計(jì)算機(jī)應(yīng)用與軟件,2001:1-4.
[3] 張宏,佟玉軍.中間件分類(lèi)及標(biāo)準(zhǔn)[J].標(biāo)準(zhǔn)傳遞,2005:20-21.