天天看點

應用伺服器:選擇J2EE還是.NET?

(作者:中國科學院軟體研究所 範國闖 陳甯江)

  目前在Internet/Intranet/Extranet環境中,企業級應用系統大多采用三層或多層應用模式。為了友善開發、部署、運作和管理基于多層結構的應用,需要以網絡和分布式計算的底層技術為基礎,建構一個完整的應用架構,提供相應的支撐平台作為多層應用的基礎設施,這一支撐平台的關鍵就是位于中間層的應用伺服器。應用伺服器是一個建立、部署、運作、內建和維護多層分布式企業級應用的平台。如果應用伺服器與Web伺服器相結合,或者包含了Web伺服器的功能,則稱之為Web應用伺服器。

  在企業應用中,應用伺服器可以提供如下好處:提高企業應用開發的有效性,保障業務邏輯群組件的重用性;提高企業應用的性能,如高運作性能和響應時間、可伸縮性、可靠性等;使企業應用更易于監控和管理,降低系統維護和更新成本。由于應用伺服器的重要作用和關鍵地位,它已經成為當今業界的一個熱點。

技術決定陣營

  從實作技術的角度看,可以将應用伺服器劃分為基于J2EE的解決方案、Microsoft .NET解決方案和其他技術3大類。

  近年在應用伺服器市場上最具意義的進展,就是J2EE(Java 2 Platform Enterprise Edition)的出現。J2EE 是Sun公司提出的開發、部署、運作和管理基于Java分布式應用的标準平台。它以Java 2平台标準版(J2SE)為基礎,繼承了标準版的許多優點,還提供了對EJB、Java Servlet、JSP等技術的全面支援。J2EE使用EJB Server作為商業元件的部署環境,在EJB Server中提供了分布式計算環境中元件需要的服務,例如元件生命周期的管理、資料庫連接配接的管理、分布式事務的支援、元件的命名服務等。J2EE用于實作應用伺服器有其優勢,它可以利用Java語言自身具有的跨平台性、可移植性、對象特性、記憶體管理等方面的性能,為應用伺服器的實作提供一個完整的底層架構。J2EE中定義的各種服務,包括JSP和Servlet容器、EJB容器、JDBC、JNDI(名字目錄服務)、JTS/JTA(事務服務)、JMS(消息服務)等,也分别為應用伺服器提供了各種支援。目前,基于J2EE的應用伺服器主要有BEA WebLogic、IBM Websphere、Oracle 9iAS、Sun iPlanet、SilverStream eXtend等。

  另一方面,微軟在應用伺服器上的解決方案代表了另一種思路,可以說,選擇了微軟的應用伺服器解決方案也就意味着選擇了完全的微軟平台。微軟的目标是分布式的Web應用開發環境,它并沒有提供一個類似通常所說的應用伺服器的軟體或軟體包,而是将Windows NT/2000看做其應用伺服器的基礎,通過附加一系列具備中間件功能的軟體包來實作應用伺服器平台。目前,應用伺服器的實作展現在微軟命名為.Net的Web應用開發架構中。.NET戰略引入了許多新概念,包含了一些新的技術,如Web Services和C#語言,但.NET在很大程度上是微軟以前開發的企業級應用平台DNA的重新包裝。微軟在.NET中提供了一系列企業級伺服器,為部署、管理和建立基于XML和Web的應用構築了.NET伺服器結構,包括Application Center、BizTalk Server、Commerce Server、Exchange Server、SQL Server等,它們結合Windows平台上的一系列開發工具和技術(包括Visual Studio .NET、ASP .NET等),提供了強有力的應用伺服器解決方案。

  由于應用需求和技術的原因,尚有一些應用伺服器使用其他語言和技術實作。Macromedia公司的ColdFusion伺服器就是采用标記語言CFML(ColdFusion Markup Language)實作,使得熟悉HTML的開發者能夠簡單快速地進行應用開發,在開發的簡單性和快速的生産力方面較有優勢。ColdFusion的目标是緻力于中小型的企業應用環境,但是它也具有高性能和良好的可靠性,在市場上仍能占有一定的份額。PHP是開放源代碼的伺服器端腳本語言,它為實作應用伺服器提供了一種易于程式設計的實作手段,PHP應用伺服器的代表有Midgard和PhpLens。Zope則是使用Python語言編寫的開放源碼應用伺服器,它也為Web應用提供了完整的實作架構和手段。

選擇的标準

  由于目前應用伺服器産品的功能多樣,實作不盡相同,各自的描述和了解有所混淆。為了幫助企業選擇合适的應用伺服器建構企業多層應用,快速實作企業資訊化,筆者建議從應用伺服器的基本特性和擴充特性兩個方面來考察企業應用伺服器。

  基本特性是指應用伺服器的實作應該包括的基本運作環境和支援标準:國際标準的相容性,指對J2EE等标準的支援程度(.NET除外);作業系統,指支援應用伺服器運作的作業系統平台;Web伺服器,指應用伺服器對Web伺服器的支援政策(如内置或內建)及Web伺服器産品;資料層支援,指支援的資料庫連接配接标準(JDBC/ODBC)和資料庫産品;對象模型支援,指對主要分布式對象模型(EJB/CORBA/DCOM)的支援。

  擴充特性描述了應用伺服器為獲得高性能和競争能力而需要提供的特性,主要包括:

  可用性 指系統在預期的長時間内可以進行的持續性操作,保證和提高應用伺服器的運作性能和可靠性。用于提供可用性的技術主要有負載均衡、失效恢複、緩存等。

  可伸縮性 指使用者負載增加後,系統仍能維持同樣的響應時間。用于提供可伸縮性的技術主要是叢集。(需要說明的是,叢集也可用于實作可用性)。

  可管理性 指對應用伺服器及部署在其上的應用進行管理的能力,包括元件的部署能力、系統資源和性能的監控和調整能力等。

  安全性 指保證應用和資料安全的特性,包括加密、通路控制、目錄服務、認證和授權等服務。

  內建性 指應用伺服器具有哪些與其他應用系統連接配接和內建的能力。

  開發有效性 指支援建立各層應用開發的能力,用于幫助提高在應用伺服器平台上的開發效率。

  Web Services支援 Web Services是Internet上電子商務的标準,它允許企業應用通過标準的協定互相通路,也被認為是下一代Inetrnet上企業應用的标準,是以應用伺服器有支援Web Services的必要。

趨勢前瞻

  在各種應用伺服器的解決方案中,J2EE和微軟.net是兩大主流陣營,占據了絕大部分的市場。不過需要注意差別的是,.NET是一個産品套件,是産品戰略,而J2EE是編寫産品時的标準,二者在能力上各有千秋。例如,在對已有系統的內建能力方面,J2EE要優于.NET,它通過JCA(Java Connector API)可以更容易地将已有的企業應用進行內建。微軟的解決方案則在Windows平台上提供了一系列快速開發和部署應用的工具,但由于微軟對Java的支援并不好,是以在一定程度上影響了其接受程度。J2EE的接受程度則較高,因為它定義了一個應用伺服器在Java體系結構下的基本服務和能力的規範,為不同廠商的應用伺服器産品的标準化提供了一條可行途徑。J2EE應用伺服器可以使使用者在此标準下建立的應用程式都能運作于其上,更重要的是,在滿足J2EE相容性的條件下,在不同的應用伺服器上的應用元件可以很好地互操作,這樣可以降低移植的風險和代價,提高應用的靈活性,有助于保護使用者的投資。是以,許多應用伺服器廠商已經轉向采用J2EE标準,而且所實作的J2EE應用伺服器在Windows平台上也可以很好地工作。

  雖然目前很難說J2EE和.NET哪一個會在競争中獲勝,但是可以肯定,采用J2EE應用伺服器具有切實的可行性,擁有良好的前景,是應用伺服器研究和開發中的一個正确方向。