在前面兩篇文章中,我們了解了中間件的基本概念和中間件的主要技術(shù)分類,在這篇文章中我們了解下基于中間件的主流技術(shù)平臺。
現(xiàn)有的基于中間件的主流技術(shù)平臺1般典型的利用是為3層/多層結(jié)構(gòu)的散布式軟件系統(tǒng)提供各種開發(fā)支持,由于3層結(jié)構(gòu)的散布式軟件的核心為中間層,因此支持主要集中在對中間層開發(fā)的支持上,目前應(yīng)當最廣泛的技術(shù)平臺有3類:
基于 OMG(ObjectManagement Group,對象管理組織)CORBA規(guī)范
基于 Sun JEE(JavaEnterprise Edition,Java 企業(yè)版)規(guī)范
基于Microsoft的Distributed interNet Applications (DNA) 2000規(guī)范、
CORBA規(guī)范是OMG組織基于眾多開放系統(tǒng)平臺廠商提交的散布對象互操作內(nèi)容的基礎(chǔ)上制定的公共對象要求代理體系規(guī)范,用于開發(fā)和配置散布式利用的服務(wù)器端中間件模型的規(guī)范,讓散布式利用程序中的遠程對象可以相互通訊,獨立于系統(tǒng)平臺和開發(fā)語言。
CORBA所基于的概念框架是對象管理體系結(jié)構(gòu)(Object Management Architecture,OMA) ,OMA 描寫了1個基于 CORBA的利用系統(tǒng)的基本結(jié)構(gòu)與構(gòu)成系統(tǒng)的構(gòu)件的特性。
OMA的核心基礎(chǔ)設(shè)施是象要求代理(ObjectRequest Broker,ORB),
,CORBA規(guī)范規(guī)定了ORB的標準體系結(jié)構(gòu)。ORB 負責完成查找要求的對象實現(xiàn)、讓對象實現(xiàn)準備好接收要求、傳遞構(gòu)成要求的數(shù)據(jù)等完成遠程調(diào)用時底層通訊任務(wù)所需的全部機制
CORBA CCM(CORBAComponentModel)技術(shù),是在支持POA的CORBA規(guī)范(版本2.3以后)基礎(chǔ)上,結(jié)合EJB當前規(guī)范的基礎(chǔ)上發(fā)展起來的。CORBA構(gòu)件模型,是OMG組織制定的1個用于開發(fā)和配置散布式利用的服務(wù)器端中間件模型規(guī)范
CORBA的目標是支持多個層次的可互操作性,CORBA 規(guī)范經(jīng)過量次改進與發(fā)展才到達這1目標。CORBA支持在可互操作性主要包括以下幾個層次:
1、不同平臺(如操作系統(tǒng))與語言之間的可互操作性:這是初期的 CORBA版本強調(diào)解決的主要問題,解決方法包括制定IDL標準和IDL到程序設(shè)計語言的映照。這使得使用同1供應(yīng)商的 ORB 產(chǎn)品開發(fā)的客戶程序與服務(wù)程序之間可以交互, 但使用不同供應(yīng)商的ORB產(chǎn)品開發(fā)的客戶程序與服務(wù)程序則未必是可互操作的。
2、不同廠商 ORB 產(chǎn)品之間的可互操作性:CORBA 2.0 版引入了GIOP 和 IIOP,從而實現(xiàn)了不同供應(yīng)商的 ORB 產(chǎn)品之間的可互操作性,所有供應(yīng)商的 ORB產(chǎn)品如果與 CORBA 2.0 兼容則彼此之間可互操作。
3、不同體系結(jié)構(gòu)之間的可互操作性:更完善的可互操作性還應(yīng)包括不同體系結(jié)構(gòu)之間的可互操作, 例如1個CORBA對象可通過協(xié)議橋接操作1個DCOM對象,OMG通過引入ESIOP來解決這1問題。 但ESIOP只能解決CORBA與特定體系結(jié)構(gòu) (如DCOM)之間的互操作,其實不能通過1套 ESIOP解決所有的問題。
關(guān)于CORBA的特點是大而全,互操作性和開放性非常好。CORBA的缺點是龐大而復(fù)雜,并且技術(shù)和標準的更新相對較慢,COBRA規(guī)范從1.0升級到2.0所花的時間非常短,而再往上的版本的發(fā)布就相對10分緩慢了。在具體的利用中使用不是很多。
為了推動基于Java的服務(wù)器端利用開發(fā),Sun因而在1999年底推出了Java2技術(shù)及相干的J2EE規(guī)范,J2EE的目標是:提供平臺無關(guān)的、可移植的、支持并發(fā)訪問和安全的,完全基于Java的開發(fā)服務(wù)器端中間件的標準。
在J2EE中,Sun給出了完全的基于Java語言開發(fā)面向企業(yè)散布利用規(guī)范,其中,在散布式互操作協(xié)議上,J2EE同時支持RMI和IIOP,而在服務(wù)器端散布式利用的構(gòu)造情勢,則包括了JavaServlet、JSP(Java Server Page)、EJB等多種情勢,以支持不同的業(yè)務(wù)需求,而且Java利用程序具有"Writeonce,run anywhere"的特性,使得J2EE技術(shù)在發(fā)布計算領(lǐng)域得到了快速發(fā)展。
J2EE簡化了構(gòu)件可伸縮的、其于構(gòu)件服務(wù)器端利用的復(fù)雜度,雖然微軟的DNA也1樣,但最大的區(qū)分是微軟的DNA是1個產(chǎn)品,J2EE不是1系列產(chǎn)品,而是1個規(guī)范和標準,不同的廠家可以實現(xiàn)自己的符合J2EE規(guī)范的產(chǎn)品,J2EE規(guī)范,是眾多廠家參與制定的,它不為Sun所獨有,而且其支持跨平臺的開發(fā),目前許多大的散布計算平臺廠商都公然支持與J2EE兼容技術(shù)。
J2EE的優(yōu)點是,服務(wù)器市場的主流還是大型機和UNIX平臺,這意味著以Java開發(fā)構(gòu)件,能夠做到"Writeonce,run anywhere",開發(fā)的利用可以配置到包括Windows平臺在內(nèi)的任何服務(wù)器端環(huán)境中去。
EJB是Sun推出的基于Java的服務(wù)器端構(gòu)件規(guī)范J2EE的1部份,自從J2EE推出以后,得到了廣泛的發(fā)展,已成為利用服務(wù)器真?zhèn)€標準技術(shù)。Sun的EJB技術(shù)是在JavaBean本地構(gòu)件基礎(chǔ)上,發(fā)展的面向服務(wù)器端散布利用構(gòu)件技術(shù)。EJB技術(shù)的推出,使得用Java基于構(gòu)件方法開發(fā)服務(wù)器端散布式利用成為可能。
從企業(yè)利用多層結(jié)構(gòu)的角度,EJB是業(yè)務(wù)邏輯層的中間件技術(shù),與JavaBeans不同,它提供了事務(wù)處理的能力,自從3層結(jié)構(gòu)提出以后,中間層,也就是業(yè)務(wù)邏輯層,是處理事務(wù)的核心,從數(shù)據(jù)存儲層分離,取代了存儲層的大部份地位。
從散布式計算的角度,EJB像CORBA1樣,提供了散布式技術(shù)的基礎(chǔ)。提供了對象之間的通訊手段。
從Internet技術(shù)利用的角度,EJB和Servlet,JSP1起成為新1代利用服務(wù)器的技術(shù)標準,EJB中的Bean可以分為會話Bean和實體Bean,前者保護會話,后者處理事務(wù),現(xiàn)在Servlet負責與客戶端通訊,訪問EJB,并把結(jié)果通過JSP產(chǎn)生頁面?zhèn)骰乜蛻舳恕?/span>
MicrosoftDNA 2000(Distributed interNetApplications)是Microsoft在推出Windows2000系列操作系統(tǒng)平臺基礎(chǔ)上,在擴大了散布計算模型,和改造BackOffice系列服務(wù)器端散布計算產(chǎn)品后發(fā)布的新的散布計算體系結(jié)構(gòu)和規(guī)范。
在服務(wù)器端,DNA2000提供了ASP、COM、Cluster等的利用支持。目前,DNA2000在技術(shù)結(jié)構(gòu)上有著巨大的優(yōu)越性。1方面,由于Microsoft是操作系統(tǒng)平臺廠商,因此DNA2000技術(shù)得到了底層操作系統(tǒng)平臺的強大支持;另外一方面,由于Microsoft的操作系統(tǒng)平臺利用廣泛,支持該系統(tǒng)平臺的利用開發(fā)廠商數(shù)目眾多,因此在實際利用中,DNA2000得到了眾多利用開發(fā)商的采取和支持。
DNA2000融會了現(xiàn)今最早進的散布計算理論和思想,如事務(wù)處理、可伸縮性、異步消息隊列、集群等內(nèi)容。DNA使得開發(fā)可以基于Microsoft平臺的服務(wù)器構(gòu)件利用,其中,如數(shù)據(jù)庫事務(wù)服務(wù)、異步通訊服務(wù)和安全服務(wù)等,都由底層的散布對象系統(tǒng)提供。
但是它的不足是依賴于Microsoft的操作系統(tǒng)平臺,因此在其它開發(fā)系統(tǒng)平臺(如Unix、Linux)上不能發(fā)揮作用。
DNA構(gòu)件有COM(Component Object Model)/DCOM/COM+構(gòu)件。
以Microsoft為首的DCOM/COM/COM+陣營,從DDE,OLE到ActiveX等,提供了中間件開發(fā)的基礎(chǔ),如VC,VB,Delphi等都支持DCOM,包括OLEDB在內(nèi)新的數(shù)據(jù)庫存取技術(shù),隨著Windows2000的發(fā)布,Microsoft的DCOM/COM/COM+技術(shù),在DNA2000散布計算結(jié)構(gòu)基礎(chǔ)上,展現(xiàn)了1個全新的散布構(gòu)件利用模型。
首先,DCOM/COM/COM+的構(gòu)件依然采取普通的COM(ComponentObjectModel)模型。COM最初作為Microsoft桌面系統(tǒng)的構(gòu)件技術(shù),主要為本地的OLE利用服務(wù),但是隨著Microsoft服務(wù)器操作系統(tǒng)NT和DCOM的發(fā)布,COM通過底層的遠程支持使得構(gòu)件技術(shù)延伸到了散布利用領(lǐng)域。DCOM/COM/COM+更將其擴充為面向服務(wù)器端散布利用的業(yè)務(wù)邏輯中間件。通過COM+的相干服務(wù)設(shè)施,如負載均衡、內(nèi)存數(shù)據(jù)庫、對象池、構(gòu)件管理與配置等等,DCOM/COM/COM+將COM、DCOM、MTS的功能有機地統(tǒng)1在1起,構(gòu)成了1個概念、功能強的構(gòu)件利用體系結(jié)構(gòu)。而且,DNA2000是單1廠家提供的散布對象構(gòu)件模型,開發(fā)者使用的是同1廠家提供的系列開發(fā)工具,這比組合多家開發(fā)工具更有吸引力。
針對上述的各種散布計算平臺技術(shù),都出現(xiàn)了相似且具有可比性的散布式構(gòu)件,即CORBACCM(CORBA Component Model)技術(shù)、SUN的EJB(Enterprise JavaBean)技術(shù)和DNA2000中的COM/DCOM/COM+技術(shù)。
我們從集成性、可用性、可擴大性進行比較之前,先了解下這3個特性。
集成性主要反應(yīng)在基礎(chǔ)平臺對利用程序互操作能力的支持上。它要求散布在不同機器平臺和操作系統(tǒng)上、采取不同的語言或開發(fā)工具生成的各類商業(yè)利用必須能集成在1起,構(gòu)成1個統(tǒng)1的企業(yè)計算框架。這1集成框架必須建立在網(wǎng)絡(luò)的基礎(chǔ)之上,并且具有對遺留利用的集成能力;
可用性要求所采取的軟件構(gòu)件技術(shù)必須是成熟的技術(shù),相應(yīng)的產(chǎn)品也必須是成熟的產(chǎn)品,在相當重要的企業(yè)利用中能夠穩(wěn)定、安全、可靠地運行。另外,由于數(shù)據(jù)庫在企業(yè)計算中扮演側(cè)重要角色,軟件構(gòu)件技術(shù)應(yīng)能與數(shù)據(jù)庫技術(shù)緊密集成;
可擴大性,集成框架必須是可擴大的,能夠調(diào)和不同的設(shè)計模式和實現(xiàn)策略,可以根據(jù)企業(yè)計算的需求進行裁剪,并能迅速反應(yīng)市場的變化和技術(shù)的發(fā)展趨勢。通過保證當前利用的可重用性,最大程度地保護企業(yè)的投資。
下表從集成性,可用性,可擴大性3個方面,給出了上述3種主流散布計算平臺的比較結(jié)果。
表格
|
CORBA(CCM) |
Ejb |
DCOM |
集成性
|
|
|
|
跨語言性能 |
好 |
差(限于java) |
好 |
跨平臺性能 |
好 |
好 |
差(限于windows) |
網(wǎng)絡(luò)通訊 |
好 |
好 |
1般 |
公共服務(wù)構(gòu)件 |
好 |
好 |
1般 |
可用性
|
|
|
|
事務(wù)處理 |
好 |
1般 |
1般 |
消息服務(wù) |
1般 |
1般 |
1般 |
安全服務(wù) |
好 |
好 |
1般 |
目錄服務(wù) |
好 |
1般 |
1般 |
容錯性 |
1般 |
1般 |
1般 |
軟件開發(fā)商支持度 |
1般 |
好 |
好 |
產(chǎn)品成熟性 |
1般 |
1般 |
好 |
可擴大性 |
好 |
好 |
1般 |
雖然這3種平臺由于其構(gòu)成的歷史背景和商業(yè)背景有所不同,各自有自己的側(cè)重和特點,其實在它們之間也有很大的相通性和互補性。目前許多平臺都能實現(xiàn)EJB構(gòu)件和CORBA構(gòu)件的互操作。同EJB和CORBA之間相互之間方便的互操作性相比,DOCM和CORBA之間的互操作性要相對復(fù)雜些,由于商業(yè)利益的緣由,在EJB和DCOM之間基本沒有提供互操作方法。
關(guān)于中間件的知識這篇文章就介紹到這里,下篇文章我們繼續(xù)中間件的知識。