您好,登錄后才能下訂單哦!
小編給大家分享一下java語言中間件的起源以及作用是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
1. 由來
因?yàn)楣ぷ鞯脑?,我從金蝶集團(tuán)調(diào)入金蝶中間件公司工作以來,經(jīng)常遇到一個問題就是中間件公司是個什么公司,中間件是什么?,金蝶不是做ERP的嗎?怎么也做中間件?。這是我以前在金蝶集團(tuán)時無法想象的問題。因?yàn)榻鸬?,金蝶ERP的品牌以及大眾對ERP的了解,是無需我解析什么是ERP,什么是財(cái)務(wù)軟件一類的問題的。
畢竟,中間件在實(shí)際的應(yīng)用過程中,是對應(yīng)用軟件起到支撐作用,最終用戶并不直接使用中間件,中間件不是大眾消費(fèi)類軟件產(chǎn)品。因此,除非是一個行業(yè)專業(yè)人士,一般不大可能與中間件打交道,不太了解什么是中間件。
因此,在系統(tǒng)軟件之中,操作系統(tǒng)、數(shù)據(jù)庫、中間件的三駕馬車,中間件是最神秘的。因?yàn)?,好歹大家通過Windows基本上會了解操作系統(tǒng)是個什么東西,盡管不會很全面,很專業(yè),畢竟是有感覺的。數(shù)據(jù)庫,雖然沒有直接見過,但基本上明白數(shù)據(jù)是要一個倉庫來儲存的,因此,也大致知道數(shù)據(jù)庫管理系統(tǒng)是干什么的。
長期以來,中間件是一個專業(yè)化非常強(qiáng)的細(xì)分產(chǎn)業(yè)。因?yàn)橹虚g件的技術(shù)門檻比較高,玩家也不多,無論是國外還是國內(nèi)都是如此。因此,行業(yè)內(nèi)對什么是中間件并不特別在意。而公司名稱直接叫中間件的就更少了,金蝶中間件應(yīng)該是國內(nèi)外直接在公司名稱中冠以中間件字眼最早,也是很少的公司之一。另一方面,因?yàn)橹虚g件軟件還處于發(fā)展階段,還沒有完全成熟,因此對中間件的定義也就沒有深究,或者權(quán)威的說法。
但現(xiàn)在情況有點(diǎn)變化,其中一個原因在于2008年底,國家啟動了核高基重大科技專項(xiàng),在基礎(chǔ)軟件領(lǐng)域明確提出重點(diǎn)支持操作系統(tǒng)、數(shù)據(jù)庫、中間件、文字處理等基礎(chǔ)軟件產(chǎn)業(yè)的自主創(chuàng)新,幾乎一夜之間大大小小的軟件公司都宣稱是做中間件的了,只要不是做最終應(yīng)用軟件的,他們的產(chǎn)品都叫中間件了,一時間,中間件變得蓬勃發(fā)展起來了。
作為中間件行業(yè)內(nèi)的專業(yè)化和領(lǐng)先企業(yè)來說,大家都重視起中間件來了,這是好事,說明社會上重視了。對行業(yè)的發(fā)展和繁榮固然重要,但這也隱含了重大的風(fēng)險。中間件名字被濫用,無論是對用戶,對這個產(chǎn)業(yè),對政府和投資人來說,都會有負(fù)面的影響。魚目混珠,泥沙俱下的局面,對中間件產(chǎn)業(yè)的正常發(fā)展未必就是好事情了,也可能對真正的中間件自主創(chuàng)新帶來許多困擾,模糊了中間件的本質(zhì),可能會弱化中間件核心技術(shù)的創(chuàng)新和發(fā)展。
因此,在這種情況下,無論是對行業(yè)內(nèi),還是行業(yè)外,突然什么是中間件的問題變成了一個大問題了。
本文試圖就中間件的來龍去脈,外延內(nèi)涵和前世今生,來一個全面的闡釋。一家之言,權(quán)作業(yè)界參考,希望帶動大家做一些深入的思考。
2. 中間件的起源
2.1 中間件發(fā)展的歷史
事情從1946年說起,世界上第一臺電子計(jì)算機(jī)埃尼阿克誕生,人類進(jìn)入信息時代。1955年,約翰巴克斯發(fā)明了最早的程序語言Fortran,現(xiàn)代意義上的軟件就誕生了。
1964年,IBM發(fā)布OS/360操作系統(tǒng),軟件與硬件分離,同時,軟件成為一個獨(dú)立的產(chǎn)業(yè)正式登上產(chǎn)業(yè)界的舞臺。中間件就是軟件產(chǎn)業(yè)不斷發(fā)展過程中自然產(chǎn)生的。
90年代,文頓·瑟夫這位互聯(lián)網(wǎng)之父的發(fā)明成為改變IT業(yè)的重大革命性創(chuàng)新?;ヂ?lián)網(wǎng)促使分布式系統(tǒng)和網(wǎng)絡(luò)應(yīng)用的誕生,中間件就是伴隨網(wǎng)絡(luò)技術(shù)的產(chǎn)生、發(fā)展而興起的,可以說沒有網(wǎng)絡(luò)就沒有現(xiàn)代意義上的中間件。因?yàn)椋W(wǎng)絡(luò)環(huán)境需要解決異構(gòu)分布網(wǎng)絡(luò)環(huán)境下軟件系統(tǒng)的通信、互操作、協(xié)同、事務(wù)、安全等共性問題,提高異構(gòu)分布網(wǎng)絡(luò)環(huán)境下軟件系統(tǒng)的互操作性、可移植性、適應(yīng)性、可靠性等問題。
1968年IBM發(fā)布CICS交易事務(wù)控制系統(tǒng),使得應(yīng)用軟件與系統(tǒng)服務(wù)分離,這是中間件技術(shù)萌芽的標(biāo)志,因?yàn)镃ICS還不是分布式環(huán)境的產(chǎn)物,因此我們往往還不將CICS作為正式的中間件系統(tǒng)。
一般來說,我們將1990年誕生于ATT公司的BELL實(shí)驗(yàn)室的Tuxedo系統(tǒng)(后來被NOVELL從ATT公司隨著UNIX系統(tǒng)一起買走,后來又賣給了BEA公司,現(xiàn)在歸于ORACLE公司旗下了)作為中間件的誕生標(biāo)志。Tuxedo解決了分布式交易事務(wù)控制問題,中間件開始成為網(wǎng)絡(luò)應(yīng)用的基礎(chǔ)設(shè)施,中間件正式成型,這是最早的交易中間件。
1994年IBM發(fā)布消息隊(duì)列服務(wù)MQ系列產(chǎn)品,解決分布式系統(tǒng)異步、可靠、傳輸?shù)耐ㄓ嵎?wù)問題,消息中間件誕生。
1995年,JAVA之父James Gosling發(fā)明JAVA語言,JAVA提供了跨平臺的通用的網(wǎng)絡(luò)應(yīng)用服務(wù),成為今天中間件的核心技術(shù)。JAVA是第一個天生的網(wǎng)絡(luò)應(yīng)用平臺,特別是J2EE發(fā)布以來,JAVA從一個編程語言,演變?yōu)榫W(wǎng)絡(luò)應(yīng)用架構(gòu),成為應(yīng)用服務(wù)平臺的事實(shí)標(biāo)準(zhǔn)。應(yīng)用服務(wù)器中間件,成為中間件技術(shù)的集大成者,也成為事實(shí)上的中間件的核心。
2001年,微軟發(fā)布.NET,中間件演變?yōu)?NET和JAVA兩大技術(shù)陣營。但由于.NET還不是一個完全開放的技術(shù)體系,只有一個玩家,因此,雖然.NET也是一種中間件,但由于IBM/ORACLE/SUN/SAP等巨頭都無一例外成了JAVA陣營的支持者,因此,我們習(xí)慣上提到中間件時,往往不包括.NET中間件體系。
以上談的是歷史,但透過歷史事實(shí)背后,為什么會出現(xiàn)中間件,這其中的本質(zhì)因素是什么?
2.2 中間件發(fā)展的驅(qū)動力
中間件出現(xiàn)的驅(qū)動力主要來自軟件研發(fā)過程碰到的種種問題。從軟件出現(xiàn)最早是用于科學(xué)計(jì)算,然后是計(jì)算機(jī)輔助設(shè)計(jì)、輔助制造等等工業(yè)應(yīng)用。在企業(yè)管理領(lǐng)域大規(guī)模應(yīng)用后,業(yè)務(wù)需求不斷的變化、系統(tǒng)不斷增加、流程更復(fù)雜、系統(tǒng)越來越不堪重負(fù),出現(xiàn)了需求交付方面的重大挑戰(zhàn),以至于人們用軟件危機(jī)來描述軟件工業(yè)所面臨的困境。
總結(jié)起來,軟件工業(yè)面臨的主要問題是四個方面:質(zhì)量問題、效率問題、互操作問題、靈活應(yīng)變問題。這些問題今天依然困擾著這個行業(yè)。
造成這個局面的原因是異構(gòu)性和標(biāo)準(zhǔn)規(guī)范的滯后。
異構(gòu)性表現(xiàn)在計(jì)算機(jī)的軟硬件之間的異構(gòu)性,包括硬件(CPU和指令集、硬件結(jié)構(gòu)、驅(qū)動程序等),操作系統(tǒng)(不同操作系統(tǒng)的API和開發(fā)環(huán)境)、數(shù)據(jù)庫(不同的存儲和訪問格式)等等。長期以來,高級語言依賴于特定的編譯器和操作系統(tǒng)API來編程,而他們是不兼容的,因此軟件必須依賴于開發(fā)和運(yùn)行的環(huán)境。
造成異構(gòu)的原因源自市場競爭、技術(shù)升級以及保護(hù)投資等因素。希望屏蔽異構(gòu)平臺的差異性問題是促成中間件發(fā)展的驅(qū)動力之一。
因?yàn)楫悩?gòu)性,產(chǎn)生的結(jié)果是軟件依賴于計(jì)算環(huán)境,使得各種不同軟件之間在不同平臺之間不能移植,或者移植非常困難。而且,因?yàn)榫W(wǎng)絡(luò)協(xié)議和通信機(jī)制的不同,這些系統(tǒng)之間還不能有效地相互集成。
造成互操作性不好的原因,主要是標(biāo)準(zhǔn)的滯后。解決軟件之間的互操作性問題也是促成中間件發(fā)展的驅(qū)動力之一。
軟件應(yīng)用領(lǐng)域越來越多,相同領(lǐng)域的應(yīng)用系統(tǒng)之間許多基礎(chǔ)功能和結(jié)構(gòu)是有相似性的,每次開發(fā)系統(tǒng)都從零開始絕對不是一種好的方法,也是對質(zhì)量和效率的很大的傷害。
盡可能多地凝練共性并復(fù)用以提高軟件開發(fā)效率和質(zhì)量,通過中間件通過提供簡單、一致、集成的開發(fā)和運(yùn)行環(huán)境,簡化分布式系統(tǒng)的設(shè)計(jì)、編程和管理,這也是中間件發(fā)展的重要驅(qū)動力。
在長期的探索過程中,解決軟件的四個問題的辦法總結(jié)起來兩個方面:工程方法、平臺與技術(shù)。
工程方法就是用工業(yè)工程、系統(tǒng)工程的理論、方法和體系來解決軟件研發(fā)過程中的管理問題,包括團(tuán)隊(duì)管理、項(xiàng)目管理、質(zhì)量控制等等,這就是軟件工程。除了軟件工程方法之外,我們發(fā)明了更多的架構(gòu)規(guī)劃、設(shè)計(jì)和實(shí)施的方法,不斷累積領(lǐng)域的知識與經(jīng)驗(yàn)等等。
更好的技術(shù)手段,包括更好的程序設(shè)計(jì)語言、更好的平臺和軟件開發(fā)技術(shù),如面向?qū)ο?、組件開發(fā)、面向服務(wù)等等。而這方面,在技術(shù)上逐漸發(fā)展的成果大部分都凝聚在今天的中間件平臺之中。
而這些更好的技術(shù)手段,從本質(zhì)上是通過復(fù)用、松耦合、互操作(標(biāo)準(zhǔn))等機(jī)制來提高軟件質(zhì)量、加快軟件研發(fā)效率、使研發(fā)出來的產(chǎn)品能夠相互集成并靈活適應(yīng)變化。
這些因素逐漸促成了中間件軟件的形成和發(fā)展。
3. 中間件的概念
講了這么多,究竟什么是中間件,也就是中間件的定義是什么?
針對這個問題,應(yīng)該說還沒有一個標(biāo)準(zhǔn)的定義,或者說還沒有完全取得學(xué)術(shù)界和產(chǎn)業(yè)界的共識。
顧名思義,中間件就是處于中間的軟件。但這種不是從功能,或者特性來定義的概念,而是用位置來定義的名字,就容易被不同的人從不同角度賦予其不同的含義。
IDC曾經(jīng)給中間件下的定義是中間件是一種獨(dú)立的系統(tǒng)軟件或服務(wù)程序,分布式應(yīng)用軟件借助這種軟件在不同的技術(shù)之間共享資源,中間件位于客戶機(jī)服務(wù)器的操作系統(tǒng)之上,管理計(jì)算資源和網(wǎng)絡(luò)通信。
我國學(xué)術(shù)界一般認(rèn)可的定義是中間件是指網(wǎng)絡(luò)環(huán)境下處于操作系統(tǒng)、數(shù)據(jù)庫等系統(tǒng)軟件和應(yīng)用軟件之間的一種起連接作用的分布式軟件,主要解決異構(gòu)網(wǎng)絡(luò)環(huán)境下分布式應(yīng)用軟件的互連與互操作問題,提供標(biāo)準(zhǔn)接口、協(xié)議,屏蔽實(shí)現(xiàn)細(xì)節(jié),提高應(yīng)用系統(tǒng)易移植性(北京大學(xué)梅宏)。
中科院軟件所研究員仲萃豪形象地把中間件定義為平臺+通信。這個定義限定了只有用于分布式系統(tǒng)中的此類軟件才能被稱為中間件,同時此定義還可以把中間件與支撐軟件和實(shí)用軟件區(qū)分開來。
中間件處于操作系統(tǒng)軟件與用戶的應(yīng)用軟件的中間。中間件在操作系統(tǒng)、網(wǎng)絡(luò)和數(shù)據(jù)庫之上,應(yīng)用軟件的下層,總的作用是為處于自己上層的應(yīng)用軟件提供運(yùn)行與開發(fā)的環(huán)境,幫助用戶靈活、高效地開發(fā)和集成復(fù)雜的應(yīng)用軟件。形象地說就是上下之間的中間。
此外,中間件主要為網(wǎng)絡(luò)分布式計(jì)算環(huán)境提供通信服務(wù)、交換服務(wù)、語義互操作服務(wù)等系統(tǒng)之間的協(xié)同集成服務(wù),解決系統(tǒng)之間的互連互通問題。形象地說就是所謂左右之間的中間。
要深入理解什么是中間件,形式化的定義固然重要,我們還得從概念本身去深入理解其核心特征才是最重要的。要理解一個概念,從內(nèi)涵和外延兩個方面去描述是哲學(xué)上非常重要的一套方法體系。
3.1 中間件的特征(內(nèi)涵)
總結(jié)分析,中間件有幾個非常重要的特征是必須具備的:
所謂平臺就是能夠獨(dú)立運(yùn)行并自主存在,為其所支撐的上層系統(tǒng)和應(yīng)用提供運(yùn)行所依賴的環(huán)境。顯然,不是所有的系統(tǒng)或者應(yīng)用都可以稱之為平臺的。中間件是一個平臺,因此中間件是必須獨(dú)立存在,是運(yùn)行時刻的系統(tǒng)軟件,它為上層的網(wǎng)絡(luò)應(yīng)用系統(tǒng)提供一個運(yùn)行環(huán)境,并通過標(biāo)準(zhǔn)的接口和API來隔離其支撐的系統(tǒng),實(shí)現(xiàn)其獨(dú)立性,也就是平臺性。
因此,目前許多的開發(fā)語言、組件庫和各種報表設(shè)計(jì)之類的軟件,很難滿足平臺性,將這類軟件叫中間件,是很不合適的。例如,JAVA是一種語言,這種語言的開發(fā)工具和開發(fā)框架,如Eclipse、JBuilder、Struts,Hibernate等等就不能稱為中間件,充其量叫中間件開發(fā)工具,而不能叫中間件本身,就如同各種建筑工程設(shè)備和機(jī)械,如吊臂、攪拌機(jī)等不能叫建筑,而只能成為建筑工具一樣。而J2EE應(yīng)用服務(wù)器提供JAVA應(yīng)用的運(yùn)行環(huán)境,就是經(jīng)典的中間件。
中間件的最終目的是解決上層應(yīng)用系統(tǒng)的問題,而且也是軟件技術(shù)發(fā)展到今天對應(yīng)用軟件提供最完善徹底的解決方案。
高級程序設(shè)計(jì)語言的發(fā)明,使得軟件開發(fā)變成一個獨(dú)立的科學(xué)和技術(shù)體系,而操作系統(tǒng)平臺的出現(xiàn),使得應(yīng)用軟件通過標(biāo)準(zhǔn)的API接口,實(shí)現(xiàn)了軟件與硬件的分離。
現(xiàn)代面向服務(wù)的中間件在軟件的模型、結(jié)構(gòu)、互操作以及開發(fā)方法等四個方面提供了更強(qiáng)的應(yīng)用支撐能力:
模型:構(gòu)件模型彈性粒度化,即通過抽象層度更高的構(gòu)件模型,實(shí)現(xiàn)具備更高結(jié)構(gòu)獨(dú)立性、內(nèi)容自包含性和業(yè)務(wù)完整性的可復(fù)用構(gòu)件,即服務(wù)。并且在細(xì)粒度服務(wù)基礎(chǔ)上,提供了更粗粒度的服務(wù)封裝方式,即業(yè)務(wù)層面的封裝,形成業(yè)務(wù)組件,就可以實(shí)現(xiàn)從組件模型到業(yè)務(wù)模型的全生命周期企業(yè)建模的能力。
結(jié)構(gòu):結(jié)構(gòu)松散化,即,將完整分離服務(wù)描述和服務(wù)功能實(shí)現(xiàn)以及服務(wù)的使用者和提供者,從而避免分布式應(yīng)用系統(tǒng)構(gòu)建和集成時常見的技術(shù)、組織、時間等不良約束。
互操作:交互過程標(biāo)準(zhǔn)化,即,將與互操作相關(guān)的內(nèi)容進(jìn)行標(biāo)準(zhǔn)化定義,如服務(wù)封裝、描述、發(fā)布、發(fā)現(xiàn)、調(diào)用等契約,通信協(xié)議以及數(shù)據(jù)交換格式等等。最終實(shí)現(xiàn)訪問互操作、連接互操作和語義互操作。
開發(fā)集成方法:應(yīng)用系統(tǒng)的構(gòu)建方式由代碼編寫轉(zhuǎn)為主要通過服務(wù)間的快捷組合及編排,完成更為復(fù)雜的業(yè)務(wù)邏輯的按需提供和改善,從而大大簡化和加速應(yīng)用系統(tǒng)的搭建及重構(gòu)過程。
而要最終解決軟件的質(zhì)量問題、效率問題、互操作問題、靈活應(yīng)變問題這四大問題,需要在軟件技術(shù)的內(nèi)在結(jié)構(gòu)(Structure)、架構(gòu)(Architecture)層面進(jìn)行思考。
解決這些問題,技術(shù)的本質(zhì)是復(fù)用、松耦合、互操作(標(biāo)準(zhǔn))等軟件技術(shù)的內(nèi)在機(jī)制。這也是中間件技術(shù)和產(chǎn)品的本質(zhì)特征。
軟件復(fù)用,即軟件的重用,也叫再用,是指同一事物不作修改或稍加改動就多次重復(fù)使用。從軟件復(fù)用技術(shù)的發(fā)展來看,就是不斷提升抽象級別,擴(kuò)大復(fù)用范圍。最早的復(fù)用技術(shù)是子程序,人們發(fā)明子程序,就可以在不同系統(tǒng)之間進(jìn)行復(fù)用了。但是,子程序是最原始的復(fù)用,因?yàn)檫@種復(fù)用范圍是一個可執(zhí)行程序內(nèi)復(fù)用,靜態(tài)開發(fā)期復(fù)用,如果子程序修改,意味著所有調(diào)用這個子程序的程序必須重新編譯、測試和發(fā)布。
復(fù)用對象復(fù)用范圍
復(fù)用對象 | 復(fù)用范圍 |
---|---|
子程序 | 一個可執(zhí)行程序內(nèi)復(fù)用,靜態(tài)開發(fā)期 復(fù)用 |
組件(DLL,Com等) | 系統(tǒng)內(nèi)復(fù)用,動態(tài)運(yùn)行期復(fù)用 |
企業(yè)對象組件(Com+,.NET,EJB等) | 企業(yè)網(wǎng)絡(luò)內(nèi)復(fù)用,不同系統(tǒng)之間復(fù)用 |
服務(wù) (如WebService,SCA/SDO) | 不同企業(yè)之間,全球復(fù)用,動態(tài)可配置 |
為了解決這個問題,發(fā)明了組件(或者叫控件),如MS操作系統(tǒng)下的DLL組件。組件將復(fù)用提升了一個層次,因?yàn)榻M件可以在一個系統(tǒng)內(nèi)復(fù)用(同一種操作系統(tǒng)),而且是動態(tài)、運(yùn)行期復(fù)用。這樣組件可以單獨(dú)發(fā)展,組件與組件調(diào)用者之間的耦合度降低。
為解決分布式網(wǎng)絡(luò)計(jì)算之間的組件復(fù)用,人們發(fā)明了企業(yè)對象組件,如(COM+, .NET, EJB等),或者叫分布式組件。通過遠(yuǎn)程對象代理,來實(shí)現(xiàn)企業(yè)網(wǎng)絡(luò)內(nèi)復(fù)用,不同系統(tǒng)之間復(fù)用。
傳統(tǒng)中間件的核心是組件對象的管理。但分布式組件也是嚴(yán)重依賴其受控環(huán)境,由于構(gòu)件實(shí)現(xiàn)和運(yùn)行支撐技術(shù)之間存在著較大的異構(gòu)性,不同技術(shù)設(shè)計(jì)和實(shí)現(xiàn)的構(gòu)件之間無法直接組裝式復(fù)用。
而現(xiàn)代中間件的發(fā)展重要趨勢就是以服務(wù)為核心,如WebService, SCA/SDO等。通過服務(wù),或者服務(wù)組件來實(shí)現(xiàn)更高層次的復(fù)用、解耦和互操作,即SOA架構(gòu)中間件。
因?yàn)榉?wù)是通過標(biāo)準(zhǔn)封裝,服務(wù)組件之間的組裝、編排和重組,來實(shí)現(xiàn)服務(wù)的復(fù)用。而且這種復(fù)用,可以在不同企業(yè)之間,全球復(fù)用,達(dá)到復(fù)用的最高級別,并且是動態(tài)可配置的復(fù)用。
基于SOA架構(gòu)的中間件,在松耦合解耦過程也發(fā)展到了最后的境界。傳統(tǒng)軟件將軟件之中核心三部分——網(wǎng)絡(luò)連接、數(shù)據(jù)轉(zhuǎn)換、業(yè)務(wù)邏輯全部耦合在一個整體之中,形成鐵板一塊的軟件,牽一發(fā)而動全身,軟件就難以適應(yīng)變化。分布式對象技術(shù)將“連接邏輯”進(jìn)行分離,消息中間件將“連接邏輯”進(jìn)行異步處理,增加了更大的靈活性。消息代理和一些分布式對象中間件將數(shù)據(jù)轉(zhuǎn)換也進(jìn)行了分離。而SOA架構(gòu),通過服務(wù)的封裝,實(shí)現(xiàn)了業(yè)務(wù)邏輯與網(wǎng)絡(luò)連接、數(shù)據(jù)轉(zhuǎn)換等進(jìn)行完全的解耦。
軟件技術(shù)的不斷解耦的過程
傳統(tǒng)軟件互操作技術(shù)也存在問題?;ヂ?lián)網(wǎng)前所未有的開放性意味著各節(jié)點(diǎn)可采用不同的中間件技術(shù),對技術(shù)細(xì)節(jié)進(jìn)行了私有化的約束,構(gòu)件模型和架構(gòu)沒有統(tǒng)一標(biāo)準(zhǔn),從而導(dǎo)致中間件平臺自身在構(gòu)件描述、發(fā)布、發(fā)現(xiàn)、調(diào)用、互操作協(xié)議及數(shù)據(jù)傳輸?shù)确矫娉尸F(xiàn)出巨大的異構(gòu)性。各種不良技術(shù)約束的結(jié)果是軟件系統(tǒng)跨互聯(lián)網(wǎng)進(jìn)行交互變得困難重重,最終導(dǎo)致了跨企業(yè)/部門的業(yè)務(wù)集成和重組難以靈活快速的進(jìn)行。
在軟件的互操作方面,傳統(tǒng)中間件只是實(shí)現(xiàn)了訪問互操作,即通過標(biāo)準(zhǔn)化的API實(shí)現(xiàn)了同類系統(tǒng)之間的調(diào)用互操作,而連接互操作還是依賴于特定的訪問協(xié)議,如JAVA使用RMI,CORBA使用IIOP等。而SOA通過標(biāo)準(zhǔn)的、支持Internet、與操作系統(tǒng)無關(guān)的SOAP協(xié)議實(shí)現(xiàn)了連接互操作。而且,服務(wù)的封裝是采用XML協(xié)議,具有自解析和自定義的特性,這樣,基于SOA的中間件還可以實(shí)現(xiàn)語義互操作。
基于服務(wù)的中間件
總之,服務(wù)化體現(xiàn)的是中間件在完整業(yè)務(wù)復(fù)用、靈活業(yè)務(wù)組織方面的發(fā)展趨勢,其核心目標(biāo)是提升IT基礎(chǔ)設(shè)施的業(yè)務(wù)敏捷性。因此,中間件將成為SOA的主要實(shí)現(xiàn)平臺。
3.2 中間件的分類(外延)
中間件所包括的范圍十分廣泛,針對不同的應(yīng)用需求涌現(xiàn)出多種各具特色的中間件產(chǎn)品。從功能性外延來看,中間件包括交易中間件、消息中間件、集成中間件等各種功能性的中間件技術(shù)和產(chǎn)品。
現(xiàn)在,中間件已經(jīng)成為網(wǎng)絡(luò)應(yīng)用系統(tǒng)開發(fā)、集成、部署、運(yùn)行和管理必不可少的工具。由于中間件技術(shù)涉及網(wǎng)絡(luò)應(yīng)用的各個層面,涵蓋從基礎(chǔ)通訊、數(shù)據(jù)訪問到應(yīng)用集成等眾多的環(huán)節(jié),因此,中間件技術(shù)呈現(xiàn)出多樣化的發(fā)展特點(diǎn)。
根據(jù)中間件在軟件支撐和架構(gòu)的定位來看,基本上可以分為三大類產(chǎn)品:應(yīng)用服務(wù)類中間件、應(yīng)用集成類中間件、業(yè)務(wù)架構(gòu)類中間件。
為應(yīng)用系統(tǒng)提供一個綜合的計(jì)算環(huán)境和支撐平臺,包括對象請求代理(ORB)中間件、事務(wù)監(jiān)控交易中間件、JAVA應(yīng)用服務(wù)器中間件等。
隨著對象技術(shù)與分布式計(jì)算技術(shù)的發(fā)展,兩者相互結(jié)合形成了分布對象計(jì)算,并發(fā)展為當(dāng)今軟件技術(shù)的主流方向。1990年底,對象管理組織OMG首次推出對象管理結(jié)構(gòu)OMA(Object Management Architecture),對象請求代理(Object Request Broker)是這個模型的核心組件。它的作用在于提供一個通信框架,透明地在異構(gòu)的分布計(jì)算環(huán)境中傳遞對象請求。CORBA規(guī)范包括了ORB的所有標(biāo)準(zhǔn)接口,是對象請求代理的典型代表。
隨著分布計(jì)算技術(shù)的發(fā)展,分布應(yīng)用系統(tǒng)對大規(guī)模的事務(wù)處理提出了需求,比如商業(yè)活動中大量的關(guān)鍵事務(wù)處理。事務(wù)處理監(jiān)控界于Client和Server之間,進(jìn)行事務(wù)管理與協(xié)調(diào)、負(fù)載平衡、失敗恢復(fù)等,以提高系統(tǒng)的整體性能。它可以被看作是事務(wù)處理應(yīng)用程序的操作系統(tǒng)。這類被稱為交易中間件,適用于聯(lián)機(jī)交易處理系統(tǒng),主要功能是管理分布于不同計(jì)算機(jī)上的數(shù)據(jù)的一致性,保障系統(tǒng)處理能力的效率與均衡負(fù)載。交易中間件所遵循的主要標(biāo)準(zhǔn)是X/open DTP模型,典型的產(chǎn)品是Tuxedo。
JAVA從2.0企業(yè)版之后,不僅僅是一種編程語言,而且演變?yōu)橐粋€完整的計(jì)算環(huán)境和企業(yè)架構(gòu)。為JAVA應(yīng)用提供組件容器,用來構(gòu)造Internet應(yīng)用和其它分布式構(gòu)件應(yīng)用,是企業(yè)實(shí)施電子商務(wù)的基礎(chǔ)設(shè)施,這種應(yīng)用服務(wù)器中間件發(fā)展到為企業(yè)應(yīng)用提供數(shù)據(jù)訪問、部署、遠(yuǎn)程對象調(diào)用、消息通信、安全服務(wù)、監(jiān)控服務(wù)、集群服務(wù)等強(qiáng)化應(yīng)用支撐的服務(wù)。使得JAVA應(yīng)用服務(wù)器成為了事實(shí)上的應(yīng)用服務(wù)器工業(yè)標(biāo)準(zhǔn)。由于它的開放性,使得交易中間件和對象請求代理逐漸融合到應(yīng)用服務(wù)器之中。典型的應(yīng)用服務(wù)器產(chǎn)品包括IBM Websphere Application Server、Oracle Weblogic Application Server和金蝶Apusic Application Server等。
應(yīng)用集成類中間件是提供各種不同網(wǎng)絡(luò)應(yīng)用系統(tǒng)之間的消息通信、服務(wù)集成和數(shù)據(jù)集成的功能,包括常見的消息中間件、企業(yè)集成EAI、企業(yè)服務(wù)總線以及相配套的適配器等。
消息中間件指的是利用高效可靠的消息傳遞機(jī)制進(jìn)行平臺無關(guān)的數(shù)據(jù)交流,并基于數(shù)據(jù)通信來進(jìn)行分布式系統(tǒng)的集成。通過提供消息傳遞和消息排隊(duì)模型,它可在分布環(huán)境下擴(kuò)展進(jìn)程間的通信,并支持多通訊協(xié)議、語言、應(yīng)用程序、硬件和軟件平臺,實(shí)現(xiàn)應(yīng)用系統(tǒng)之間的可靠異步消息通信,能夠保障數(shù)據(jù)在復(fù)雜的網(wǎng)絡(luò)中高效、穩(wěn)定、安全、可靠的傳輸,并確保傳輸?shù)臄?shù)據(jù)不錯、不重、不漏、不丟。目前流行的消息中間件產(chǎn)品有IBM的MQSeries、 BEA的MessageQ、金蝶Apusic MQ等。
企業(yè)應(yīng)用整合,僅指企業(yè)內(nèi)部不同應(yīng)用系統(tǒng)之間的互連,以期通過應(yīng)用整合實(shí)現(xiàn)數(shù)據(jù)在多個系統(tǒng)之間的同步和共享。這種類似集線器的架構(gòu)模式是在基于消息的基礎(chǔ)上,引入了前置機(jī)-服務(wù)器的概念,使用一種集線器/插頭(hub-and-spoke)的架構(gòu),將消息路由信息的管理和維護(hù)從前置機(jī)遷移到了服務(wù)器上,巧妙的把集成邏輯和業(yè)務(wù)邏輯分離開來,大大增加了系統(tǒng)彈性。由于前置機(jī)和服務(wù)器之間不再直接通信,每個前置機(jī)只通過消息和服務(wù)器之間通信,將復(fù)雜的網(wǎng)狀結(jié)構(gòu)變成了簡單的星型結(jié)構(gòu)。典型的企業(yè)應(yīng)用集成EAI的產(chǎn)品包括Tibico和Informatica等公司產(chǎn)品。
隨著SOA思想和技術(shù)的逐漸成熟,EAI發(fā)展到透過業(yè)務(wù)服務(wù)的概念來提供IT的各項(xiàng)基本應(yīng)用功能,讓這些服務(wù)可以自由地被排列組合、融會貫通,以便在未來能隨時彈性配合新的需求而調(diào)整。Web Services是SOA的一種具體實(shí)現(xiàn)方式,SOA的世界是由服務(wù)提供者(Service Provider)、服務(wù)請求者(Service Requester) 以及服務(wù)代理者(Service Broker)所組成,目標(biāo)是將所有具備價值的IT資源,不論是舊的或新的,通通都能夠透過Web Services的包裝,成為隨取即用的IT資產(chǎn),并可將各種服務(wù)快速匯整,開發(fā)出組合式應(yīng)用,達(dá)到整合即開發(fā)的目的。SOA的架構(gòu)只是實(shí)現(xiàn)和解決了服務(wù)模塊間調(diào)用的互操作問題,為了更好的服務(wù)于企業(yè)應(yīng)用,引入了企業(yè)服務(wù)總線的應(yīng)用架構(gòu)(Enterprise Service Bus,ESB)。這一構(gòu)架是基于消息通信、智能路由、數(shù)據(jù)轉(zhuǎn)換等技術(shù)實(shí)現(xiàn)的。ESB提供了一個基于標(biāo)準(zhǔn)的松散應(yīng)用耦合模式,這就是企業(yè)服務(wù)總線中間件,是一種綜合的企業(yè)集成中間件。典型的ESB產(chǎn)品包括IBM Websphere ESB、Oracle公司的Weblogic ESB以及金蝶Apusic ESB等。
作為共性的凝練,中間件不僅要從底層的技術(shù)入手,將共性技術(shù)的特征抽象進(jìn)中間層,還要更多地把目光投向到業(yè)務(wù)層面上來,根據(jù)業(yè)務(wù)的需要,驅(qū)動自身能力的不斷演進(jìn),即,不斷出現(xiàn)的新的業(yè)務(wù)需要驅(qū)動了應(yīng)用模式和信息系統(tǒng)能力的不斷演進(jìn),進(jìn)而要求中間件不斷地凝練更多的業(yè)務(wù)共性,提供針對性支撐機(jī)制。近年來,這一需求趨勢愈發(fā)明顯,越來越多的業(yè)務(wù)和應(yīng)用模式被不斷地抽象進(jìn)入中間件的層次,如業(yè)務(wù)流程流、業(yè)務(wù)模型、業(yè)務(wù)規(guī)則、交互應(yīng)用等等,其結(jié)果是中間件凝練的共性功能越來越多,中間件的業(yè)務(wù)化和領(lǐng)域化的趨勢非常明顯。
業(yè)務(wù)架構(gòu)類中間件包括業(yè)務(wù)流程、業(yè)務(wù)管理和業(yè)務(wù)交互等幾個業(yè)務(wù)領(lǐng)域的中間件。
業(yè)務(wù)流程是處理業(yè)務(wù)模型的非常重要方法。管理流程與各職能部門和業(yè)務(wù)單元有密切關(guān)系,須藉各部門間的緊密協(xié)調(diào),以達(dá)到企業(yè)運(yùn)營和管理功能的目標(biāo)。在業(yè)務(wù)流程支持方面,從早期的WfMC定義的工作流,到基于服務(wù)的業(yè)務(wù)流程規(guī)范BPEL,由業(yè)務(wù)流程的支撐,逐漸形成了完整的業(yè)務(wù)流程架構(gòu)模型,包括流程建模、流程引擎、流程執(zhí)行、流程監(jiān)控和流程分析等。有名的業(yè)務(wù)流程中間件包括基于工作流的IBM Lotus Workflow,基于BPEL的IBM Webshpere Process Server以及同時支持工作流和BPEL的金蝶Apusic BPM等。
業(yè)務(wù)管理就是對業(yè)務(wù)對象的建模和業(yè)務(wù)規(guī)則的定義、運(yùn)行和監(jiān)控的中間件平臺。策略管理員和開發(fā)人員將業(yè)務(wù)邏輯捕獲為業(yè)務(wù)規(guī)則。使用規(guī)則管理器可以將規(guī)則輕松地嵌入 Web、現(xiàn)有應(yīng)用程序和后臺辦公應(yīng)用程序。常見的業(yè)務(wù)管理中間件包括IBM Websphere ILOG 業(yè)務(wù)規(guī)則管理系統(tǒng),金蝶BOS等。
業(yè)務(wù)交互的中間件平臺提供組織的合作伙伴、員工和客戶通過WEB和移動設(shè)備等交互工具,實(shí)現(xiàn)基于角色、上下文、操作、位置、偏好和團(tuán)隊(duì)協(xié)作需求的個性化的用戶體驗(yàn)。這種門戶服務(wù)器軟件基于標(biāo)準(zhǔn)Portlet組合的應(yīng)用程序訪問框架,實(shí)現(xiàn)用戶集成和交互集成,構(gòu)建靈活、基于 SOA 的應(yīng)用架構(gòu)。典型的門戶中間件有IBM Websphere Portal Server和金蝶Apusic Portal Server等。
4. 中間件的未來
中間件是互聯(lián)網(wǎng)時代的IT基礎(chǔ)設(shè)施,提供業(yè)務(wù)的靈活性,消除信息孤島,提高IT的研發(fā)和運(yùn)營效率。作為網(wǎng)絡(luò)計(jì)算的核心基礎(chǔ)設(shè)施,中間件正在呈現(xiàn)出服務(wù)化、自治化、業(yè)務(wù)化、一體化等諸多新的發(fā)展趨勢,中間件進(jìn)入2.0時代,將極大提升互聯(lián)網(wǎng)統(tǒng)一計(jì)算平臺的敏、睿、融、和能力。
以互聯(lián)網(wǎng)為核心的多網(wǎng)融合產(chǎn)生了豐富多樣的新型網(wǎng)絡(luò)應(yīng)用模式,作為主流的應(yīng)用運(yùn)行支撐環(huán)境,中間件無處不在,越來越多的應(yīng)用模式被抽象到中間件層,中間件將變寬變厚。
隨著SOA技術(shù)逐漸成為主流,以及異構(gòu)系統(tǒng)的集成問題日益嚴(yán)峻,中間件將向面向服務(wù)、易于集成的方向發(fā)展。
中間件產(chǎn)品的種類日趨多樣(如交易中間件、消息中間件、應(yīng)用服務(wù)器、集成中間件、業(yè)務(wù)中間件等),但其技術(shù)架構(gòu)將向一體化的方向發(fā)展,主要包括:
統(tǒng)一內(nèi)核,易于演化:各大廠商的中間件產(chǎn)品將構(gòu)建在統(tǒng)一內(nèi)核之上,使其易于平臺演化。
統(tǒng)一編程模型,易于開發(fā):不同中間件產(chǎn)品提供了不同的編程模型,這些編程模型將趨向統(tǒng)一,從而達(dá)到易于開發(fā)的目的。
統(tǒng)一管理模型,易于系統(tǒng)維護(hù):不同中間件產(chǎn)品提供了不同的管理工具與管理手段,這些管理工具與手段將趨向統(tǒng)一,使其易于管理,降低運(yùn)維成本。
中間件產(chǎn)品將成為云計(jì)算的支撐平臺,使應(yīng)用易于交付。
一個大膽的設(shè)想是:未來五年,瀏覽器將統(tǒng)一前端,而后端平臺(中間件、操作系統(tǒng)、 數(shù)據(jù)庫)走向深度融合。
以上是java語言中間件的起源以及作用是什么的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。