透視應用服務器
討論主題: 透視應用服務器
由於Internet的發展,企業信息系統所扮演的角色發生了根本變化。在Internet
上開放企業系統,可以將其中的信息提供給直接消費者和貿易伙伴。這是過去無法想
象的、嶄新的環境。這個變革來自於應用服務器,這個環境的繼續發展有賴於應用服
務器的進展。
沿 革 篇
應用服務器(Application Server)是適應業務需求、將高級應用作為Web功能
的產品。但是,現在市場上銷售的應用服務器產品,從內容和功能上相差甚遠。各路
廠商迎合市場需求,結合自家特色技術,推出了各色應用服務器產品,雖然都冠以
“應用服務器”,卻難識廬山真面目。為了准確認識、正確選擇應用服務器,在此我
們透過其沿革,分析探討各色應用服務器的長短優劣。
第一代:基於CGI
基於CGI(Common Gateway Interface)的應用服務器以微軟的IIS(Internet Information Server)為代表。IIS原本是用來發布靜態HTML的Web服
務器產品,後來通過CGI、ISAPI(Internet Server Application Programming
Interface)等應用接口和服務器端的腳本等擴充技術,演化成應用服務器。現在,
Internet上的中小規模Web應用,基本上都是這種形態。特別是服務器端腳本,只要
將腳本語言嵌入HTML中,就能很簡單地實現Web應用。所以如果系統功能單純,初學
者也能很容易地構築系統,這是基於CGI的應用服務器的優點。可惜用這種應用服務
器,難以構築嵌入復雜業務邏輯的系統,另外在應對來自多個用戶的處理要求的可伸
縮性方面也存在問題。
第二代:基於Java
近年來出現的應用服務器多數是這種類型的產品,在服務器端運行Java應用,在
客戶端經由Web服務器來利用其功能。這種情況下,有2種方式:一是客戶端也是
Java Applet;另一種客戶端是HTML頁面。
之所以要特意選擇用Java來構築服務器端的應用功能,最主要的理由是,因為近
年來在應用服務器上構築業務邏輯的需求日益高漲。90年代,是主機系統的統治地位
開始動搖、2層C/S系統崛起、系統結構發生巨大變革的時代。特別是C/S系統構築技
術,可說是日新月異,就連主力開發語言,也從C到4GL,而後變成VB,象走馬燈一樣
換代升級。結果,一時間倍受推崇的C/S系統,很多情況下在企業內已經成了包袱。因
此,要凡獨自構築關鍵業務系統的場合,以基於Java的Web應用來構築的逐日增加。
采用Java的服務器端應用,不管是NT、UNIX還是主機系統都能運行,而且還能利用
Internet、中間件和分布對象等新功能。另外,通過將Java應用配置在多個節點,可
實現負載平衡,這樣就能構築可與主機系統相匹敵的大型系統。所以,這種系統是作
為先進的金融系統構築手段,被越來越廣泛的采用,很有生命力。
但是,在至今的基於Java的Web應用中,對於數據庫和中間件的訪問,是用直接
使用API的專有方式實現的,在復用性和應對未來技術變革的能力上,仍有尚待解決的
課題。
第三代:適應Java組件技術
適應Java組件的應用服務器技術,可能對系統開發產生劃時代的影響。許多應用
服務器產品,都在開足馬力加速朝第3代進軍。這裡所說的Java組件,是以EJB
(Enterprise JavaBeans)為中心的服務器端的軟件組件技術。EJB是目前以Java語
言為前提的組件技術規范,由OMG(Object Management Group)制定的CORBA組件,
就是參考EJB的多種語言版的組件模型。在不久的將來,這些組件模型可望具有互操作
性和統一的技術規范。
選 擇 篇
選擇應用服務器應從對應用服務器的要求及實現這些要求的“相應技術”著手,
來說明應用服務器的選擇要領。
開發效率 在飛速發展的電子商務市場競爭中,要求用Web系統在短期內能構築先
進的商業模式,開放適應新商業模式的Web應用功能,以博得廣大用戶的支持。這點至
關重要。要想在競爭中立於不敗之地,必須“以快取勝”,必須選擇開發效率高的Web
應用產品。
用Java構築應用服務器已經成為潮流。因此最重要的是,要有用Java能夠進行高
效開發的綜合環境(Integrate Development Environment)。IBM和Inprise的
Java開發環境,捆綁在自家的軟件包中;而BEA和Oracle則利用其它公司的Java開發
軟件包作為Java開發環境。目前存在的問題是,在這些環境中應用服務器與Java開發
環境的集成性還很不完善。通常在Java開發環境中,能提供詳細測試用的查錯功能,
如分步執行、斷點設定等;但是能對應用服務器實施綜合查錯的工具很少。因此,在
客戶端的本地環境下完成詳細查錯之後,要將構築的模塊移到應用服務器,實施執行
水平的測試。這樣的測試環境,對於習慣於開放系統中的查錯環境的開發者來說,不
能說是完善的。人們渴望有在應用服務器中能進行詳細查錯的、綜合性分散型查錯工
具。
在開發應用服務器時,客戶端用戶接口構築的生產性也是問題。客戶端界面的制
作方法,有用Applet的,還有使用Servlet或HTML制作的。其中,用Applet制作界面
時,在Java開發環境中能提供編輯、制作界面的RAD(Rapid Application
Development,快速應用開發)功能,所以可以高效地進行開發。但在實際應用服務
器開發中,用HTML制作界面的占多數。這種情況下,在應用服務器開發環境下,能夠
直接編輯HTML界面接口的產品較少。為了解決這個問題,由JSP(JavaServerPage,
利用Java動態生成Web頁的服務器端內容腳本)來記述基於HTML的界面圖象的方法將
逐漸成為標准,可望能提供使用JSP的RAD開發功能。
復用性 要再利用原來的業務邏輯,同時還要添加新的組件,才能提升系統水平
和業務處理能力。在考慮技術實現時,既要壓縮開發成本,又要構築能迅速應變的系
統,這對於提高企業的競爭能力至關重要。正由於此,人們渴望系統既能復用在應用
服務器中構築的業務邏輯,又要能充分適應、跟蹤新的業務需求。
在Web應用開發中,充分、有效、活用EJB,是提高復用性的技術關鍵。所謂
EJB,就是以將服務器端的業務邏輯部件化為目標的Java組件技術,包括EJB服務器
(EJB執行環境)以及EJB組件(組件管理環境)。EJB包括Entity Beans和Session
Beans。Entity Beans是持久性對象,就是將數據庫的數據可以作為對象部件來使
用。若用Entity Beans,就可以讀取數據庫上的數據、生成對象部件,並能將更新結
果反映到數據庫上。這樣的Entity Beans,目前都是由應用服務器端來提供的,但據
說Oracle等數據庫廠商,計劃要讓Entity Beans在數據庫端運行。Session Beans是
非持久性對象,臨時生成的對象部件,用來將操作Entity Beans的業務邏輯部件化。
譬如,在不變更數據結構只修改業務規則的時候,只變更Session Beans即可。另
外,Session Beans也被用在與MQ和CICS這類中間件連接的場合。就是說,可以將經
由中間件、能訪問主機系統等歷史遺留業務的功能,進行部件化。這樣,通過充分有
效的活用EJB,就可以將業務邏輯和對歷史遺留系統的訪問功能部件化,以實現復
用。
可伸縮性和可靠性 過去的企業系統基本上是以本企業的用戶為主,用戶數也不
是太多。但用應用服務器構築的系統,不僅是企業內部,通過Internet,可以對全世
界的顧客和商業伙伴開放。因此,在可伸縮性和可靠性方面,對於應用服務器就提出
了更高的要求。而且,由Internet所形成的電子商務市場在急速增長,交易額和用戶
數也直線增長,而且這些用戶是一天24小時不停的訪問。因此,如果應用服務器不能
應對日益增大的處理量,就會贻誤商機。
負載平衡 要有把處理適當地分配給多個服務器,以求獲得負荷分散的功能。由
於有負荷均衡功能,所以可以實現系統的大型化。
分散事務處理 在用多個服務器處理關鍵業務時,數據更新中的一致性是個問
題。為了解決這個問題,要有相應的分散事務控制功能。
DB Session Pulling(會話引入) 在應用服務器中,多個程序即使是同時訪問
數據庫,也必須確保事先定好的會話個數,以便能更有效的利用數據庫。
故障切換 為了提高系統的正常運行率,要准備待機(熱備份)服務器,以便在
發生故障時,可以將處理轉移到待機系統。
點 評 篇
按照選擇應用服務器的3個要素,給主要的應用服務器產品一個大致的定位。
生產性和復用性
第一代產品的代表是Microsoft IIS,最近可以用Interdev、ASP(Active
Server Pages)和MTS(Microsoft Transaction Server)進行開發,但與第二
代、第三代產品相比,在內容上仍屈居下風。特別是要用IIS來構築具有可伸縮性的系
統時,需要使用C++編碼,生產性和復用性明顯低下。相反,SilverStream,卻有應
用服務器能用RAD制作界面和功能的特點,尤其是在新開發時生產性特別高,所以非常
適合想在短期內構築系統、開始營業的場合。從3.0版本以後,SilverStream也適應
EJB。
其它的第三代產品,生產性雖然不如SilverStream高,但有效利用EJB組件技術
的復用性可望得到提升。但必須要注意的是,EJB的設計難,一旦有誤往往會造成系統
性能很低。
可伸縮性和可靠性
第一代產品的可伸縮性和可靠性都較差。相反,SilverStream盡管是RAD開發環境,但要達到中等規模、中等可靠性水平,技術上還是充分的。今後,SilverStream計劃要適應大規模系統,與其它第三代產品的差距會逐漸縮小。不過,第三代產品,不管哪種結構都有滿足大規模、高可靠性系統所要求的技術條件。
第三代產品各有特色,似乎不宜進行簡單的比較。但從實際應用的角度,應該對每個產品的特點有所了解。
BEA WebLogic 在適應EJB方面,技術超群。
IBM WebSphere 雖然在適應EJB方面起步稍晚,但能有效活用MQ和CICS等中間件,所以可望在企業環境能獲得廣泛應用。
Oracle Application Server 在系統體系結構上尚存在斟酌之處,數據庫本身也要適應EJB,應用服務器和數據庫在整體系統中各自所扮演的角色、分工還不明確。這個問題一旦解決,無疑這個產品是相當有誘惑力的。
Netscape Application Server和NetDynamics 計劃在2000年上半年將Netscape和SUN的產品集成起