『壹』 計算機網路——應用層-Web&HTTP
計算機網路系列博文——目錄
20世紀90年代初
網際網路應用
Web應用的組成
由對象組成。對象是一個文件,如HTML文件,JPEG圖像,Java程序,視頻片段等。
對象可通過一個URL地址定址。
Web頁面常由一個HTML基本文件和多個引用對象構成。
URL(Uniform Resoure Locator):統一資源定位器 RFC1738
用以定址Web對象
由一個存放對象的伺服器主機名和對象路徑名構成。
HTTP 由客戶端程序和服務端程序實現,二者通過交換HTTP報文會話。
HTTP規范定義了HTTP客戶端和服務端之間的通信協議。
Web瀏覽器實現HTTP客戶端,請求、接收、展示Web對象
Web伺服器實現HTTP服務端,響應客戶的請求,發送對象
HTTP使用TCP作為支撐運輸層協議。
埠:80
無狀態協議 伺服器不保存關於客戶的任何信息
伺服器向客戶發送被請求的文件,而不存儲任何關於客戶的狀態信息。
往返時間(Round-Trip Time,RTT)
一個短分組從客戶到伺服器然後再返回客戶所花費的時間。
某客戶和伺服器的一次會話中,每個請求/響應對通過一個單獨的TCP連接傳輸
HTTP 1.0版本使用非持續性連接
對多個待獲得的web對象,客戶端一次只請求一個對象,待前一個對象接收完畢後再發送對下一個對象的請求。
時間分析
瀏覽器通常支持並行的TCP連接。並行TCP連接數通常為5~10個。
對多個待獲得的web對象,客戶端一次可同時建立多個TCP連接,以同時請求多個web對象。
時間分析
某客戶和伺服器的一次會話中,所有請求/響應對經同一TCP連接傳輸
HTTP 1.1版本在默認方式下採用持續連接,但也可由客戶端/伺服器配置為非持續連接。
客戶端只有收到前一個響應後才發送新的請求
可理解為同個TCP內的串列
時間分析
客戶端只要遇到一個引用對象就盡快發出請求
可理解為同個TCP內的並行
HTTP 1.1的默認選項
時間分析
TCP 三次握手
1.客戶向伺服器發送一個小TCP報文段;
2.伺服器用一個小TCP報文段做出確認和響應;
3.客戶向伺服器返回確認和一個HTTP請求報文;
4.伺服器返回相應HTML文件;
HTTP規范
RFC 1945 , RFC 2616
用ASCII文本書寫
HTTP協議有兩類消息,請求消息(request)和響應消息(response)
請求行 HTTP請求報文的第一行
方法
首部行 請求行後繼的其它行,包含一些會話信息
空行 回車換行,分隔首部行和實體體
實體體(entity body)
GET方法下實體體為空
POST方法下實體體包含表單信息
狀態行
常見狀態碼
首部行
空行
實體體
包含了所請求的對象
HTTP是無狀態協議,但cookie技術允許伺服器識別用戶
cookie在無狀態的HTTP之上建立一個用戶會話層
參見 [RFC 6265]
cookie組件
cookie技術的爭議在於它可能泄露用戶的隱私
代表原Web伺服器來響應HTTP請求的網路實體
Web緩沖器通常由ISP購買並安裝
允許緩存器證實其緩存的副本是新的。
如果緩存器有web對象最新的版本,則初始伺服器不需要向緩存器發送該web對象
在HTTP請求消息中聲明所持有版本的日期
If-modified-since: <date>
如果緩存的版本是最新的,則響應消息中不包含對象
HTTP/1.0 304 Not Modified
內容分發網路(Content Distribution Network,CDN)
基於緩存器技術,CDN公司在網際網路上安裝許多地理上分散的緩存器,使得大流量本地化。
有共享CDN(Akamai,Limelight),專用CDN(谷歌,微軟)
『貳』 webservice有哪些協議
WebService有哪些協議?
這個問題問的可能會有點問題.
首先:
Web service是一個平台獨立的,低耦合的,自包含的、基於可編程的web的應用程序,可使用開放的XML(標准通用標記語言下的一個子集)標准來描述、發布、發現、協調和配置這些應用程序,用於開發分布式的互操作的應用程序。
Web Service技術, 能使得運行在不同機器上的不同應用無須藉助附加的、專門的第三方軟體或硬體, 就可相互交換數據或集成。依據Web Service規范實施的應用之間, 無論它們所使用的語言、 平台或內部協議是什麼, 都可以相互交換數據。Web Service是自描述、 自包含的可用網路模塊, 可以執行具體的業務功能。Web Service也很容易部署, 因為它們基於一些常規的產業標准以及已有的一些技術,諸如標准通用標記語言下的子集XML、HTTP。Web Service減少了應用介面的花費。Web Service為整個企業甚至多個組織之間的業務流程的集成提供了一個通用機制。
他自己本身是一個技術的名稱而已
如果您說的是.NET的WebService
那麼就是SOAP協議了..XML格式的.
具體的話.
技術支持
Web Service平台需要一套協議來實現分布式應用程序的創建。任何平台都有它的數據表示方法和類型系統。要實現互操作性,Web Service平台必須提供一套標準的類型系統,用於溝通不同平台、編程語言和組件模型中的不同類型系統。這些協議有:
XML和XSD
可擴展的標記語言(標准通用標記語言下的一個子集)是Web Service平台中表示數據的基本格式。除了易於建立和易於分析外,XML主要的優點在於它既與平台無關,又與廠商無關。XML是由萬維網協會(W3C)創建,W3C制定的XML SchemaXSD定義了一套標準的數據類型,並給出了一種語言來擴展這套數據類型。
Web Service平台是用XSD來作為數據類型系統的。當你用某種語言如VB. NET或C#來構造一個Web Service時,為了符合Web Service標准,所有你使用的數據類型都必須被轉換為XSD類型。如想讓它使用在不同平台和不同軟體的不同組織間傳遞,還需要用某種東西將它包裝起來。這種東西就是一種協議,如 SOAP。
xml web service[2]
SOAP
SOAP即簡單對象訪問協議(Simple Object Access Protocol),它是用於交換XML(標准通用標記語言下的一個子集)編碼信息的輕量級協議。它有三個主要方面:XML-envelope為描述信息內容和如何處理內容定義了框架,將程序對象編碼成為XML對象的規則,執行遠程過程調用(RPC)的約定。SOAP可以運行在任何其他傳輸協議上。例如,你可以使用 SMTP,即網際網路電子郵件協議來傳遞SOAP消息,這可是很有誘惑力的。在傳輸層之間的頭是不同的,但XML有效負載保持相同。
Web Service 希望實現不同的系統之間能夠用「軟體-軟體對話」的方式相互調用,打破了軟體應用、網站和各種設備之間的格格不入的狀態,實現「基於Web無縫集成」的目標。
WSDL
Web Service描述語言WSDL就是用機器能閱讀的方式提供的一個正式描述文檔而基於XML(標准通用標記語言下的一個子集)的語言,用於描述Web Service及其函數、參數和返回值。因為是基於XML的,所以WSDL既是機器可閱讀的,又是人可閱讀的。
UDDI
UDDI 的目的是為電子商務建立標准;UDDI是一套基於Web的、分布式的、為Web Service提供的、信息注冊中心的實現標准規范,同時也包含一組使企業能將自身提供的Web Service注冊,以使別的企業能夠發現的訪問協議的實現標准。
調用RPC與消息傳遞
Web Service本身其實是在實現應用程序間的通信。我們有兩種應用程序通信的方法:RPC遠程過程調用和消息傳遞。使用RPC的時候,客戶端的概念是調用伺服器上的遠程過程,通常方式為實例化一個遠程對象並調用其方法和屬性。RPC系統試圖達到一種位置上的透明性:伺服器暴露出遠程對象的介面,而客戶端就好像在本地使用的這些對象的介面一樣,這樣就隱藏了底層的信息,客戶端也就根本不需要知道對象是在哪台機器上。
軟體支持
操作系統離不開豐富的應用軟體的支持。同樣,Web Service這項技術只有通過日益廣泛的應用才能體現出其價值,比較流行的實現方法是使用.NET 和 Java兩種技術,並且兩種實現方法可以互相操作;如今我們已經可以看到使用微軟、Oracle、SUN、Borland等不同廠商的Web Service構建工具建立的Web Service應用。
微軟.NET
微軟的.NET技術應該算是時下最為流行的Web Service 開發技術。首先因為其公司在以前相應的產品就佔有相當大的市場份額,以至使新推出的.NET得以有比較穩定的用戶群;其次也是更重要的是 .NET平台不僅延續了微軟一貫的編程風格,而且還增加了許多支持Web 服務的關鍵性技術,使得.NET在操作的簡單性和執行的穩定性,高效性上達到了一個非常好的結合。
微軟的Visual Studio. NET便是一個便於 Web 服務的開發工具。微軟的目標是,將其新編程語言——C#作為Web Service的首選語言。雖然C#看起來與Java類似,但是還有一些Java中沒有的獨特的功能。.NET技術中用於Web Service 開發的主要工具是ASP. NET。從技術上說,ASP. net 提供了一些超出ASP以前版本的優點(例如:代碼和HTML(標准通用標記語言下的一個應用)的分離,與腳本語言相比較,對「真正」的編程語言如 C# 的支持)。
IBM的WebSphere
IBM公司是業界第一家能夠提供全面支持Web服務的電子商務基礎設施中間件的公司。通過多年來與W3C(The World Wide Web Consortium)的共同努力,包括DB2、Lotus、Tivoli 和WebSphere在內的所有IBM軟體都實現了對SOAP、WSDL、UDDI、Linux、XML(標准通用標記語言下的一個子集)、J2EE等開放技術和標準的全面支持。
IBM公司的WebSphere也是比較好的基礎架構軟體開發平台。WebSphere軟體平台及開發工具包括WebSphere Studio Application DeveloperWSAD 基於J2EE、XML 和Web服務等開放標准,並具備 IBM 在可靠性、擴展性和安全性上的主要優勢。WebSphere 是 IBM 在 Web Services策略中的核心平台,它支持所有開發、發布、部署 Web Services應用所必需的開放標准和技術,包括 UDDI,SOAP,J2EE,WSDL,和對 XML 技術集成的增強,這使得它在全球有很多用戶。
Borland的JBuilder
Borland公司在 JBuilder7中,用戶可以用其Borland Web Services Kit for Java和Borland JBuilder MobileSet 3進行更快捷地開發Web Service和無線應用。這樣將使開發者能夠在同一個開發環境中輕松地創建和集成Web Service。新推出的JBuidler8更是針對Web Service開發更提供了方便和高效的方法。
總之,在Web Service開發上,.NET 和Java都是很好的選擇,盡管兩者都有一些需要完善的地方,但是它們還是最好的開發手段和技術。具體選擇哪種開發工具,也是仁者見仁,智者見智的問題。從根本上說,這兩種方法沒有孰優孰劣的問題,只是根據使用者對這兩種方法的掌握程度和對具體語言的偏愛程度來決定。
『叄』 web伺服器 Nginx
(1)概念
Web伺服器是一台使用HTTP協議與客戶機瀏覽器進行信息交流(因此又稱為HTTP伺服器)、為互聯網客戶提供服務(信息瀏覽,下載資源等)的主機。發展趨勢:從HTML到XML、從有線到無線、從無聲到有聲
1.Linux是架設安全高效Web伺服器的操作系統
架設Web伺服器常見的操作系統:Windows、Linux、Unix。Linux安全性能最高,可以支持多個硬體平台,可以根據不同需求隨意修改、調整與復制各種程序的源碼以及發布在互聯網上,網路功能比較強大。
2.目前主流伺服器:Apache、 Nginx、 IIS
Unix/Linux操作系統下使用最廣泛的免費HTTP伺服器:Apache、Nginx。Windows(NT/2000/2003)操作系統使用ⅡS,綜合使用最多的Web伺服器是 IIs、Apache。
選擇WEB伺服器應考慮的本身特性因素有:性能、安全性、日誌和統計、虛擬主機、代理伺服器、緩沖服務和集成應用程序等。下面介紹目前最主流的三大web伺服器:
① 大型
IIS:
微軟的Internet Information Services (IIS),IIS 允許在互聯網上發布信息,提供了一個圖形界面的管理工具,稱為Internet服務管理器,可用於監視配置和控制Internet服務。IIS是一種Web服務組件,其中包括Web伺服器(網頁瀏覽)、FTP伺服器(文件傳輸)、NNTP伺服器(新聞服務)和SMTP伺服器(郵件傳輸),使得在網路上發布信息很容易。它提供ISAPI(Intranet Server API)作為擴展Web伺服器功能的編程介面,它還提供一個Internet資料庫連接器,可以實現對資料庫的查詢和更新。
Apache:
Apache是世界上用的最多的Web伺服器,源於NCSAhttpd伺服器的補丁(pache 補丁)。它的成功之處主要在於:源代碼開放、有開放的開發隊伍、支持跨平台的應用(可以運行在幾乎所有的Unix、Windows、Linux系統平台上)、可移植性。
② 小型
nginx:
nginx的模塊都是靜態編譯的,對fcgi的支持非常好,在處理鏈接的的方式上nginx支持epoll,支持通用語言介面(如:php、python、perl等),支持正向和反向代理、虛擬主機、url重寫、壓縮傳輸等。
(2)工作原理
當客戶端Web瀏覽器連到伺服器上並請求文件時,伺服器將處理該請求並將文件反饋到該瀏覽器上,附帶的信息會告訴瀏覽器如何查看該文件(即文件類型)。Web伺服器主要是處理向瀏覽器發送HTML以供瀏覽,而應用程序伺服器提供訪問商業邏輯的途徑以供客戶端應用程序使用。應用程序伺服器可以管理自己的資源,例如看大門的工作(gate-keeping ties)包括安全(security),事務處理(transaction processing),資源池(resource pooling), 和消息(messaging)。就象Web伺服器一樣,應用程序伺服器配置了多種可擴展(scalability)和容錯(fault tolerance)技術。Web伺服器的工作原理一般可分成如下4個步驟:
① 連接過程:是Web伺服器和其瀏覽器之間所建立起來的一種連接。查看連接過程是否實現,用戶可以找到和打開socket這個虛擬文件,這個文件的建立意味著連接過程這一步驟已經成功建立。
② 請求過程:是Web的瀏覽器運用socket這個文件向其伺服器而提出各種請求。
③ 應答過程:是運用HTTP協議把在請求過程中所提出來的請求傳輸到Web的伺服器,進而實施任務處理,然後運用HTTP協議把任務處理的結果傳輸到Web的瀏覽器,同時在Web的瀏覽器上面展示上述所請求之界面。
④ 關閉連接:是當上一個步驟--應答過程完成以後,Web伺服器和其瀏覽器之間斷開連接之過程。Web伺服器上述4個步驟環環相扣、緊密相聯,邏輯性比較強,可以支持多個進程、多個線程以及多個進程與多個線程相混合的技術。
Web伺服器可以解析HTTP協議。當Web伺服器接收到一個HTTP請求(request),會返回一個HTTP響應(response)。為了處理一個request,Web伺服器可以response一個靜態頁面(HTML頁面)或圖片,進行頁面跳轉(redirect),或把動態響應委託給伺服器端。Web伺服器的代理模型非常簡單。當一個request被送到Web伺服器里來時,它只單純的把request傳遞給可以很好的處理request的程序(伺服器端腳本,如:CGI腳本,JSP腳本,servlets,ASP腳本,伺服器端JavaScript等)。Web伺服器僅僅提供一個可以執行伺服器端程序和返回(程序所產生的)響應的環境,而不會超出職能范圍。伺服器端程序功能通常有:事務處理、資料庫連接、和消息等。雖然Web伺服器不支持事務處理或資料庫連接池,但它可以配置各種策略來實現容錯性、可擴展性(如:負載平衡、緩沖)。集群特徵經常被誤認為僅僅是應用程序伺服器專有的特徵。
(3)配置
如何設置默認文檔;在同一台伺服器上架設多個Web站點;(可以通過改變埠號)創建Web虛擬目錄;
1、了解DNS主機名和IP地址。
如果此WEB伺服器在Internet上,需向ISP申請和注冊此伺服器的DNS主機名和IP地址。如果此伺服器只在企業網內使用,則在內部的DNS伺服器上注冊。
2、打開伺服器文檔,選擇"埠"-"Internet埠",啟用"TCP/ IP埠"。
3、選擇"Internet協議",完成以下選項後,保存文檔。
① 綁定主機名:
A、選擇"是"則您可在"主機名"項中輸入主機別名,WEB用戶可用此別名替代Domino伺服器名訪問WEB伺服器。
B、選擇"否"(預設)則不允許使用別名。
② DNS查詢: 選擇"是"則Domino伺服器查詢發送請求的WEB客戶機的DNS名。
③ Domino日誌文件和資料庫將包含WEB客戶機的DNS主機名: 選擇"否"(預設)則不查詢,Domino日誌文件和資料庫將只包含WEB客戶機的IP地址( 注意:選擇"否"將提高Domino伺服器性能,因為伺服器不使用資源執行DNS查詢 )
④ "允許HTTP客戶瀏覽資料庫":選擇"是"則允許WEB用戶在URL中使用OpenServer命令來顯示伺服器上資料庫列表。選擇"否"(預設)則不允許。但即使WEB用戶不能看到伺服器上資料庫列表,他們仍能打開有許可權訪問的單個資料庫。
4、啟動HTTP任務。在伺服器控制台上,輸入:loap http
小型項目
(1)概念
1、Nginx(俄羅斯程序設計師Igor Sysoev用C語言進行編寫)是一款輕量級的Web 伺服器/反向代理伺服器及電子郵件(IMAP/POP3/SMTP)代理伺服器。
2、特點:佔有內存少(在高連接並發的情況下,Nginx是Apache伺服器不錯的替代品,能夠支持高達 50,000 個並發連接數的響應),並發能力強。
3、中國大陸使用nginx網站用戶有:網路、京東、新浪、網易、騰訊、淘寶等。
4、Nginx代碼完全用C語言從頭寫成,已經移植到許多體系結構和操作系統,包括:Linux、FreeBSD、Solaris、Mac OS X、AIX以及Microsoft Windows。
5、Nginx有自己的函數庫,並且除了zlib、PCRE和OpenSSL之外,標准模塊只使用系統C庫函數。而且,如果不需要或者考慮到潛在的授權沖突,可以不使用這些第三方庫。
(2)安裝
官網:http://nginx.org/
選擇要安裝的版本:
(3)使用
打開conf/nginx.conf,修改埠號,和主頁根地址為:打包後index.html的目錄
模擬域名配置(本地域名設置):
在瀏覽器地址欄輸入配置好的「域名:埠號」回車:
『肆』 什麼是web應用協議 謝謝
應該是WEB服務協議吧。
Web Service支持3種協議來與用戶交流數據。這3種協議分別是:
1.HTTP-GET
2.HTTP-POST
3.SOAP
在這3種協議中,HTTP(Hypertext Transfer Protocol)已經是眾所周知的協議了,它是XML Web Service數據傳輸的標准,其中包括使用SOAP傳輸數據。HTTP將SOAP消息壓縮,然後以HTTP傳輸協議的形式進行網路傳輸。然而在XML Web Service下使用HTTP-GET和HTTP-POST的時候,事實上是指有關單獨使用HTTP調用XML Web Service中的方法的能力,而不使用SOAP。
在HTTP中,GET和POST並不是一種協議,它們是可以用來與Web Service交互的幾種方法中的其中兩種。然而,這二種方法的傳送參數和數據的能力使它們變成了一種簡單的,非常適合用來調用XML Web Service的工具。
SOAP是XML Web Service最常用到的連接協議。與HTTP相比,SOAP顯的更為復雜,但卻擁有更強的接受能力。SOAP是一種以XML為基礎的協議,它提供一種將數據打包(Packaging)和編碼(Encoding)的方法,以用於網路的數據傳輸。任意一個用戶都可以使用SOAP協議與任何一個XML Web Service進行通信,甚至於這個XML Web Service不是建立在.NET 平台上的,比如說Java的,都可以利用SOAP來進行數據傳輸。因此可見,SOAP也是Language Independent(語言獨立性)。
2
HTTP-GET和HTTP-POSTHTTP-GET 和 HTTP-POST 是使用 HTTP(超文本傳輸協議)謂詞以及與之關聯的請求語義將參數作為名稱/值對編碼和傳遞的標准協議。每個協議都由一系列 HTTP 請求頭組成,這些頭與一些其他信息一起定義客戶端向伺服器請求的內容,而在成功時,伺服器將用一系列 HTTP 響應頭和所請求的數據響應。
『伍』 什麼是web服務它的優點是什麼
微軟為Web服務下的定義是通過標準的Web協議可編程訪問的Web組件。「軟體就是服務」,這已經是軟體發展的一個潮流了。未來的軟體廠商就象現在的電信公司一樣,用戶可以按照時間來租用軟體公司的服務。「Web服務」(Web Services)可以說是整個.NET計劃的核心,簡單的說,Web服務就是一種遠程訪問的標准。它的優點首先是跨平台,HTTP和SOAP等已經是互聯網上通用的協議;其次是可以解決防火牆的問題,如果使用DCOM或CORBA來訪問Web組建,將會被擋在防火牆外面,而使用SOAP則不會有防火牆的問題。要發展Web 服務需要更多的軟體廠商來開發Web服務,讓基於Web服務的軟體服務多起來。 這一切,是通過將緊密耦合的、高效的n層計算技術與面向消息的、鬆散耦合的Web概念相結合來實現的。我們將這種計算風格稱為Web服務,它的出現標志著人類已經邁入應用程序開發技術的新紀元。Web服務是一種應用程序,它可以使用標準的互聯網協議,像超文本傳輸協議(HTTP)和XML,將功能綱領性地體現在互聯網和企業內部網上。可將Web服務視作Web上的組件編程。從理論上講,開發人員可通過調用Web應用編程介面(API)(就像調用本地服務一樣),將Web服務集成到應用程序中,不同的是Web API調用可通過互聯網發送給位於遠程系統中的某一服務。 Sun:Web服務是互聯網 架構中可置換的標准零部件 Sun公司董事長、首席執行官Scott McNealy在Sun ONE發布會上說,「智能化Web服務對信息時代有著重大的意義,它的作用就象那些可置換的標准零部件在工業時代所起到的關鍵作用一樣。」 Web服務適用於任何類型的Web環境,無論是在互聯網、Intranet還是在Extranet,重點是在企業對消費者、企業對企業之間的通信。Web服務消費者可以是通過台式或是無線接入服務的個人,也可以是應用程序,還可以是另一個Web服務。Web服務應該具有以下的一些特點:Web服務可以通過Web接入進行訪問;Web服務提供一個XML介面;Web服務使XML信息,通過標准Web協議實現通信。Web服務支持系統間的鬆散耦合連接。 為了能夠讓Web服務具備智能化,它必須能夠識別出接受服務的消費者的身份、與消費者相關的安全方針、與消費者相關的服務策略以及消費者此次服務進行時所用的接入設備,同時智能化Web服務還應該知道與消費者享受此次服務有關的以往歷史記錄。 在SunONE智能Web服務戰略中,XML和Java技術是這種鬆散耦合的可互操作性的關鍵。XML提供了標準的、與平台無關的數據結構,以表示語境信息,而Java技術則通過了一個與平台無關的編程界面標准集,來訪問和利用這些語境信息。不但如此,Sun 正在參與和領導開放智能Web服務的技術開發定義工作,包括Java技術、XML、ebXML、SOAP、UDDI以及更多其他的東西。 IBM:Web服務是電子商務應用的基礎設施 IBM認為:Web服務使交流和相互操作更有效,減少編碼過程和人為干擾。IBM正在發布的動態電子商務策略是現電子商務策略的一個延伸。過去兩年中,IBM參與了Web服務標準的開發,而且已經在好幾個產品中宣布了對Web服務標準的支持。與競爭對手不同的是,IBM對Web服務僅僅提供基礎設施,使企業能夠適應不斷變化的環境。 IBM在Web服務領域投資了幾十億美元,能有效地將兩大競爭對手的產品XML(微軟)和Java (Sun)結合起來。當用戶的Web服務同時需要二者時(Java用於應用程序的開發;XML用於信息傳播),IBM就可以提供獨一無二的解決方案,採用真正開放式的執行標准,而不是專有的標准。多年來,IBM在硬體和軟體方面的技術能力使其能為不同規模的公司解決棘手問題,堅決支持非專有技術的解決方案,從而加強了多平台的兼容性,這在當今電子商務市場上是非常必要的。IBM的動態電子商務將保持在標准方面合作,實施競爭的策略,Web服務只完成了一半,另一半是全功能基礎架構軟體,這種軟體使Web服務可用來進行智能交易,工作流程和業務進程管理的一部分。 補充: BEA:充分發揮分布式業務的潛力 Web服務可以被描述為協議、協定和網路設施,能通過互聯網將業務功能公開給授權方。簡言之,Web服務是具體的業務流程,它能夠:公開和描述自己;Web服務可以定義自己的功能和屬性,以便其它應用能夠了解它,並容易地向其它應用提供這種功能;其它服務能夠在Web上找到它的位置,可以被調用,返回響應。 任何組件或應用都可以作為Web服務,以便被其它組件或應用使用。同樣,BEA WebLogic Server上的任何應用都可以從Web上的任意位置查找和請求Web服務,即使Web服務位於另一個平台也能找到。多個Web服務可集中成一個應用,可以是簡單的Web服務(如查看股票價格),也可以是基於事務處理的復雜供應鏈集成和管理(如卡車負載優化和路由)。 BEA將Web服務分為兩類:簡單Web服務和復雜Web服務。簡單Web服務提供基本的「請求/響應」功能,本質上不屬於事務處理型服務,安全性不高。復雜Web服務將改變行業開展業務的方式,但它將為貿易合作夥伴通過互聯網協作提供一個框架。BEA同時提供簡單Web服務和復雜Web服務,並把它們作為BEA WebLogic E-Business Platform的一部分。另外,BEA還與制定標準的機構密切合作,指導相關Web服務標準的開發。 補充: Web 服務是一種可以用來解決跨網路應用集成問題的開發模式,這種模式為實現「軟體作為服務」提供了技術保障。而「軟體作為服務」實質上是一種提供軟體服務的機制,這種機制可以在網路上暴露可編程介面,並通過這些介面來共享站點開放出來的功能。 Web 服務的主要特點之一是,客戶端訪問Web 服務只需要通過網際網路標准協議,如HTTP或XML,以及SOAP,不需要專門的協議,如RPC或IIOP。
『陸』 什麼叫WEB系統
web系統有兩種模式C/S、B/S。C/S是客戶端/伺服器端程序,也就是說這類程序一般獨立運行。而B/S就是瀏覽器端/伺服器端應用程序,這類應用程序一般藉助IE等瀏覽器來運行。WEB應用程序一般是B/S模式。Web應用程序首先是「應用程序」,和用標準的程序語言,如C、C++等編寫出來的程序沒有什麼本質上的不同。然而Web應用程序又有自己獨特的地方,就是它是基於Web的,而不是採用傳統方法運行的。換句話說,它是典型的瀏覽器/伺服器架構的產物。
一個Web系統是由完成特定任務的各種Web組件(web components)構成的並通過Web將服務展示給外界。在實際應用中,Web應用程序是由多個Servlet、JSP頁面、HTML文件以及圖像文件等組成。所有這些組件相互協調為用戶提供一組完整的服務。
更多相關知識可參考:http://ke..com/link?url=
『柒』 web伺服器
WEB伺服器
編輯本段什麼是WEB伺服器
WEB伺服器也稱為WWW(WORLD WIDE WEB)伺服器,主要功能是提供網上信息瀏覽服務。
(1)應用層使用HTTP協議。
(2)HTML文檔格式。
(3)瀏覽器統一資源定位器(URL)。
WWW代表萬維網的意思
WWW 是 Internet 的多媒體信息查詢工具,是 Internet 上近年才發展起來的服務,也是發展最快和目前用的最廣泛的服務。正是因為有了WWW工具,才使得近年來 Internet 迅速發展,且用戶數量飛速增長。
1、WWW簡介
WWW 是 World Wide Web (環球信息網)的縮寫,也可以簡稱為 Web,中文名字為「萬維網」。它起源於1989年3月,由歐洲量子物理實驗室 CERN(the European Laboratory for Particle Physics)所發展出來的主從結構分布式超媒體系統。通過萬維網,人們只要通過使用簡單的方法,就可以很迅速方便地取得豐富的信息資料。 由於用戶在通過 Web 瀏覽器訪問信息資源的過程中,無需再關心一些技術性的細節,而且界面非常友好,因而 Web 在Internet 上一推出就受到了熱烈的歡迎,走紅全球,並迅速得到了爆炸性的發展。
2、WWW的發展和特點
長期以來,人們只是通過傳統的媒體(如電視、報紙、雜志和廣播等)獲得信息。但隨著計算機網路的發展,人們想要獲取信息,已不再滿足於傳統媒體那種單方面傳輸和獲取的方式,而希望有一種主觀的選擇性。現在,網路上提供各種類別的資料庫系統,如文獻期刊、產業信息、氣象信息、論文檢索等等。由於計算機網路的發展,信息的獲取變得非常及時、迅速和便捷。
到了1993年,WWW 的技術有了突破性的進展,它解決了遠程信息服務中的文字顯示、數據連接以及圖像傳遞的問題,使得 WWW 成為 Internet 上最為流行的信息傳播方式。 現在,Web 伺服器成為 Internet 上最大的計算機群,Web 文檔之多、鏈接的網路之廣,令人難以想像。可以說,Web 為 Internet 的普及邁出了開創性的一步,是近年來 Internet 上取得的最激動人心的成就。
WWW 採用的是客戶/伺服器結構,其作用是整理和儲存各種WWW資源,並響應客戶端軟體的請求,把客戶所需的資源傳送到 Windows 95(或Windows98)、Windows NT、UNIX 或 Linux 等平台上。
使用最多的 web server 伺服器軟體 有兩個:微軟的信息伺服器(iis),和Apache。
通俗的講,Web伺服器傳送(serves)頁面使瀏覽器可以瀏覽,然而應用程序伺服器提供的是客戶端應用程序可以調用(call)的方法(methods)。確切一點,你可以說:Web伺服器專門處理HTTP請求(request),但是應用程序伺服器是通過很多協議來為應用程序提供(serves)商業邏輯(business logic)。
Web伺服器可以解析(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 ties)包括安全(security),事務處理(transaction processing),資源池(resource pooling), 和消息(messaging)。就象Web伺服器一樣,應用程序伺服器配置了多種可擴展(scalability)和容錯(fault tolerance)技術。
例如,設想一個在線商店(網站)提供實時定價(real-time pricing)和有效性(availability)信息。這個站點(site)很可能會提供一個表單(form)讓你來選擇產品。當你提交查詢(query)後,網站會進行查找(lookup)並把結果內嵌在HTML頁面中返回。網站可以有很多種方式來實現這種功能。我要介紹一個不使用應用程序伺服器的情景和一個使用應用程序伺服器的情景。觀察一下這兩中情景的不同會有助於你了解應用程序伺服器的功能。
情景1:不帶應用程序伺服器的Web伺服器
在此種情景下,一個Web伺服器獨立提供在線商店的功能。Web伺服器獲得你的請求(request),然後發送給伺服器端(server-side)可以處理請求(request)的程序。此程序從資料庫或文本文件(flat file,譯者註:flat file是指沒有特殊格式的非二進制的文件,如properties和XML文件等)中查找定價信息。一旦找到,伺服器端(server-side)程序把結果信息表示成(formulate)HTML形式,最後Web伺服器把會它發送到你的Web瀏覽器。
簡而言之,Web伺服器只是簡單的通過響應(response)HTML頁面來處理HTTP請求(request)。
情景2:帶應用程序伺服器的Web伺服器
情景2和情景1相同的是Web伺服器還是把響應(response)的產生委託(delegates)給腳本(譯者註:伺服器端(server-side)程序)。然而,你可以把查找定價的商業邏輯(business logic)放到應用程序伺服器上。由於這種變化,此腳本只是簡單的調用應用程序伺服器的查找服務(lookup service),而不是已經知道如何查找數據然後表示為(formulate)一個響應(response)。 這時當該腳本程序產生HTML響應(response)時就可以使用該服務的返回結果了。
在此情景中,應用程序伺服器提供(serves)了用於查詢產品的定價信息的商業邏輯。(伺服器的)這種功能(functionality)沒有指出有關顯示和客戶端如何使用此信息的細節,相反客戶端和應用程序伺服器只是來回傳送數據。當有客戶端調用應用程序伺服器的查找服務(lookup service)時,此服務只是簡單的查找並返回結果給客戶端。
通過從響應產生(response-generating)HTML的代碼中分離出來,在應用程序之中該定價(查找)邏輯的可重用性更強了。其他的客戶端,例如收款機,也可以調用同樣的服務(service)來作為一個店員給客戶結帳。相反,在情景1中的定價查找服務是不可重用的因為信息內嵌在HTML頁中了。
總而言之,在情景2的模型中,在Web伺服器通過回應HTML頁面來處理HTTP請求(request),而應用程序伺服器則是通過處理定價和有效性(availability)請求(request)來提供應用程序邏輯的。
警告(Caveats)
現在,XML Web Services已經使應用程序伺服器和Web伺服器的界線混淆了。通過傳送一個XML有效載荷(payload)給伺服器,Web伺服器現在可以處理數據和響應(response)的能力與以前的應用程序伺服器同樣多了。
另外,現在大多數應用程序伺服器也包含了Web伺服器,這就意味著可以把Web伺服器當作是應用程序伺服器的一個子集(subset)。雖然應用程序伺服器包含了Web伺服器的功能,但是開發者很少把應用程序伺服器部署(deploy)成這種功能(capacity)(譯者註:這種功能是指既有應用程序伺服器的功能又有Web伺服器的功能)。相反,如果需要,他們通常會把Web伺服器獨立配置,和應用程序伺服器一前一後。這種功能的分離有助於提高性能(簡單的Web請求(request)就不會影響應用程序伺服器了),分開配置(專門的Web伺服器,集群(clustering)等等),而且給最佳產品的選取留有餘地。
編輯本段大型WEB伺服器
在UNIX和LINUX平台下使用最廣泛的免費HTTP伺服器是W3C、NCSA和APACHE伺服器,而Windows平台NT/2000/2003使用IIS的WEB伺服器。在選擇使用WEB伺服器應考慮的本身特性因素有:性能、安全性、日誌和統計、虛擬主機、代理伺服器、緩沖服務和集成應用程序等,下面介紹幾種常用的WEB伺服器。
Microsoft IIS
Microsoft的Web伺服器產品為Internet Information Server (IIS), IIS 是允許在公共Intranet或Internet上發布信息的Web伺服器。IIS是目前最流行的Web伺服器產品之一,很多著名的網站都是建立在IIS的平台上。IIS提供了一個圖形界面的管理工具,稱為 Internet服務管理器,可用於監視配置和控制Internet服務。
IIS是一種Web服務組件,其中包括Web伺服器、FTP伺服器、NNTP伺服器和SMTP伺服器,分別用於網頁瀏覽、文件傳輸、新聞服務和郵件發送等方面,它使得在網路(包括互聯網和區域網)上發布信息成了一件很容易的事。它提供ISAPI(Intranet Server API)作為擴展Web伺服器功能的編程介面;同時,它還提供一個Internet資料庫連接器,可以實現對資料庫的查詢和更新。
IBM WebSphere
WebSphere Application Server 是 一 種功能完善、開放的Web應用程序伺服器,是IBM電子商務計劃的核心部分,它是基於 Java 的應用環境,用於建立、部署和管理 Internet 和 Intranet Web 應用程序。 這一整套產品進行了擴展,以適應 Web 應用程序伺服器的需要,范圍從簡單到高級直到企業級。
WebSphere 針對以 Web 為中心的開發人員,他們都是在基本 HTTP伺服器和 CGI 編程技術上成長起來的。IBM 將提供 WebSphere 產品系列,通過提供綜合資源、可重復使用的組件、功能強大並易於使用的工具、以及支持 HTTP 和 IIOP 通信的可伸縮運行時環境,來幫助這些用戶從簡單的 Web 應用程序轉移到電子商務世界。
BEA WebLogic
BEA WebLogic Server 是一種多功能、基於標準的web應用伺服器,為企業構建自己的應用提供了堅實的基礎。各種應用開發、部署所有關鍵性的任務,無論是集成各種系統和資料庫,還是提交服務、跨 Internet 協作,起始點都是 BEA WebLogic Server。由於 它具有全面的功能、對開放標準的遵從性、多層架構、支持基於組件的開發,基於 Internet 的企業都選擇它來開發、部署最佳的應用。
BEA WebLogic Server 在使應用伺服器成為企業應用架構的基礎方面繼續處於領先地位。BEA WebLogic Server 為構建集成化的企業級應用提供了穩固的基礎,它們以 Internet 的容量和速度,在連網的企業之間共享信息、提交服務,實現協作自動化。
APACHE
apache仍然是世界上用的最多的Web伺服器,市場佔有率達60%左右。它源於NCSAhttpd伺服器,當NCSA WWW伺服器項目停止後,那些使用NCSA WWW伺服器的人們開始交換用於此伺服器的補丁,這也是apache名稱的由來(pache 補丁)。世界上很多著名的網站都是Apache的產物,它的成功之處主要在於它的源代碼開放、有一支開放的開發隊伍、支持跨平台的應用(可以運行在幾乎所有的Unix、Windows、Linux系統平台上)以及它的可移植性等方面。
Tomcat
Tomcat是一個開放源代碼、運行servlet和JSP Web應用軟體的基於Java的Web應用軟體容器。Tomcat Server是根據servlet和JSP規范進行執行的,因此我們就可以說Tomcat Server也實行了Apache-Jakarta規范且比絕大多數商業應用軟體伺服器要好。
Tomcat是Java Servlet 2.2和JavaServer Pages 1.1技術的標准實現,是基於Apache許可證下開發的自由軟體。Tomcat是完全重寫的Servlet API 2.2和JSP 1.1兼容的Servlet/JSP容器。Tomcat使用了JServ的一些代碼,特別是Apache服務適配器。隨著Catalina Servlet引擎的出現,Tomcat第四版號的性能得到提升,使得它成為一個值得考慮的Servlet/JSP容器,因此目前許多WEB伺服器都是採用Tomcat。
編輯本段小型WEB伺服器
【 micro_httpd - really small HTTP server】
特點:
* 支持安全的 .. 上級目錄過濾
* 支持通用的MIME類型
* 支持簡單的目錄
* 支持目錄列表
* 支持使用 index.html 作為首頁
* Trailing-slash redirection
* 程序總共代碼才200多行
這個httpd適合學習簡單的Web Server編寫學習,因為它只有一個簡單的框架,只能夠處理簡單的靜態頁,可以考慮用來放靜態頁。
官方地址:http://www.acme.com/software/micro_httpd/
下載地址:http://www.acme.com/software/micro_httpd/micro_httpd_12dec2005.tar.gz
【 mini_httpd - small HTTP server 】
特點:
* 支持GET、HEAD、POST方法
* 支持CGI功能
* 支持基本的驗證功能
* 支持安全 .. 上級目錄功能
* 支持通用的MIME類型
* 支持目錄列表功能
* 支持使用 index.html, index.htm, index.cgi 作為首頁
* 支持多個根目錄的虛擬主機
* 支持標准日誌記錄
* 支持自定義錯誤頁
* Trailing-slash redirection
mini_httpd 也是相對比較適合學習使用,大體實現了一個Web Server的功能,支持靜態頁和CGI,能夠用來放置一些個人簡單的東西,不適宜投入生產使用。
官方地址:http://www.acme.com/software/thttpd/
下載地址:http://www.acme.com/software/mini_httpd/mini_httpd-1.19.tar.gz
【 thttpd - tiny/turbo/throttling HTTP server 】
thttpd中是一個簡單,小型,輕便,快速和安全的http伺服器.
簡單:它能夠支持HTTP/1.1協議標准,或者超過了最低水平
小巧:它具有非常少的運行時間,因為它不fork子進程來接受新請求,並且非常謹慎的分配內存(性能對比表:http://www.acme.com/software/thttpd/benchmarks.html)
便攜:它能夠在大部分的類Unix系統上運行,包括FreeBSD, SunOS 4, Solaris 2, BSD/OS, Linux, OSF等等
快速:它的速度要超過主流的Web伺服器(Apache, NCSA, Netscape),在高負載情況下,它要快的多
安全:它努力的保護主機不受到攻擊,不中斷伺服器
thttpd 類似於lighttpd,對於並發請求不使用fork()來派生子進程處理,而是採用多路復用(Multiplex)技術來實現。因此效能很好。同時它還有一個特點就是基於URL的文件流量限制,這對於下載的流量控制而言是非常方便的。象Apache就必須使用插件實現,效率較thttpd低。
thttpd跟lighttpd類似,適合靜態資源類的服務,比如圖片、資源文件、靜態HTML等等的應用,性能應該比較好,同時也適合簡單的CGI應用的場合。
官方地址:http://www.acme.com/software/thttpd/
下載地址:http://www.acme.com/software/thttpd/thttpd-2.25b.tar.gz
【 lighttpd - light footprint + httpd = LightTPD 】
Lighttpd是一個德國人領導的開源軟體,其根本的目的是提供一個專門針對高性能網站,安全、快速、兼容性好並且靈活的web server環境。具有非常低的內存開銷,cpu佔用率低,效能好,以及豐富的模塊等特點。
lighttpd 是眾多OpenSource輕量級的web server中較為優秀的一個。支持FastCGI, CGI, Auth, 輸出壓縮(output compress), URL重寫, Alias等重要功能,而Apache之所以流行,很大程度也是因為功能豐富,在lighttpd上很多功能都有相應的實現了,這點對於apache的用戶是非常重要的,因為遷移到lighttpd就必須面對這些問題。
實用起來lighttpd確實非常不錯,apache主要的問題是密集並發下,不斷的fork()和切換,以及較高(相對於 lighttpd而言)的內存佔用,使系統的資源幾盡枯竭。而lighttpd採用了Multiplex技術,代碼經過優化,體積非常小,資源佔用很低,而且反應速度相當快。
利用apache的rewrite技術,將繁重的cgi/fastcgi任務交給lighttpd來完成,充分利用兩者的優點,現在那台伺服器的負載下降了一個數量級,而且反應速度也提高了一個甚至是2個數量級!
lighttpd 適合靜態資源類的服務,比如圖片、資源文件、靜態HTML等等的應用,性能應該比較好,同時也適合簡單的CGI應用的場合。
官方地址:http://www.lighttpd.net/
下載地址:http://www.lighttpd.net/download/lighttpd-1.4.16.tar.gz
【 SHTTPD - Simple HTTPD 】
Shttpd是另一個輕量級的web server,具有比thttpd更豐富的功能特性,支持CGI, SSL, cookie, MD5認證, 還能嵌入(embedded)到現有的軟體里。最有意思的是不需要配置文件! 由於shttpd可以嵌入其他軟體,因此可以非常容易的開發嵌入式系統的web server,官方網站上稱shttpd如果使用uclibc/dielibc(libc的簡化子集)則開銷將非常非常低。
特點:
* 小巧、快速、不膨脹、無需安裝、簡單的40KB的exe文件,隨意運行
* 支持GET, POST, HEAD, PUT, DELETE 等方法
* 支持CGI, SSL, SSI, MD5驗證, resumed download, aliases, inetd模式運行
* 標准日誌格式
* 非常簡單整潔的嵌入式API
* dietlibc friendly. NOT that friendly to the uClibc (*)
* 容易定製運行在任意平台:Windows, QNX, RTEMS, UNIX (*BSD, Solaris, Linux)
由於shttpd可以輕松嵌入其他程序里,因此shttpd是較為理想的web server開發原形,開發人員可以基於shttpd開發出自己的webserver!
官方網站:http://shttpd.sourceforge.net/
下載地址:http://jaist.dl.sourceforge.net/sourceforge/shttpd/shttpd-1.38.tar.gz
『捌』 Web組件與Web容器有哪些,WEB組件的三種關聯
Web組件:有Jsp,Servlet等
Web容器:有tomcat ,jboss, resin, weblogic ,websphere, glassfish。可以理解為Web伺服器。
WEB應用程序如此強大的原因之一就是他們能彼此鏈接和聚合信息資源。WEB組件之間存在三種關聯關系:
l 請求轉發
l URL重定向
l 包含關系
存在以上關聯關系的Web組件可以是JSP或Servlet,對於Struts應用,則還包含Action,這些Web組件都可以訪問HttpServletRequest和HttpServletResponse對象,具有處理請求、生成響應結果的功能。
1. 請求轉發。
請求轉發允許把請求轉發給同一個應用程序中的其他Web組件。這種技術通常應用於Web應用中的Servlet流程式控制制器。
Servlet類使用 javax.servlet.RequestDispatcher.forward()方法來轉發。轉發目標將處理該請求並生成響應結果,或者將請求轉發到另一個組件,最初請求的ServletRequest,ServletResponse對象被傳遞給轉發目標組件,這使得目標組件可以訪問整個請求上下文。值得注意的是,只能把請求轉發給同一個web應用中的組件。下面是一個例子,當前的servlet組件要把請求轉發給一個JSP組件,如hello.jsp,可以在Servlet的service()方法中執行以下代碼:
RequestDispatcher rd = request.getRequestDispatcher(「hello.jsp」);
Rd.forward(request,response);
在jsp頁面中,可以使用<jsp:forward>標簽來轉發請求,例如:
<jsp:forward page=」hello.jsp」/>
對於請求轉發,轉發的源組件和目標組件共享request范圍內的共享數據。
2. 請求重定向
請求重定向類似於請求轉發,但也有一些重要的區別:
l Web組件可以將請求重定向到任一URL,而不僅僅是同一應用中的URL。
l 重定向的目標組件與源組件之間不共用同一個HttpServletRequest對象,因此不能共享request范圍內的共享數據。
例如當前應用的Servlet組件把請求轉發到URL:http://jakarta.apache.org/struts,可以在Servlet的service()方法中執行以下代碼:
Response.sendRedirect(「http://jakarta.apache.org/struts」);
HttpServletResponse的sendRedirect()方法向瀏覽器返回包含重定向的信息,瀏覽器根據這一信息迅速發出一個新的HTTP請求,請求訪問重定向目標組件。
3. 包含
Servlet類使用javax.servlet.RequestDispatcher.include()方法包含其他的Web組件。例如當前的Servlet組件包含三個JSP文件:header.jsp/main.jsp/footer.jsp,則可以在servlet的service()方法中執行以下代碼:
RequestDispatcher rd;
Rd = req.getRequestDispatcher(「/header.jsp」);
Rd.include(req,res);
Rd = req.getRequestDispatcher(「/main.jsp」);
Rd.include(req,res);
Rd = req.getRequestDispatcher(「/footer.jsp」);
Rd.include(req,res);
在JSP文件中,可以通過〈include〉指令來包含其他的web資源,例如:
<%@ include file=」header.jsp」%>
<%@ include file=「main.jsp」%>
<%@ include file=」footer.jsp」%>
『玖』 什麼是WEB服務,FTP 服務,SMTP服務!
通俗的講,Web伺服器傳送(serves)頁面使瀏覽器可以瀏覽,然而應用程序伺服器提供的是客戶端應用程序可以調用(call)的方法(methods)。確切一點,你可以說:Web伺服器專門處理HTTP請求(request),但是應用程序伺服器是通過很多協議來為應用程序提供(serves)商業邏輯(business logic)。
下面讓我們來細細道來:
Web伺服器(Web Server)
Web伺服器可以解析(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 ties)包括安全(security),事務處理(transaction processing),資源池(resource pooling), 和消息(messaging)。就象Web伺服器一樣,應用程序伺服器配置了多種可擴展(scalability)和容錯(fault tolerance)技術。
什麼是FTP呢?FTP 是 TCP/IP 協議組中的協議之一,是英文File Transfer Protocol的縮寫。該協議是Internet文件傳送的基礎,它由一系列規格說明文檔組成,目標是提高文件的共享性,提供非直接使用遠程計算機,使存儲介質對用戶透明和可靠高效地傳送數據。簡單的說,FTP就是完成兩台計算機之間的拷貝,從遠程計算機拷貝文件至自己的計算機上,稱之為「下載(download)」文件。若將文件從自己計算機中拷貝至遠程計算機上,則稱之為「上載(upload)」文件。在TCP/IP協議中,FTP標准命令TCP埠號為21,Port方式數據埠為20。FTP協議的任務是從一台計算機將文件傳送到另一台計算機,它與這兩台計算機所處的位置、聯接的方式、甚至是是否使用相同的操作系統無關。假設兩台計算機通過ftp協議對話,並且能訪問Internet, 你可以用ftp命令來傳輸文件。每種操作系統使用上有某一些細微差別,但是每種協議基本的命令結構是相同的。
FTP的傳輸有兩種方式:ASCII傳輸模式和二進制數據傳輸模式。
1.ASCII傳輸方式:假定用戶正在拷貝的文件包含的簡單ASCII碼文本,如果在遠程機器上運行的不是UNIX,當文件傳輸時ftp通常會自動地調整文件的內容以便於把文件解釋成另外那台計算機存儲文本文件的格式。
但是常常有這樣的情況,用戶正在傳輸的文件包含的不是文本文件,它們可能是程序,資料庫,字處理文件或者壓縮文件(盡管字處理文件包含的大部分是文本,其中也包含有指示頁尺寸,字型檔等信息的非列印字元)。在拷貝任何非文本文件之前,用binary 命令告訴ftp逐字拷貝,不要對這些文件進行處理,這也是下面要講的二進制傳輸。
2.二進制傳輸模式:在二進制傳輸中,保存文件的位序,以便原始和拷貝的是逐位一一對應的。即使目的地機器上包含位序列的文件是沒意義的。例如,macintosh以二進制方式傳送可執行文件到Windows系統,在對方系統上,此文件不能執行。
如果你在ASCII方式下傳輸二進制文件,即使不需要也仍會轉譯。這會使傳輸稍微變慢 ,也會損壞數據,使文件變得不能用。(在大多數計算機上,ASCII方式一般假設每一字元的第一有效位無意義,因為ASCII字元組合不使用它。如果你傳輸二進制文件,所有的位都是重要的。)如果你知道這兩台機器是同樣的,則二進制方式對文本文件和數據文件都是有效的。
5. FTP的工作方式
FTP支持兩種模式,一種方式叫做Standard (也就是 PORT方式,主動方式),一種是 Passive (也就是PASV,被動方式)。 Standard模式 FTP的客戶端發送 PORT 命令到FTP伺服器。Passive模式FTP的客戶端發送 PASV命令到 FTP Server。
下面介紹一個這兩種方式的工作原理:
Port模式FTP 客戶端首先和FTP伺服器的TCP 21埠建立連接,通過這個通道發送命令,客戶端需要接收數據的時候在這個通道上發送PORT命令。 PORT命令包含了客戶端用什麼埠接收數據。在傳送數據的時候,伺服器端通過自己的TCP 20埠連接至客戶端的指定埠發送數據。 FTP server必須和客戶端建立一個新的連接用來傳送數據。
Passive模式在建立控制通道的時候和Standard模式類似,但建立連接後發送的不是Port命令,而是Pasv命令。FTP伺服器收到Pasv命令後,隨機打開一個高端埠(埠號大於1024)並且通知客戶端在這個埠上傳送數據的請求,客戶端連接FTP伺服器此埠,然後FTP伺服器將通過這個埠進行數據的傳送,這個時候FTP server不再需要建立一個新的和客戶端之間的連接。
很多防火牆在設置的時候都是不允許接受外部發起的連接的,所以許多位於防火牆後或內網的FTP伺服器不支持PASV模式,因為客戶端無法穿過防火牆打開FTP伺服器的高端埠;而許多內網的客戶端不能用PORT模式登陸FTP伺服器,因為從伺服器的TCP 20無法和內部網路的客戶端建立一個新的連接,造成無法工作。
SMTP是SIMPLE MAIL TRANSFER PROTOCOL的縮寫,一般的發信軟體,如Outlook Express、FoxMail、Eudora都是使用這個協議進行發信的。如果你的ISP沒有提供SMTP伺服器,那你就無法使用該協議發送信件。無法從一個郵箱的域名知道它是否提供SMTP服務或者SMTP伺服器是什麼。如果不知道自己信箱的SMTP伺服器,可以向提供信箱的ISP詢問。現在為了避免濫發垃圾郵件,許多免費郵件的提供商都不提供SMTP伺服器,如Hotmail、eyou,這些免費郵件用戶只能登錄後通過瀏覽器發信。收費郵件一般都提供POP3和SMTP伺服器。
『拾』 Web Service
Web Service 技術是原來的組件技術思想在 Internet 時代中的進一步發展,更准確地說,Web Service 是封裝成單個實體發布到網路上,並提供 API 以提供其他程序使用的功能集合,是在 Internet 上進行分布式計算的基本構造塊,是可用 URL 定位服務資源。簡言之,Web Service 是可遠程調用的應用程序組件。Web Service 的本質目的是提供一個與操作系統、程序設計語言、機器類型、運行環境均無關的平台,實現 Internet 中應用程序的共享。Web Service 基於一系列的標准協議,其協議構架如圖 4.4 示。
圖 4.4 Web Service 協議架構
統一描述、發現與集成協議 UDDI(UniversalDescription,Discovery and Integration )用 於 構 建Web Service 的服務注冊中心,實現服務發現功能。Web 服務描述語言 WSDL(Web Service DescriptionLanguage)駐 留 在 服務 容 器 中, 定義 了 一 種提供Web 服務 描述 的 標 准化 方 式。簡 單 對 象 訪 問協議SOAP(Simple Object Access Protocol)提供傳輸數據的標准方式,充當在服務提供方和服務請求方之間激活服務的消息交換服務。可擴展標記語言 XML(Extensible Markup Language)是 Internet 上數據交換的標准,在 Web Service 中實現信息表達,用於 SOAP,WSDL 和 UDDI。超文本傳輸協議 HTTP(Hyper Text Transfer Protol)是 Web Service 最流行的傳輸協議。Web Service 體系結構是一種面向服務的結構,典型的Web Service 組件架構如圖 4.5 示。
Web Service 體系結構主要由服務請求者、服務注冊中心和服務提供者三部分組成。其實現過程包括服務發布與注冊、服務查詢與發現、服務綁定與調用三個過程。服務請求者指查詢、調用服務的客戶端程序; 服務提供者即服務的所有者和部署服務的平台; 服務注冊中心指用來存儲服務信息的信息庫,服務提供者在這里發布、注冊服務、而服務請求者在這里查詢、綁定服務,最終實現調用服務提供者的服務。
圖 4.5 Web Service 組件架構
Web Service 有兩大核心優勢,即分布性和互操作性。在 Web Service 架構下,服務提供者和服務請求者都可以是分布式的,一個服務請求者可以遠程調用多個服務提供者的服務,服務提供者也可以同時為多個服務請求者提供服務,這為服務共享提供了一個最佳的方式。
互操作性也是服務共享的關鍵問題。Web Service 的信息表達基於標准通用的 XML 語言,在 XML 語言的基礎上,使用 WSDL 和 UDDI 實現服務注冊與發現,使用 SOAP 實現服務調用。基於這些標準的協議,Web Service 實現了服務的跨平台、跨語言的共享。XML、SOAP、WSDL 和 UDDI 是用於構建和使用 Web Service 的核心標准和技術。以下將分別介紹這四種標准和技術。
4.2.2.1 XML
XML 是一種數據描述語言,為 Internet 上數據交換的標准。XML 定義了應用系統間傳遞數據的結構,而且這種結構的描述不是基於二進制的、只能由程序去判讀的代碼,而是一種簡單的、能夠用通用編輯器讀取的文本。XML 的基本概念包括元素、屬性、DTD,Schema 和命名空間等。元素是 XML 文檔內容的基本單元。語法上而言,一個元素包括一個起始標記、結束標記以及標記之間的數據內容。形式上為: < tag > 數據內容 < tag > 。元素內容可以為其他的元素或未處理文本或兩者的混合,還可以是空的。元素的嵌套使得文檔的層次結構很容易表示。一個元素可以有多個屬性。屬性是一個名稱數據對,表示為字元串。用戶可以根據需要自己定義。一個元素不能有同名的兩個屬性。
XML 的精髓是允許文檔編寫者制定基於信息描述、體現數據間邏輯關系的自定義標記。如果不對文檔標記作明確定義,而是任意地使用它們,則生成的文檔是無法識別的。DTD 是對文檔結構的一個清晰描述,定義了特定文檔中允許出現的元素類型、屬性和實體,給出了文檔的整體結構和語法。XML Schema 是定義 XML 的數據定義文件。XMLSchema 也規定了一套特定文檔的結構,這是與 DTD 的相同之處。與 DTD 相比,最大的不同在於它本身也是 XML 文檔。此外還有以下的不同: XML Schema 可以用 XML 解析器來解析; 允許使用全局性元素(在整個 XML 文檔中用相同的方式使用元素)和局部元素(特定的上下文中元素有不同的含義); 提供豐富的數據類型(整型、布爾型、日期類型等),且元素的數據類型可以自定義。
XML 命名空間是一組可以用作 XML 文檔的元素或屬性名稱的名稱集,就是將元素或屬性的名稱歸類。因為 XML 的開放性,允許任何人創建屬於他們自己的元素或屬性名稱,這樣就不可避免地出現不同的人或組織定義的元素名稱或屬性名稱重復,使得相同的名稱表達不同的語義。為了避免元素之間出現相同名稱的沖突,命名空間限定這些元素或屬性名稱在命名空間內是唯一的。一般命名空間由這些統一資源標識符 URI(Universal Resource Identifier)來識別。URI 在 Internet 上是全球唯一的,用 URI 來限定 XML 元素名稱或屬性名稱也就確保是全球唯一的。XML 主要具有四大優勢:
(1)XML 用文本格式表示數據,方便在 Internet 上的傳輸。這一點使 XML 數據可以方便地利用現有的 Internet 上基於文本的各種傳輸協議(如 HTTP)進行傳輸,可以安全的穿越防火牆。
(2)XML 是可擴展的。XML 是一個元語言(MetaLanguage),它使用了標准化的方法定義其他語言。它只是為結構文檔提供了一個數據格式,而沒有深入該數據本身,定義它的詞彙列表。這使自定義標記語言成為可能,每個行業,每個部門,甚至每個人都可以定義自己的標記語言。
(3)XML 可以對信息進行很好的層次描述。它基於信息內容的描述,對信息的表達清晰。
(4)XML 可以進行數據完整性的自動檢驗。XML DTD 和 Schema 機制使得 XML 解析器可以檢驗 XML 文檔是否與 DTD 或 Schema 相配。
4.2.2.2 SOAP
SOAP 通過定義一個關於遠程組件如何請求信息和如何遞交信息的標准,實現 Internet中不同應用之間的集成和交互。SOAP 是一個基於 HTTP 和 XML 的請求、響應 RPC 協議。SOAP 把 XML 使用代碼化為請求和響應參數編碼模式,並用 HTTP 傳輸。SOAP 本身沒有定義任何應用程序語義,如編程模型或特定語義的實現,實際上它通過提供一個有標准組件的包模型和在模塊中編碼數據的機制,定義了一個簡單的表示應用程序語義的機制。這使得 SOAP 能夠被用於從消息系統到 RPC(遠程進程調用)的各種應用中。
SOAP 規范主要由信封(Envelop)、編碼規則(Encoding Rules)和 RPC 表示(RPC Representation)三部分組成。①SOAP 信封構造定義了一個整體的 SOAP 消息表示框架,可以用於表示消息中的內容是什麼,是誰發送的,誰接受並處理它,以及這些處理操作是可選的還是必需的等。②SOAP 編碼規則定義了一個數據的編碼機制,通過這樣一個編碼機制來定義應用程序中需要使用的數據類型,並可用於交換由這些應用程序定義的數據類型所衍生的實例。③SOAP RPC 表示定義了一個用於表示遠程過程調用和響應的約定,例如,如何使用 HTTP 或 SMTP 協議於 SOAP 綁定,如何傳輸過程調用,在具體傳輸協議的哪個部分傳輸過程響應,如可以在 HTTP 的響應的時候傳遞過程響應。這三部分在功能上是彼此獨立的。特別的,信封和編碼規則是被定義在不同的 XML 命名空間中,這樣有利於通過模塊化獲得定義和實現的簡明性。
SOAP 消息是 SOAP 應用中的主體要素。SOAP 為在一個鬆散的、分布的環境中使用XML 對等地交換結構化地和類型化的消息提供了一個簡單的輕量級機制。SOAP 消息的描述框架格式是以 SOAP 信封為根元素,內含 SOAP Header 和 SOAP Body 子元素的一個XML 文檔。所有的 SOAP 消息都是使用 XML 格式來編碼的。SOAP 消息必須不包含 DTD與 PI(Processing Instructions)。除 SOAP must understand attribute 和 SOAP actor attribute外,一般允許屬性及屬性值自由地選擇是在 XML 實例中描述還是在 XML Schema 中描述。SOAP 是一種基於 XML 的輕量級消息交換協議,它是建立在現有行業標准之上的,所以在支持這些標準的平台上運行的應用程序可以通過 SOAP 消息與其他平台上運行的應用程序有效地進行通信,而且能夠穿越防火牆,因而得到了業界的廣泛支持。
4.2.2.3 WSDL
Web 服務描述語言 WSDL(Web Services Description Language)是基於 XML 模式的規范,用於將 Web 服務描述為操作集,並將數據輸入/輸出參數描述為消息。WSDL 還定義使用綁定機制將任何傳輸協議、數據格式或結構附加到抽象消息、操作或終端的通信模型。
WSDL 將 Web 服務描述為一組服務訪問點,或稱為一組 「埠」,客戶端可以通過這些埠對包含面向文檔信息或面向過程調用的服務進行訪問。一個埠定義了一個 「服務」項目的提供地點。一個服務可以有多個提供地點,但只能對一組事先定義好的 「信息」做出響應。「信息」是對通信數據的描述,每條信息由一組數據組成,這些數據必須定義為收、發雙方都能識別的 「類型」。埠和信息結合在一起代表了一組 「操作」,並定義了這個服務訪問點的 「埠類型」。把一種協議和一種數據格式關聯在一起就定義出了一種可重復使用的 「綁定」。把一個網址和一個綁定關聯在一起就定義了一個埠,相關的具體部署的端點通過組合就成為抽象的 Web 服務。綜上所述,WSDL 文檔的根元素是 definitions 元素,該元素又包含 6 個子元素:
(1)Types: 包含可由伺服器收發的消息的架構定義。最常見的表示架構的方法是使用 XML 架構;
(2)Message: 充當一個將架構中的消息與消息的定義關聯起來的交叉引用。簡單地說,就是定義通信中的數據,包括數據輸入和輸出。
(3)PortType: 定義一組 Web 服務可公開的介面。一個介面與一個或多個消息關聯。
(4)Operation: 它是對服務端所實現功能的抽象定義。
(5)Binding: 將 PortType 定義與某個特定的協議關聯。
(6)Service: 定義 Web 服務公開的相關端點(埠)的集合。
4.2.2.4 UDDI
統一描述、發現和集成協議 UDDI(Universal Description,Discovery and Integration)是一套基於 Web 的、分布式的、為 Web 服務提供信息注冊中心的實現標准規范,同時也包含一組使不同的人或組織能將自身提供的 Web 服務注冊以使得他人或其組織能夠發現的訪問協議的實現標准。UDDI 注冊的工作流程如圖 4.6。
UDDI 注冊中心是 Web 服務注冊、用戶集中管理的地方,通過它可以發布、查詢、調用 Web Service,也可以查詢特定服務的描述信息,並動態綁定到該服務上。UDDI 注冊中心同時還提供服務結點管理、用戶管理、許可權管理、計費管理等功能。服務提供者提供服務需要到 UDDI 注冊中心進行服務的注冊、登記,這樣用戶就可以通過 UDDI 注冊中心獲取所需要服務的基本信息與技術細節信息,再通過對服務的綁定得到服務和產品。
圖 4.6 UDDI 注冊工作流程