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