摘 要:隨著IT產(chǎn)業(yè)技術(shù)的發(fā)展,中間件技術(shù)應(yīng)運(yùn)而生。本文從中間件的概念、分類等方面對(duì)中間件做了全面的論述,分析了構(gòu)件和中間件的關(guān)系,并主要介紹了J2EE中間件平臺(tái)。
關(guān)鍵詞:中間件;構(gòu)件;J2EE
中圖分類號(hào):TP311.52
隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展和IT市場(chǎng)的商業(yè)利益競(jìng)爭(zhēng),市場(chǎng)上的IT產(chǎn)品紛繁復(fù)雜,不同廠商的產(chǎn)品之間形成了一定的差異。并且隨著技術(shù)的進(jìn)步,不同廠商之間的產(chǎn)品差異也呈現(xiàn)增大趨勢(shì)。這種產(chǎn)品間的差異,對(duì)用戶來(lái)說(shuō)毫無(wú)疑問(wèn)是把雙刃劍,一方面它給用戶帶來(lái)了豐富的自主選擇空間,并且有利于廠商之間的市場(chǎng)競(jìng)爭(zhēng),促進(jìn)IT產(chǎn)品的不斷發(fā)展。另一方面,選擇不同廠商的產(chǎn)品,有可能存在潛在的兼容性、安全性等方面的隱患。對(duì)軟件開(kāi)發(fā)者來(lái)說(shuō),應(yīng)用軟件要直接與計(jì)算機(jī)底層的操作系統(tǒng)、網(wǎng)絡(luò)協(xié)議等交互。因此在開(kāi)發(fā)中就面臨著諸如應(yīng)用程序跨平臺(tái)移植、在脆弱網(wǎng)絡(luò)環(huán)境下保證數(shù)據(jù)可靠性傳送、保證系統(tǒng)的可靠性等許多棘手的問(wèn)題。為了解決上述一系列問(wèn)題,中間件應(yīng)運(yùn)而生。
1 中間件的定義和分類
顧名思義,中間件即處于操作系統(tǒng)軟件和用戶應(yīng)用軟件中間的軟件。從中間件產(chǎn)生的角度來(lái)看,開(kāi)發(fā)人員為了規(guī)避不同平臺(tái)直接的差異導(dǎo)致的巨大工作量,提出將應(yīng)用軟件面臨的共性問(wèn)題進(jìn)行抽象提煉,形成獨(dú)立于操作系統(tǒng)等計(jì)算機(jī)底層資源的可復(fù)用部分,因此中間件屬于可復(fù)用軟件的范疇。IDC給出的中間件的定義是,中間件是一種獨(dú)立的系統(tǒng)軟件或服務(wù)程序,分布式應(yīng)用軟件借助這種軟件在不同的技術(shù)之間共享資源,中間件位于客戶機(jī)服務(wù)器的操作系統(tǒng)之上,管理計(jì)算資源和網(wǎng)絡(luò)通信。
按照IDC的分類方法,根據(jù)實(shí)現(xiàn)的功能和作用的不同,中間件可以分為六大類:
(1)終端仿真/屏幕轉(zhuǎn)換:用以實(shí)現(xiàn)客戶機(jī)圖形用戶接口與已有的字符接口方式的服務(wù)器應(yīng)用程序之間的互操作。主要應(yīng)用于早期的大型系統(tǒng),將終端機(jī)的字符界面轉(zhuǎn)化為圖形界面。
(2)數(shù)據(jù)訪問(wèn)中間件:是為了建立數(shù)據(jù)應(yīng)用資源互操作的模式,對(duì)異構(gòu)環(huán)境下的數(shù)據(jù)庫(kù)實(shí)現(xiàn)聯(lián)接或文件系統(tǒng)實(shí)現(xiàn)聯(lián)接的中間件。
(3)遠(yuǎn)程過(guò)程調(diào)用(RPC)中間件:通過(guò)這種遠(yuǎn)程過(guò)程調(diào)用機(jī)制,程序員編寫(xiě)客戶方的應(yīng)用,需要時(shí)可以調(diào)用位于遠(yuǎn)端服務(wù)器上的過(guò)程。
(4)消息中間件(MOM):用來(lái)屏蔽掉各種平臺(tái)及協(xié)議之間的特性,進(jìn)行相互通信,實(shí)現(xiàn)應(yīng)用程序之間的協(xié)同,它可以在分布式環(huán)境下擴(kuò)展進(jìn)程間的通信,支持多通訊協(xié)議、語(yǔ)言、應(yīng)用程序、硬件和軟件平臺(tái)。
(5)交易中間件:是在分布、異構(gòu)環(huán)境下提供保證交易完整性和數(shù)據(jù)完整性的一種環(huán)境平臺(tái)。交易中間件是專門針對(duì)聯(lián)機(jī)交易處理系統(tǒng)而設(shè)計(jì)的,如銀行業(yè)務(wù)系統(tǒng)、訂票系統(tǒng)等。
(6)對(duì)象中間件:在分布、異構(gòu)的網(wǎng)絡(luò)計(jì)算環(huán)境中,可以將各種分布對(duì)象有機(jī)地結(jié)合在一起,完成系統(tǒng)的快速集成,實(shí)現(xiàn)對(duì)象重用。
2 構(gòu)件技術(shù)與中間件
隨著軟件系統(tǒng)的規(guī)模和復(fù)雜度不斷提高,IT行業(yè)對(duì)產(chǎn)品的生產(chǎn)效率和質(zhì)量的要求不斷提高,由此引發(fā)了軟件開(kāi)發(fā)的需求和生產(chǎn)速度不匹配、軟件的脆弱和不可靠、75%的軟件項(xiàng)目延遲等一系列嚴(yán)重問(wèn)題。如何提高軟件的生產(chǎn)效率以及如何掌控軟件產(chǎn)品質(zhì)量成為IT產(chǎn)業(yè)發(fā)展中急需解決的問(wèn)題。
軟件復(fù)用以已有的工作為基礎(chǔ),重點(diǎn)關(guān)注應(yīng)用程序的特殊性,以便提高軟件生產(chǎn)的效率,保證軟件產(chǎn)品的質(zhì)量,被視為解決軟件危機(jī)的現(xiàn)實(shí)可行途徑。不同于OO技術(shù)強(qiáng)調(diào)對(duì)個(gè)體的抽象,構(gòu)件則更推廣了對(duì)象封裝的內(nèi)涵,側(cè)重于復(fù)雜系統(tǒng)中組成部分的協(xié)調(diào)關(guān)系,強(qiáng)調(diào)實(shí)體在環(huán)境中的存在形式,形成一個(gè)專門的技術(shù)領(lǐng)域。
軟件構(gòu)件以需求為導(dǎo)向,關(guān)注業(yè)務(wù)邏輯,在分布式應(yīng)用中屏蔽通信,具有互操作性、可靠性、兼容性等特征。中間件最大的優(yōu)勢(shì)之一就是屏蔽多樣的系統(tǒng)資源,保證良好的互操作性,基于中間件的軟件開(kāi)發(fā)符合軟件構(gòu)件技術(shù)的理念。通常應(yīng)用構(gòu)件的開(kāi)發(fā)者只需按照中間件的模式進(jìn)行設(shè)計(jì)開(kāi)發(fā),不必考慮下層的系統(tǒng)平臺(tái)??梢哉f(shuō),中間件提供了與環(huán)境隔離的構(gòu)件開(kāi)發(fā)模式。而J2EE是典型的基于構(gòu)件的中間件。
3 基于構(gòu)件的中間件技術(shù)J2EE
J2EE由一整套服務(wù)(Service)、應(yīng)用程序接口(APIs)和協(xié)議構(gòu)成。J2EE中間件技術(shù),以構(gòu)件化為主要特點(diǎn),其目標(biāo)是提供平臺(tái)無(wú)關(guān)的、可移植的、支持并發(fā)訪問(wèn)和安全的,完全基于Java的開(kāi)發(fā)服務(wù)器端中間件的標(biāo)準(zhǔn)。
J2EE所涉及到的知識(shí)范圍非常廣闊,我們經(jīng)常用到的主要為JDBC、JNDI、JSP、Java Servlet、EJB。
(1)Java Database Connectivity(JDBC)。JDBC是一種用于執(zhí)行SQL語(yǔ)句的Java API,可以為多種關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一訪問(wèn)。JDBC定義了4種不同的驅(qū)動(dòng)程序:JDBC-ODBCBridge、JDBC-native driverbridge、JDBC-networkbridge、PureJavadriver。
(2)Java Naming and Directory Interface(JNDI)。JNDI是Java命名與目錄接口。它提供了一致的模型來(lái)存取和操作企業(yè)級(jí)的資源如DNS和LDAP,本地文件系統(tǒng),或者在應(yīng)用服務(wù)器中的對(duì)象。JNDI避免了程序與數(shù)據(jù)庫(kù)之間的緊耦合,使應(yīng)用更加易于配置和部署。
(3)JavaServer Pages(JSPs)。JSP是服務(wù)器端的腳本語(yǔ)言。JSP頁(yè)面由HTML代碼和嵌入其中的Java代碼所組成。服務(wù)器在頁(yè)面被客戶端請(qǐng)求以后對(duì)這些Java代碼進(jìn)行處理,然后將生成的HTML頁(yè)面返回給客戶端的瀏覽器。
(4)Java Servlets。Servlet是一種服務(wù)器端的Java應(yīng)用程序,可以生成動(dòng)態(tài)的Web頁(yè)面。它擔(dān)當(dāng)客戶請(qǐng)求與服務(wù)器響應(yīng)的中間層。Servlet提供的功能大多與JSP類似,不過(guò)實(shí)現(xiàn)的方式不同。JSP通常是在HTML代碼中嵌入少量的Java代碼,而Servlets全部由Java寫(xiě)成并且生成HTML。
(5)Enterprise Java Beans(EJB)。EJB是運(yùn)行在獨(dú)立服務(wù)器上的組件,客戶端是通過(guò)網(wǎng)絡(luò)對(duì)EJB對(duì)象進(jìn)行調(diào)用的。EJB提供了一個(gè)框架來(lái)開(kāi)發(fā)和實(shí)施分布式商務(wù)邏輯,由此很顯著地簡(jiǎn)化了具有可伸縮性和高度復(fù)雜的企業(yè)級(jí)應(yīng)用的開(kāi)發(fā)。
4 結(jié)束語(yǔ)
本文從中間件的起源、中間件的定義和分類等方面對(duì)中間件進(jìn)行了探討,并對(duì)軟件構(gòu)件開(kāi)發(fā)技術(shù)和中間件技術(shù)進(jìn)行了對(duì)比分析,J2EE作為典型的基于構(gòu)件的中間件技術(shù),是目前網(wǎng)絡(luò)應(yīng)用服務(wù)器所采用的主要技術(shù)體系,文章對(duì)其核心技術(shù)進(jìn)行了說(shuō)明。
作為網(wǎng)絡(luò)應(yīng)用模式下主流的應(yīng)用運(yùn)行支撐環(huán)境,中間件無(wú)處不在,越來(lái)越多的應(yīng)用模式被抽象到中間件層。隨著軟件產(chǎn)業(yè)化的不斷發(fā)展升級(jí),作為網(wǎng)絡(luò)核心計(jì)算基礎(chǔ)設(shè)施的中間件,也將必然迎來(lái)更加廣闊的發(fā)展前景。同時(shí),中間件技術(shù)的不斷發(fā)展也會(huì)帶來(lái)網(wǎng)絡(luò)應(yīng)用開(kāi)發(fā)的更高效、更快速、更健壯的開(kāi)發(fā)模式。
參考文獻(xiàn):
[1]仉新剛.淺談軟件復(fù)用的理論與技術(shù)[J].科技信息(學(xué)術(shù)研究),2007.
[2]賈克斌,李邑喆.中間件技術(shù)在異構(gòu)與互操作環(huán)境中的應(yīng)用研究[J].北京工業(yè)大學(xué)學(xué)報(bào),2007.
[3]南楠.基于J2EE的框架技術(shù)綜述[J].福建電腦,2012.
[4]周之英.現(xiàn)代軟件工程(下)新技術(shù)篇[M].北京:科學(xué)出版社,2000.
作者簡(jiǎn)介:白瑞?。?978.01-),男,甘肅民勤人,科長(zhǎng),助理研究員,學(xué)士學(xué)位,研究方向:計(jì)算機(jī)應(yīng)用。
作者單位:甘肅省計(jì)算中心,蘭州 730030
基金項(xiàng)目:由《甘肅省科技特派員網(wǎng)站建設(shè)》項(xiàng)目資助(項(xiàng)目編號(hào):1305ZCQA051)。