應用伺服器
將商業邏輯曝露給客戶端的程序
應用伺服器是指通過各種協議把商業邏輯曝露給客戶端的程序。它提供了訪問商業邏輯的途徑以供客戶端應用程序使用。應用伺服器使用此商業邏輯就像調用對象的一個方法一樣。
隨著Internet的發展壯大,“主機/終端”或“客戶機/伺服器”的傳統的應用系統模式已經不能適應新的環境,於是就產生了新的分散式應用系統,相應地,新的開發模式也應運而生,即所謂的“瀏覽器/伺服器”結構、“瘦客戶機”模式。應用伺服器便是一種實現這種模式核心技術。
Web應用程序駐留在應用伺服器(Application Server)上。應用伺服器為Web應用程序提供一種簡單的和可管理的對系統資源的訪問機制。它也提供低級的服務,如HTTP協議的實現和資料庫連接管理。Servlet容器僅僅是應用伺服器的一部分。除了Servlet容器外,應用伺服器還可能提供其他的Java EE(Enterprise Edition)組件,如EJB容器,JNDI伺服器以及JMS伺服器等。
市場上可以得到多種應用伺服器,其中包括Apache的Tomcat、IBM的WebSphere Application Server、Caucho Technology的Resin、Macromedia的JRun、NEC WebOTX Application Server、JBoss Application Server、Oracle(併購了BEA)的WebLogic等。其中有些如NEC WebOTX Application Server、WebLogic、WebSphere不僅僅是Servlet容器,它們也提供對EJB(Enterprise JavaBeans)、JMS(Java Message Service)以及其他Java EE技術的支持。每種類型的應用伺服器都有自己的優點、局限性和適用性。
通常,根據確定文檔內容的時間,所有文檔可以劃分為如下三類。
靜態:靜態Web 文檔是一個存儲於Web伺服器的文件。靜態文檔的作者在寫作的時候確定文檔的內容。由於文檔內容不會變化,所以對靜態文檔的每次訪問都返回相同結果。
動態:動態web文檔不是以一個預先定義的格式存在,而是在瀏覽器訪問web伺服器時創建。當一個請求到達時,web伺服器運行一個應用程序創建動態文檔(dynamic documents),伺服器返回程序的輸出作為應答。由於每次訪問都要創建新的文檔,動態文檔的內容是變化的。
活動:一個活動文檔不完全由伺服器一端說明,而是包括一個計算並顯示值的程序。當瀏覽器訪問活動文檔時,伺服器返回一個瀏覽器可以本地執行的程序。當該程序運行時,它可以和用戶交互執行並不停地改變顯示。這樣,活動文檔的內容是不固定的-只要用戶讓程序保持運行,它總是在不停地變化。靜態文檔的主要優點在於它的簡單、可靠性和性能。由於靜態文檔是直接指定格式。它可以由不懂編程的人創建。更重要的是,在已經創建和測試之後,靜態文檔永遠是正確的。最後,瀏覽器可以快速存取文檔,同時通過把文檔放在本地盤上的緩衝區內以加快以後對這些文檔的訪問速度。靜態文檔的主要缺點是不靈活-當信息變化時文檔必須重新設計。另外,改變是很耗費時間的,因為它需要人工修改文件。因此,靜態文檔不適合頻繁變化的報告信息。動態文檔的主要優點是它報告當前信息的能力。例如,一個動態文檔可以用來報告股市行情、天氣預報或音樂會售票情況等內容。當瀏覽器申請信息的時候,伺服器運行一個應用程序,訪問所需要的信息,並創建一個文檔,伺服器於是將該文檔返回給瀏覽器。動態文檔把任務放在伺服器一端,瀏覽器採用和靜態文檔同樣的方法訪問動態文檔。實際上,從瀏覽器的角度來看。動態文檔和靜態文檔是無區別的。由於動態文檔和靜態文檔都採用H T M L 編寫,瀏覽器不知道伺服器是從一個磁碟文件還是計算機程序中取得文檔。動態文檔的主要缺點是增加成本和不能顯示變化的信息。和靜態文檔類似,動態文檔在瀏覽器取得文檔后不會再改變。因此在信息發送給瀏覽器之後,文檔就開始過時。例如一個報告股市信息的動態文檔,由於股市信息變化迅速,當用戶訪問時文檔很快就過時。動態文檔的創建和訪問成本比靜態文檔昂貴。創建動態文檔的代價較高,因為動態文檔的創建者必須懂得如何寫程序。另外,程序必須仔細編寫和廣泛測試,以保證輸出的合法性。驗證這樣一個程序的正確性是很困難的,因為輸入可以包含不同來源的多種數據。動態文檔除了創建成本高,所需的硬體成本也較高,因為伺服器端需要更強大的計算機。最後取出動態文檔需要的時間稍多些,因為伺服器需要額外的時間去運行程序創建文檔。儘管在申請到達時動態文檔才創建,但信息可能很快過時,活動文檔相對於動態文檔的主要優點在於它持續更改信息的能力。例如,只有活動文檔能夠快速改變顯示以顯示動畫。更重要的是,活動文檔能夠直接訪問信息源並連續更改顯示。例如,一個顯示股市行情的活動文檔可以連續讀取股市信息,並且不需要用戶干預而自動修改顯示。活動文檔的主要缺點是創建和運行這種文檔所需的額外費用,同時缺少安全性。首先,活動文檔的顯示需要更複雜的瀏覽器軟體和一個強有力的計算機運行瀏覽器。另外,寫正確的活動文檔比寫其他畫面需要更多的編程技巧,所得到的結果文檔更難於測試。而且,由於活動文檔必須運行在客戶端而不是伺服器端,程序必須解決在不同客戶上的兼容性問題,最後,活動文檔存在著潛在的安全性問題,因為文檔既輸入信息又輸出信息。
Web 文檔根據文檔內信息改變的時間可分為三類。靜態文檔的信息只有當作者修改時才會改變,動態文檔的信息在伺服器端收到文檔申請時改變,活動文檔顯示的信息在文檔下載到瀏覽器一端運行后改變。由於創建動態文檔的責任在管理文檔的伺服器一端,支持動態文檔也只需修改伺服器。實際上,變化意味著擴展,管理動態文檔的伺服器也包含了處理靜態文檔的代碼。處理動態文檔的Web伺服器需要三個特性。
首先,伺服器程序必須擴展,當每次請求到達時,能夠執行一個單獨的創建文檔的應用程序。伺服器必須編成能夠捕獲應用程序的輸出,並且將該文檔返回給瀏覽器。
其次,必須為每個動態文檔寫一個單獨的應用程序。
最後,伺服器必須配置成能夠知道哪一個URL 對應於動態文檔和哪一個URL 對應於靜態文檔。對每個動態文檔,配置時必須說明產生文檔的應用程序。每個申請包含著一個對應動態或靜態文檔的URL,伺服器使用配置信息和收到的請求中的URL決定如何處理。如果配置信息說明申請中的URL對應著一個靜態文檔,伺服器就跟往常一樣取出文件。如果申請中的URL對應著動態文檔,伺服器選擇生成該文檔的應用程序,運行程序,並且把程序的輸出作為文檔返回給瀏覽器。
應用伺服器和WEB伺服器的區別
通俗的講,Web伺服器傳送(serves)頁面使瀏覽器可以瀏覽,然而應用程序伺服器提供的是客戶端應用程序可以調用(call)的方法(methods)。確切一點,你可以說:Web伺服器專門處理HTTP請求(request),但是應用程序伺服器是通過很多協議來為應用程序提供(serves)商業邏輯(business logic)。
下面讓我們來細細道來:
Web伺服器(Web Server)可以解析(handles)HTTP協議。當Web伺服器接收到一個HTTP請求(request),會返回一個HTTP響應 (response),例如送回一個HTML頁面。為了處理一個請求(request),Web伺服器可以響應(response)一個靜態頁面或圖片,進行頁面跳轉(redirect),或者把動態響應(dynamic response)的產生委託(delegate)給一些其它的程序例如CGI腳本,JSP(JavaServer Pages)腳本,servlets,ASP(Active Server Pages)腳本,伺服器端(server-side)JavaScript,或者一些其它的伺服器端(server-side)技術。無論它們(譯者 註:腳本)的目的如何,這些伺服器端(server-side)的程序通常產生一個HTML的響應(response)來讓瀏覽器可以瀏覽。
企業WEB伺服器是面向企業網路用戶的信息交流平台,WEB在企業生產管理過程中的應用越來越多,是信息化應用的入口,一些應用系統都集成在WEB伺服器上。要知道,Web伺服器的代理模型(delegation model)非常簡單。當一個請求(request)被送到Web伺服器里來時,它只單純的把請求(request)傳遞給可以很好的處理請求 (request)的程序(譯者註:伺服器端腳本)。Web伺服器僅僅提供一個可以執行伺服器端(server-side)程序和返回(程序所產生的)響 應(response)的環境,而不會超出職能範圍。伺服器端(server-side)程序通常具有事務處理(transaction processing),資料庫連接(database connectivity)和消息(messaging)等功能。
雖然Web 伺服器不支持事務處理或資料庫連接池,但它可以配置(employ)各種策略(strategies)來實現容錯性(fault tolerance)和可擴展性(scalability),例如負載平衡(load balancing),緩衝(caching)。集群特徵(clustering-features)經常被誤認為僅僅是應用程序伺服器專有的特徵。
應用程序伺服器(The Application Server)
根據定義,作為應用程序伺服器,它通過各種協議,可以包括HTTP,把商業邏輯暴露給(expose)客戶端應用程序。Web伺服器主要是處理向 瀏覽器發送HTML以供瀏覽,而應用程序伺服器提供訪問商業邏輯的途徑以供客戶端應用程序使用。應用程序使用此商業邏輯就像你調用對象的一個方法(或過程 語言中的一個函數)一樣。
應用程序伺服器的客戶端(包含有圖形用戶界面(GUI)的)可能會運行在一台PC、一個Web伺服器或者甚至 是其它的應用程序伺服器上。在應用程序伺服器與其客戶端之間來回穿梭(traveling)的信息不僅僅局限於簡單的顯示標記。相反,這種信息就是程序邏 輯(program logic)。正是由於這種邏輯取得了(takes)數據和方法調用(calls)的形式而不是靜態HTML,所以客戶端才可以隨心所欲的使用這種被暴露的商業邏輯。
在大多數情形下,應用程序伺服器是通過組件(component)的應用程序介面(API)把商業邏輯暴露(expose)(給客戶端應用程序)的,例 如基於J2EE(Java 2 Platform, Enterprise Edition)應用程序伺服器的EJB(Enterprise JavaBean)組件模型。此外,應用程序伺服器可以管理自己的資源,例如看大門的工作(gate-keeping duties)包括安全(security),事務處理(transaction processing),資源池(resource pooling),和消息(messaging)。就象Web伺服器一樣,應用程序伺服器配置了多種可擴展(scalability)和容錯(fault tolerance)技術。
IMS網路是一個基於IP承載並向用戶提供各項多媒體服務的開放系統, AS(Application Server,應用伺服器),是IMS系統中位於最上層的應用層設備。AS網元與CSCF之間通過標準SIP協議進行交互,進而實現各種網路業務的觸發和執行。
具體來說,目前IMS網路中的應用伺服器AS提供以下幾方面的業務應用:
• 基本業務和補充業務
IMS網路中的基本業務包括點到點的語音呼叫、視頻呼叫以及呼叫異常提示,點到點指呼叫可以是兩個IMS用戶之間,也可以是IMS用戶與其他網路的用戶,如PSTN固話用戶、移動網GSM用戶等;呼叫異常提示指在被叫忙、無應答、號碼空號、主叫欠費等各種條件下的語音和視頻呼叫,給主叫用戶播放通知音;IMS網路中提供的補充業務種類包括弧碼顯示、呼叫轉移、呼叫限制、呼叫完成以及多方通話業務等。
• 多媒體會議
多方通話是建立在至少三個用戶之間的網路應用,其中任意一個人的語音可以被會議中的所有其他人員聽到,多媒體會議在多方通話傳輸語音信息的基礎上,又提供了視頻圖像,從而使人們之間進行交互的媒體種類更加的豐富。
• 融合通訊
提供用戶在網際網路上的各類通訊方式和業務,比如即時消息(IM: Instant Message)、文件和視頻共享等。
除此之外,AS提供的業務功能還包括簡訊網關、標準話務台、群業務等,極大地豐富了IMS網路的各種應用。