應用服務器

定義




應用服務器是指通過各種協議把商業邏輯曝露給客戶端的程序。它提供了訪問商業邏輯的途徑以供客戶端應用程序使用。應用服務器使用此商業邏輯就像調用對象的一個方法一樣。
簡單的說,能實現動態網頁技術的服務器叫做應用服務器。
Web應用程序駐留在應用服務器(Application Server)上。應用服務器爲Web應用程序提供一種簡單的和可管理的對系統資源的訪問機制。它也提供低級的服務,如HTTP協議的實現和數據庫連接管理。Servlet容器僅僅是應用服務器的一部分。除了Servlet容器外,應用服務器還可能提供其他的Java EE(Enterprise Edition)組件,如EJB容器,JNDI服務器以及JMS服務器等。
市場上可以得到多種應用服務器,其中包括Apache的Tomcat、IBM的websphere、Caucho Technology的Resin、Macromedia的JRun、NEC WebOTX Application Server、JBoss Application Server、BEA的WebLogic、IBM的WebSphere等。其中有些如NEC WebOTX Application Server、WebLogic、WebSphere不僅僅是Servlet容器,它們也提供對EJB(Enterprise JavaBeans)、JMS(Java Message Service)以及其他Java EE技術的支持。每種類型的應用服務器都有自己的優點、侷限性和適用性。[1]
2分類




通常,根據確定文檔內容的時間,所有文檔可以劃分爲如下三類。
靜態


靜態:靜態We b 文檔是一個存儲於We b服務器的文件。靜態文檔的作者在寫作的時候確定文檔的內容。由於文檔內容不會變化,所以對靜態文檔的每次訪問都返回相同結果。
動態


動態:動態web文檔不是以一個預先定義的格式存在,而是在瀏覽器訪問web服務器時創建。當一個請求到達時,web服務器運行一個應用程序創建動態文檔(dynamic documents),服務器返回程序的輸出作爲應答。由於每次訪問都要創建新的文檔,動態文檔的內容是變化的。
活動


活動:一個活動文檔不完全由服務器一端說明,而是包括一個計算並顯示值的程序。當瀏覽器訪問活動文檔時,服務器返回一個瀏覽器可以本地執行的程序。當該程序運行時,它可以和用戶交互執行並不停地改變顯示。這樣,活動文檔的內容是不固定的-只要用戶讓程序保持運行,它總是在不停地變化。靜態文檔的主要優點在於它的簡單、可靠性和性能。由於靜態文檔是直接指定格式。它可以由不懂編程的人創建。更重要的是,在已經創建和測試之後,靜態文檔永遠是正確的。最後,瀏覽器可以快速存取文檔,同時通過把文檔放在本地盤上的緩衝區內以加快以後對這些文檔的訪問速度。 靜態文檔的主要缺點是不靈活-當信息變化時文檔必須重新設計。另外,改變是很耗費時間的,因爲它需要人工修改文件。因此,靜態文檔不適合頻繁變化的報告信息。動態文檔的主要優點是它報告當前信息的能力。例如,一個動態文檔可以用來報告股市行情、天氣預報或音樂會售票情況等內容。當瀏覽器申請信息的時候,服務器運行一個應用程序,訪問所需要的信息,並創建一個文檔,服務器於是將該文檔返回給瀏覽器。動態文檔把任務放在服務器一端,瀏覽器採用和靜態文檔同樣的方法訪問動態文檔。實際上,從瀏覽器的角度來看。動態文檔和靜態文檔是無區別的。由於動態文檔和靜態文檔都採用H T M L 編寫,瀏覽器不知道服務器是從一個磁盤文件還是計算機程序中取得文檔。動態文檔的主要缺點是增加成本和不能顯示變化的信息。和靜態文檔類似,動態文檔在瀏覽器取得文檔後不會再改變。因此在信息發送給瀏覽器之後,文檔就開始過時。例如一個報告股市信息的動態文檔,由於股市信息變化迅速,當用戶訪問時文檔很快就過時。動態文檔的創建和訪問成本比靜態文檔昂貴。創建動態文檔的代價較高,因爲動態文檔的創建者必須懂得如何寫程序。另外,程序必須仔細編寫和廣泛測試,以保證輸出的合法性。驗證這樣一個程序的正確性是很困難的,因爲輸入可以包含不同來源的多種數據。動態文檔除了創建成本高,所需的硬件成本也較高,因爲服務器端需要更強大的計算機。最後取出動態文檔需要的時間稍多些,因爲服務器需要額外的時間去運行程序創建文檔。儘管在申請到達時動態文檔才創建,但信息可能很快過時,活動文檔相對於動態文檔的主要優點在於它持續更改信息的能力。例如,只有活動文檔能夠快速改變顯示以顯示動畫。更重要的是,活動文檔能夠直接訪問信息源並連續更改顯示。例如,一個顯示股市行情的活動文檔可以連續讀取股市信息,並且不需要用戶干預而自動修改顯示。活動文檔的主要缺點是創建和運行這種文檔所需的額外費用,同時缺少安全性。首先,活動文檔的顯示需要更復雜的瀏覽器軟件和一個強有力的計算機運行瀏覽器。另外,寫正確的活動文檔比寫其他畫面需要更多的編程技巧,所得到的結果文檔更難於測試。而且,由於活動文檔必須運行在客戶端而不是服務器端,程序必須解決在不同客戶上的兼容性問題,最後,活動文檔存在着潛在的安全性問題,因爲文檔既輸入信息又輸出信息。
3概括




Web 文檔根據文檔內信息改變的時間可分爲三類。靜態文檔的信息只有當作者修改時纔會改變,動態文檔的信息在服務器端收到文檔申請時改變,活動文檔顯示的信息在文檔下載到瀏覽器一端運行後改變。由於創建動態文檔的責任在管理文檔的服務器一端,支持動態文檔也只需修改服務器。實際上,變化意味着擴展,管理動態文檔的服務器也包含了處理靜態文檔的代碼。處理動態文檔的Web服務器需要三個特性。
首先,服務器程序必須擴展,當每次請求到達時,能夠執行一個單獨的創建文檔的應用程序。服務器必須編成能夠捕獲應用程序的輸出,並且將該文檔返回給瀏覽器。
其次,必須爲每個動態文檔寫一個單獨的應用程序。
最後,服務器必須配置成能夠知道哪一個URL 對應於動態文檔和哪一個URL 對應於靜態文檔。對每個動態文檔,配置時必須說明產生文檔的應用程序。每個申請包含着一個對應動態或靜態文檔的URL,服務器使用配置信息和收到的請求中的URL決定如何處理。如果配置信息說明申請中的URL對應着一個靜態文檔,服務器就跟往常一樣取出文件。如果申請中的URL對應着動態文檔,服務器選擇生成該文檔的應用程序,運行程序,並且把程序的輸出作爲文檔返回給瀏覽器。
4區別




應用服務器和WEB服務器的區別
通俗的講,Web服務器傳送(serves)頁面使瀏覽器可以瀏覽,然而應用程序服務器提供的是客戶端應用程序可以調用(call)的方法(methods)。確切一點,你可以說:Web服務器專門處理HTTP請求(request),但是應用程序服務器是通過很多協議來爲應用程序提供(serves)商業邏輯(business logic)。
下面讓我們來細細道來:
Web型


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服務器的代理模型(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)技術。[2]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章