應用服務器:選擇J2EE還是.NET? (作者:中國科學院軟件研究所 范國闖 陳寧江) 目前在Internet/Intranet/Extranet環(huán)境中,企業(yè)級應用系統(tǒng)大多采用三層或多層應用模式。為了方便開發(fā)、部署、運行和管理基于多層結(jié)構(gòu)的應用,需要以網(wǎng)絡和分布式計算的底層技術為基礎,構(gòu)建一個完整的應用框架,提供相應的支撐平臺作為多層應用的基礎設施,這一支撐平臺的關鍵就是位于中間層的應用服務器。應用服務器是一個創(chuàng)建、部署、運行、集成和維護多層分布式企業(yè)級應用的平臺。如果應用服務器與Web服務器相結(jié)合,或者包含了Web服務器的功能,則稱之為Web應用服務器。 在企業(yè)應用中,應用服務器可以提供如下好處:提高企業(yè)應用開發(fā)的有效性,保障業(yè)務邏輯和組件的重用性;提高企業(yè)應用的性能,如高運行性能和響應時間、可伸縮性、可靠性等;使企業(yè)應用更易于監(jiān)控和管理,降低系統(tǒng)維護和升級成本。由于應用服務器的重要作用和關鍵地位,它已經(jīng)成為當今業(yè)界的一個熱點。 技術決定陣營 從實現(xiàn)技術的角度看,可以將應用服務器劃分為基于J2EE的解決方案、Microsoft .NET解決方案和其他技術3大類。 近年在應用服務器市場上最具意義的進展,就是J2EE(Java 2 Platform Enterprise Edition)的出現(xiàn)。J2EE 是Sun公司提出的開發(fā)、部署、運行和管理基于Java分布式應用的標準平臺。它以Java 2平臺標準版(J2SE)為基礎,繼承了標準版的許多優(yōu)點,還提供了對EJB、Java Servlet、JSP等技術的全面支持。J2EE使用EJB Server作為商業(yè)組件的部署環(huán)境,在EJB Server中提供了分布式計算環(huán)境中組件需要的服務,例如組件生命周期的管理、數(shù)據(jù)庫連接的管理、分布式事務的支持、組件的命名服務等。J2EE用于實現(xiàn)應用服務器有其優(yōu)勢,它可以利用Java語言自身具有的跨平臺性、可移植性、對象特性、內(nèi)存管理等方面的性能,為應用服務器的實現(xiàn)提供一個完整的底層框架。J2EE中定義的各種服務,包括JSP和Servlet容器、EJB容器、JDBC、JNDI(名字目錄服務)、JTS/JTA(事務服務)、JMS(消息服務)等,也分別為應用服務器提供了各種支持。目前,基于J2EE的應用服務器主要有BEA WebLogic、IBM Websphere、Oracle 9iAS、Sun iPlanet、SilverStream eXtend等。 另一方面,微軟在應用服務器上的解決方案代表了另一種思路,可以說,選擇了微軟的應用服務器解決方案也就意味著選擇了完全的微軟平臺。微軟的目標是分布式的Web應用開發(fā)環(huán)境,它并沒有提供一個類似通常所說的應用服務器的軟件或軟件包,而是將Windows NT/2000看做其應用服務器的基礎,通過附加一系列具備中間件功能的軟件包來實現(xiàn)應用服務器平臺。目前,應用服務器的實現(xiàn)體現(xiàn)在微軟命名為.Net的Web應用開發(fā)框架中。.NET戰(zhàn)略引入了許多新概念,包含了一些新的技術,如Web Services和C#語言,但.NET在很大程度上是微軟以前開發(fā)的企業(yè)級應用平臺DNA的重新包裝。微軟在.NET中提供了一系列企業(yè)級服務器,為部署、管理和建立基于XML和Web的應用構(gòu)筑了.NET服務器結(jié)構(gòu),包括Application Center、BizTalk Server、Commerce Server、Exchange Server、SQL Server等,它們結(jié)合Windows平臺上的一系列開發(fā)工具和技術(包括Visual Studio .NET、ASP .NET等),提供了強有力的應用服務器解決方案。 由于應用需求和技術的原因,尚有一些應用服務器使用其他語言和技術實現(xiàn)。Macromedia公司的ColdFusion服務器就是采用標記語言CFML(ColdFusion Markup Language)實現(xiàn),使得熟悉HTML的開發(fā)者能夠簡單快速地進行應用開發(fā),在開發(fā)的簡單性和快速的生產(chǎn)力方面較有優(yōu)勢。ColdFusion的目標是致力于中小型的企業(yè)應用環(huán)境,但是它也具有高性能和良好的可靠性,在市場上仍能占有一定的份額。PHP是開放源代碼的服務器端腳本語言,它為實現(xiàn)應用服務器提供了一種易于編程的實現(xiàn)手段,PHP應用服務器的代表有Midgard和PhpLens。Zope則是使用Python語言編寫的開放源碼應用服務器,它也為Web應用提供了完整的實現(xiàn)框架和手段。 選擇的標準 由于目前應用服務器產(chǎn)品的功能多樣,實現(xiàn)不盡相同,各自的描述和理解有所混淆。為了幫助企業(yè)選擇合適的應用服務器構(gòu)建企業(yè)多層應用,快速實現(xiàn)企業(yè)信息化,筆者建議從應用服務器的基本特性和擴展特性兩個方面來考察企業(yè)應用服務器。 基本特性是指應用服務器的實現(xiàn)應該包括的基本運行環(huán)境和支持標準:國際標準的兼容性,指對J2EE等標準的支持程度(.NET除外);操作系統(tǒng),指支持應用服務器運行的操作系統(tǒng)平臺;Web服務器,指應用服務器對Web服務器的支持策略(如內(nèi)置或集成)及Web服務器產(chǎn)品;數(shù)據(jù)層支持,指支持的數(shù)據(jù)庫連接標準(JDBC/ODBC)和數(shù)據(jù)庫產(chǎn)品;對象模型支持,指對主要分布式對象模型(EJB/CORBA/DCOM)的支持。 擴展特性描述了應用服務器為獲得高性能和競爭能力而需要提供的特性,主要包括:
可伸縮性 指用戶負載增加后,系統(tǒng)仍能維持同樣的響應時間。用于提供可伸縮性的技術主要是集群。(需要說明的是,集群也可用于實現(xiàn)可用性)。 可管理性 指對應用服務器及部署在其上的應用進行管理的能力,包括組件的部署能力、系統(tǒng)資源和性能的監(jiān)控和調(diào)整能力等。 安全性 指保證應用和數(shù)據(jù)安全的特性,包括加密、訪問控制、目錄服務、認證和授權等服務。 集成性 指應用服務器具有哪些與其他應用系統(tǒng)連接和集成的能力。 開發(fā)有效性 指支持建立各層應用開發(fā)的能力,用于幫助提高在應用服務器平臺上的開發(fā)效率。 Web Services支持 Web Services是Internet上電子商務的標準,它允許企業(yè)應用通過標準的協(xié)議互相訪問,也被認為是下一代Inetrnet上企業(yè)應用的標準,所以應用服務器有支持Web Services的必要。 趨勢前瞻 在各種應用服務器的解決方案中,J2EE和微軟.net是兩大主流陣營,占據(jù)了絕大部分的市場。不過需要注意區(qū)別的是,.NET是一個產(chǎn)品套件,是產(chǎn)品戰(zhàn)略,而J2EE是編寫產(chǎn)品時的標準,二者在能力上各有千秋。例如,在對已有系統(tǒng)的集成能力方面,J2EE要優(yōu)于.NET,它通過JCA(Java Connector API)可以更容易地將已有的企業(yè)應用進行集成。微軟的解決方案則在Windows平臺上提供了一系列快速開發(fā)和部署應用的工具,但由于微軟對Java的支持并不好,所以在一定程度上影響了其接受程度。J2EE的接受程度則較高,因為它定義了一個應用服務器在Java體系結(jié)構(gòu)下的基本服務和能力的規(guī)范,為不同廠商的應用服務器產(chǎn)品的標準化提供了一條可行途徑。J2EE應用服務器可以使用戶在此標準下創(chuàng)建的應用程序都能運行于其上,更重要的是,在滿足J2EE兼容性的條件下,在不同的應用服務器上的應用組件可以很好地互操作,這樣可以降低移植的風險和代價,提高應用的靈活性,有助于保護用戶的投資。因此,許多應用服務器廠商已經(jīng)轉(zhuǎn)向采用J2EE標準,而且所實現(xiàn)的J2EE應用服務器在Windows平臺上也可以很好地工作。 雖然目前很難說J2EE和.NET哪一個會在競爭中獲勝,但是可以肯定,采用J2EE應用服務器具有切實的可行性,擁有良好的前景,是應用服務器研究和開發(fā)中的一個正確方向。 |
|