-
當(dāng)前位置:首頁(yè) > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
web服務(wù)器通過什么執(zhí)行外部程序(web服務(wù)器通過什么執(zhí)行外部程序)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于web服務(wù)器通過什么執(zhí)行外部程序的問題,以下是小編對(duì)此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁(yè)版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請(qǐng)撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、第五章:Web服務(wù)器
5.1各種形狀和尺寸的Web服務(wù)器
Web服務(wù)器會(huì)對(duì)HTTP請(qǐng)求進(jìn)行處理并提供響應(yīng)。術(shù)語“Web服務(wù)器”可以用來表示W(wǎng)eb服務(wù)器的軟件,也可以用來表示提供Web頁(yè)面的特定設(shè)備或計(jì)算機(jī)。
Web服務(wù)器有著不同的風(fēng)格、形狀和尺寸。有普通的10行Perl腳本的Web服務(wù)器、50MB的安全商用引擎以及極小的卡上服務(wù)器。但不管功能有何差異,所有的 Web服務(wù)器都能夠接收請(qǐng)求資源的 HTTP請(qǐng)求,將內(nèi)容回送給客戶端(參見圖1-5)。
5.1.1Web服務(wù)器的實(shí)現(xiàn)
Web服務(wù)器實(shí)現(xiàn)了HTTP和相關(guān)的TCP連接處理。負(fù)責(zé)管理Web服務(wù)器提供的資源,以及對(duì)Web服務(wù)器的配置、控制及擴(kuò)展方面的管理。
Web服務(wù)器邏輯實(shí)現(xiàn)了HTTP 協(xié)議、管理著Web資源,并負(fù)責(zé)提供Web服務(wù)器的管理功能。Web服務(wù)器邏輯和操作系統(tǒng)共同負(fù)責(zé)管理TCP連接。底層操作系統(tǒng)負(fù)責(zé)管理底層計(jì)算機(jī)系統(tǒng)的硬件細(xì)節(jié),并提供了TCP/IP網(wǎng)絡(luò)支持、負(fù)責(zé)裝載Web資源的文件系統(tǒng)以及控制當(dāng)前計(jì)算活動(dòng)的進(jìn)程管理功能。
5.3實(shí)際的Web服務(wù)器會(huì)做些什么
例5-1顯示的 Perl服務(wù)器是一個(gè)Web服務(wù)器的小例子。最先進(jìn)的商用Web服務(wù)器要比它復(fù)雜得多,但它們確實(shí)執(zhí)行了幾項(xiàng)同樣的任務(wù),如圖5-3所示。
(1)建立連接一—接受一個(gè)客戶端連接,或者如果不希望與這個(gè)客戶端建立連接,就
將其關(guān)閉。
(2)接收請(qǐng)求——從網(wǎng)絡(luò)中讀取一條HTTP請(qǐng)求報(bào)文。(3)處理請(qǐng)求——對(duì)請(qǐng)求報(bào)文進(jìn)行解釋,并采取行動(dòng)。(4)訪問資源-———訪問報(bào)文中指定的資源。
(5)構(gòu)建響應(yīng)——?jiǎng)?chuàng)建帶有正確首部的 HTTP響應(yīng)報(bào)文。(6)發(fā)送響應(yīng)——將響應(yīng)回送給客戶端。
(7)記錄事務(wù)處理過程—-將與已完成事務(wù)有關(guān)的內(nèi)容記錄在一個(gè)日志文件中。
5.4第一步——接受客戶端連接
如果客戶端已經(jīng)打開了一條到服務(wù)器的持久連接,可以使用那條連接來發(fā)送它的請(qǐng)求。否則,客戶端需要打開一條新的到服務(wù)器的連接(回顧第4章,復(fù)習(xí)一下HTTP的連接管理技術(shù))。
5.4.1處理新連接
客戶端請(qǐng)求一條到Web服務(wù)器的TCP連接時(shí),Web服務(wù)器會(huì)建立連接,判斷連接的另一端是哪個(gè)客戶端,從TCP連接中將IP地址解析出來。'一旦新連接建立起來
并被接受,服務(wù)器就會(huì)將新連接添加到其現(xiàn)存Web服務(wù)器連接列表中,做好監(jiān)視連接上數(shù)據(jù)傳輸?shù)臏?zhǔn)備。
Web服務(wù)器可以隨意拒絕或立即關(guān)閉任意一條連接。有些Web服務(wù)器會(huì)因?yàn)榭蛻舳薎P地址或主機(jī)名是未認(rèn)證的,或者因?yàn)樗且阎膼阂饪蛻舳硕P(guān)閉連接。Web服務(wù)器也可以使用其他識(shí)別技術(shù)。
5.4.2客戶端主機(jī)名識(shí)別
可以用“反向 DNS”對(duì)大部分Web服務(wù)器進(jìn)行配置,以便將客戶端IP地址轉(zhuǎn)換成客戶端主機(jī)名。Web服務(wù)器可以將客戶端主機(jī)名用于詳細(xì)的訪問控制和日志記錄。但要注意的是,主機(jī)名查找可能會(huì)花費(fèi)很長(zhǎng)時(shí)間,這樣會(huì)降低Web事務(wù)處理的速度。很多大容量Web服務(wù)器要么會(huì)禁止主機(jī)名解析,要么只允許對(duì)特定內(nèi)容進(jìn)行解析。
可以用配置指令HostnameLookups啟用Apache的主機(jī)查找功能。比如,例5-2中的Apache配置指令就只打開了HTML和CGI資源的主機(jī)名解析功能。
例5-2配置Apache,為 HTML和CGI資源查找主機(jī)名
HostnameLookups off
<Files ~" - 《html |htmlcgi)$">
HostnameLookups on
</Files>
5.5第二步—接收請(qǐng)求報(bào)文
連接上有數(shù)據(jù)到達(dá)時(shí),Web服務(wù)器會(huì)從網(wǎng)絡(luò)連接中讀取數(shù)據(jù),并將請(qǐng)求報(bào)文中的內(nèi)容解析出來(參見圖5-5)。
解析請(qǐng)求報(bào)文時(shí),Web服務(wù)器會(huì):
·解析請(qǐng)求行,查找請(qǐng)求方法、指定的資源標(biāo)識(shí)符(URI)以及版本號(hào),3各項(xiàng)之
間由一個(gè)空格分隔,并以一個(gè)回車換行(CRLF)序列作為行的結(jié)束,“
·讀取以CRLF結(jié)尾的報(bào)文首部;
檢測(cè)到以CRLF結(jié)尾的、標(biāo)識(shí)首部結(jié)束的空行(如果有的話)﹔
·如果有的話(長(zhǎng)度由content-Length首部指定),讀取請(qǐng)求主體。
解析請(qǐng)求報(bào)文時(shí),Web服務(wù)器會(huì)不定期地從網(wǎng)絡(luò)上接收輸入數(shù)據(jù)。網(wǎng)絡(luò)連接可能隨時(shí)都會(huì)出現(xiàn)延遲。Web服務(wù)器需要從網(wǎng)絡(luò)中讀取數(shù)據(jù),將部分報(bào)文數(shù)據(jù)臨時(shí)存儲(chǔ)在內(nèi)存中,直到收到足以進(jìn)行解析的數(shù)據(jù)并理解其意義為止。
5.5.1 報(bào)文的內(nèi)部表示法
有些Web服務(wù)器還會(huì)用便于進(jìn)行報(bào)文操作的內(nèi)部數(shù)據(jù)結(jié)構(gòu)來存儲(chǔ)請(qǐng)求報(bào)文。比如,數(shù)據(jù)結(jié)構(gòu)中可能包含有指向請(qǐng)求報(bào)文中各個(gè)片段的指針及其長(zhǎng)度,這樣就可以將這些首部存放在一個(gè)快速查詢表中,以便快速訪問特定首部的具體值了(參見圖5-6)。
5.5.2連接的輸入/輸出處理結(jié)構(gòu)
高性能的 Web服務(wù)器能夠同時(shí)支持?jǐn)?shù)千條連接。這些連接使得服務(wù)器可以與世界各地的客戶端進(jìn)行通信,每個(gè)客戶端都向服務(wù)器打開了一條或多條連接。某些連接可能在快速地向Web服務(wù)器發(fā)送請(qǐng)求,而其他一些連接則可能在慢慢發(fā)送,或者不經(jīng)常發(fā)送請(qǐng)求,還有一些可能是空閑的,安靜地等待著將來可能出現(xiàn)的動(dòng)作。
因?yàn)檎?qǐng)求可能會(huì)在任意時(shí)刻到達(dá),所以Web服務(wù)器會(huì)不停地觀察有無新的Web請(qǐng)求。不同的Web服務(wù)器結(jié)構(gòu)會(huì)以不同的方式為請(qǐng)求服務(wù),如圖5-7所示。
·單線程Web服務(wù)器(參見圖5-7a)
單線程的Web服務(wù)器一次只處理一個(gè)請(qǐng)求,直到其完成為止。一個(gè)事務(wù)處理結(jié)束之后,才去處理下一條連接。這種結(jié)構(gòu)易于實(shí)現(xiàn),但在處理過程中,所有其他連接都會(huì)被忽略。這樣會(huì)造成嚴(yán)重的性能問題,只適用于低負(fù)荷的服務(wù)器,以及type-o-serve這樣的診斷工具。
·多進(jìn)程及多線程Web服務(wù)器(參見圖5-7b)
多進(jìn)程和多線程Web服務(wù)器用多個(gè)進(jìn)程,或更高效的線程同時(shí)對(duì)請(qǐng)求進(jìn)行處理。3可以根據(jù)需要?jiǎng)?chuàng)建,或者預(yù)先創(chuàng)建一些線程/進(jìn)程?!阌行┓?wù)器會(huì)為每條連接分配一個(gè)線程/進(jìn)程,但當(dāng)服務(wù)器同時(shí)要處理成百、上千,甚至數(shù)以萬計(jì)的連接時(shí),需要的進(jìn)程或線程數(shù)量可能會(huì)消耗太多的內(nèi)存或系統(tǒng)資源。因此,很多多線程Web服務(wù)器都會(huì)對(duì)線程/進(jìn)程的最大數(shù)量進(jìn)行限制。
·復(fù)用I/O的服務(wù)器(參見圖5-7c)
為了支持大量的連接,很多Web服務(wù)器都采用了復(fù)用結(jié)構(gòu)。在復(fù)用結(jié)構(gòu)中,要同時(shí)監(jiān)視所有連接上的活動(dòng)。當(dāng)連接的狀態(tài)發(fā)生變化時(shí)(比如,有數(shù)據(jù)可用,或出現(xiàn)錯(cuò)誤時(shí)),就對(duì)那條連接進(jìn)行少量的處理,處理結(jié)束之后,將連接返回到開放連接列表中,等待下一次狀態(tài)變化。只有在有事情可做時(shí)才會(huì)對(duì)連接進(jìn)行處理,在空閑連接上等待的時(shí)候并不會(huì)綁定線程和進(jìn)程。
·復(fù)用的多線程Web服務(wù)器(參見圖5-7d)
有些系統(tǒng)會(huì)將多線程和復(fù)用功能結(jié)合在一起,以利用計(jì)算機(jī)平臺(tái)上的多個(gè)CPU.多個(gè)線程(通常是一個(gè)物理處理器)中的每一個(gè)都在觀察打開的連接(或打開的連接中的一個(gè)子集),并對(duì)每條連接執(zhí)行少量的任務(wù)。
5.6第三步———處理請(qǐng)求
一旦Web服務(wù)器收到了請(qǐng)求,就可以根據(jù)方法、資源、首部和可選的主體部分來對(duì)請(qǐng)求進(jìn)行處理了。
有些方法(比如POST)要求請(qǐng)求報(bào)文中必須帶有實(shí)體主體部分的數(shù)據(jù)。其他一些方法(比如OPTIONS)允許有請(qǐng)求的主體部分,也允許沒有。少數(shù)方法(比如GET)禁止在請(qǐng)求報(bào)文中包含實(shí)體的主體數(shù)據(jù)。
這里我們并不對(duì)請(qǐng)求的具體處理方式進(jìn)行討論,因?yàn)楸緯溆啻蠖鄶?shù)章節(jié)都在討論這個(gè)問題。
5.7第四步——-對(duì)資源的映射及訪問
Web 服務(wù)器是資源服務(wù)器。它們負(fù)責(zé)發(fā)送預(yù)先創(chuàng)建好的內(nèi)容,比如HTML頁(yè)面或JPEG 圖片,以及運(yùn)行在服務(wù)器上的資源生成程序所產(chǎn)生的動(dòng)態(tài)內(nèi)容。
5.7.1 docroot
Web服務(wù)器支持各種不同類型的資源映射,但最簡(jiǎn)單的資源映射形式就是用請(qǐng)求URI作為名字來訪問Web服務(wù)器文件系統(tǒng)中的文件。通常,Web服務(wù)器的文件系統(tǒng)中會(huì)有一個(gè)特殊的文件夾專門用于存放Web內(nèi)容。這個(gè)文件夾被稱為文檔的根目錄(document root,或docroot)。Web服務(wù)器從請(qǐng)求報(bào)文中獲取URI,并將其附加在文檔根目錄的后面。
在圖5-8中,有一條對(duì)/specials/saw-blade.gif 的請(qǐng)求到達(dá)。這個(gè)例子中Web服務(wù)器的文檔根目錄為/us/local/httpd/files。Web服務(wù)器會(huì)返回文件/usr/local/httpd/files/specials/saw-blade.gif。
在配置文件httpd.conf中添加一個(gè) DocumentRoot行就可以為Apache Web服務(wù)器設(shè)置文檔的根目錄了:
DocumentRoot /usr/ local/httpd/files
服務(wù)器要注意,不能讓相對(duì)URL退到docroot之外,將文件系統(tǒng)的其余部分暴露出來。比如,大多數(shù)成熟的Web服務(wù)器都不允許這樣的URI看到Joe的五金商店文檔根目錄上一級(jí)的文件:
http://www.joes-hardware.com/ ..
5.8.3重定向
Web服務(wù)器有時(shí)會(huì)返回重定向響應(yīng)而不是成功的報(bào)文。Web服務(wù)器可以將瀏覽器重定向到其他地方來執(zhí)行請(qǐng)求。重定向響應(yīng)由返回碼3XX說明。Location響應(yīng)首部包含了內(nèi)容的新地址或優(yōu)選地址的URI。重定向可用于下列情況。
·永久刪除的資源
資源可能已經(jīng)被移動(dòng)到了新的位置,或者被重新命名,有了一個(gè)新的URL。Web服務(wù)器可以告訴客戶端資源已經(jīng)被重命名了,這樣客戶端就可以在從新地址獲取資源之前,更新書簽之類的信息了。狀態(tài)碼301 Moved Permanently就用于此類重定向。·臨時(shí)刪除的資源
如果資源被臨時(shí)移走或重命名了,服務(wù)器可能希望將客戶端重定向到新的位置上去。但由于重命名是臨時(shí)的,所以服務(wù)器希望客戶端將來還可以回頭去使用老的URL,不要對(duì)書簽進(jìn)行更新。狀態(tài)碼303 See Other以及狀態(tài)碼307 TemporaryRedirect就用于此類重定向。
二、簡(jiǎn)述web技術(shù)的結(jié)構(gòu)
它是超級(jí)文本的簡(jiǎn)稱。二、超媒體(hypermedia) 超媒體是超文本(hypertext)和多媒體在信息瀏覽環(huán)境下的結(jié)合。它是超級(jí)媒體的簡(jiǎn)稱。用戶不僅能從一個(gè)文本跳到另一個(gè)文本,而且可以激活一段聲音,顯示一個(gè)圖形,甚至可以播放一段動(dòng)畫。Internet采用超文本和超媒體的信息組織方式,將信息的鏈接擴(kuò)展到整個(gè)Internet上。Web就是一種超文本信息系統(tǒng),Web的一個(gè)主要的概念就是超文本連接,它使得文本不再象一本書一樣是固定的線性的。而是可以從一個(gè)位置跳到另外的位置??梢詮闹蝎@取更多的信息??梢赞D(zhuǎn)到別的主題上。想要了解某一個(gè)主題的內(nèi)容只要在這個(gè)主題上點(diǎn)一下,就可以跳轉(zhuǎn)到包含這一主題的文檔上。正是這種多連接性把它稱為Web。三、超文本傳輸協(xié)議(HTTP) Hypertext Transfer Protocol超文本在互聯(lián)網(wǎng)上的傳輸協(xié)議。當(dāng)你想進(jìn)入萬維網(wǎng)上一個(gè)網(wǎng)頁(yè), 或者其他網(wǎng)絡(luò)資源的時(shí)候,通常你要首先在你的瀏覽器上鍵入你想訪問網(wǎng)頁(yè)的統(tǒng)一資源定位符(UniformResourceLocator),或者通過超鏈接方式鏈接到那個(gè)網(wǎng)頁(yè)或網(wǎng)絡(luò)資源。這之后的工作首先是URL的服務(wù)器名部分,被名為域名系統(tǒng)的分布于全球的因特網(wǎng)數(shù)據(jù)庫(kù)解析,并根據(jù)解析結(jié)果決定進(jìn)入哪一個(gè)IP地址(IP address)。接下來的步驟是為所要訪問的網(wǎng)頁(yè),向在那個(gè)IP地址工作的服務(wù)器發(fā)送一個(gè)HTTP請(qǐng)求。在通常情況下,HTML文本、圖片和構(gòu)成該網(wǎng)頁(yè)的一切其他文件很快會(huì)被逐一請(qǐng)求并發(fā)送回用戶。網(wǎng)絡(luò)瀏覽器接下來的工作是把HTML、CSS和其他接受到的文件所描述的內(nèi)容,加上圖像、鏈接和其他必須的資源,顯示給用戶。這些就構(gòu)成了你所看到的“網(wǎng)頁(yè)”。大多數(shù)的網(wǎng)頁(yè)自身包含有超鏈接指向其他相關(guān)網(wǎng)頁(yè),可能還有下載、源文獻(xiàn)、定義和其他網(wǎng)絡(luò)資源。像這樣通過超鏈接,把有用的相關(guān)資源組織在一起的集合,就形成了一個(gè)所謂的信息的“網(wǎng)”。這個(gè)網(wǎng)在因特網(wǎng)上被方便使用,就構(gòu)成了最早在1990年代初蒂姆·伯納斯-李所說的萬維網(wǎng)。傳統(tǒng)的Web數(shù)據(jù)庫(kù)系統(tǒng)體系結(jié)構(gòu) 傳統(tǒng)的Web數(shù)據(jù)庫(kù)系統(tǒng)一般實(shí)現(xiàn)Web數(shù)據(jù)庫(kù)系統(tǒng)的連接和應(yīng)用可采取兩種方法,一種是在Web服務(wù)器端提供中間件來連接Web服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器,另一種是把應(yīng)用程序下載到客戶端并在客戶端直接訪問數(shù)據(jù)庫(kù)。中間件負(fù)責(zé)管理Web服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器之間的通信并提供應(yīng)用程序服務(wù),它能夠直接調(diào)用外部程序或腳本代碼來訪問數(shù)據(jù)庫(kù),因此可以提供與數(shù)據(jù)庫(kù)相關(guān)的動(dòng)態(tài)HTML頁(yè)面,或執(zhí)行用戶查詢,并將查詢結(jié)果格式化成HTML頁(yè)面。通過Web服務(wù)器返回給Web瀏覽器。最基本的中間件技術(shù)有通過網(wǎng)關(guān)接口CGI和應(yīng)用程序接口API兩種。(一)、基于通用網(wǎng)關(guān)接口CGI CGI是WWW服務(wù)器運(yùn)行時(shí)外部程序的規(guī)范,按照CGI編寫的程序可以擴(kuò)展服務(wù)器的功能,完成服務(wù)器本身不能完成的工作,外部程序執(zhí)行時(shí)間可以生成HTML文檔,并將文檔返回WWW服務(wù)器。CGI應(yīng)用程序能夠與瀏覽器進(jìn)行交互作用,還可以通過數(shù)據(jù)庫(kù)的API與數(shù)據(jù)庫(kù)服務(wù)器等外部數(shù)據(jù)源進(jìn)行通信,如一個(gè)CGI程序可以從數(shù)據(jù)庫(kù)服務(wù)器中獲取數(shù)據(jù),然后格式化為HTML文檔后發(fā)送給瀏覽器,也可以將從瀏覽器獲得的數(shù)據(jù)放到數(shù)據(jù)庫(kù)中。幾乎使用的服務(wù)器軟件都支持CGI,開發(fā)人員可以使用任何一種WWW服務(wù)器內(nèi)置語言編寫CGI,其中包括流行的C、C、VB和Delphi等。從體系結(jié)構(gòu)上來看,用戶通過Web瀏覽器輸入查詢信息,瀏覽器通過HTTP協(xié)議向Web服務(wù)器發(fā)出帶有查詢信息的請(qǐng)求,Web服務(wù)器按照CGI協(xié)議激活外部CGI程序,由該程序向DBMS發(fā)出SQL請(qǐng)求并將結(jié)果轉(zhuǎn)化為HTML后返回給Web服務(wù)器。再由Web服務(wù)器返回給Web瀏覽器。這種結(jié)構(gòu)體現(xiàn)了客戶/服務(wù)器方式的三層模型,其中Web服務(wù)器和CGI程序?qū)嶋H起到了HTML和SQL轉(zhuǎn)換的網(wǎng)關(guān)的作用。CGI的典型操作過程是:分析CGI數(shù)據(jù);打開與DBMS的連接;發(fā)送SQL請(qǐng)求并得到結(jié)果;將結(jié)果轉(zhuǎn)化為HTML;關(guān)閉DBMS的連接;將HTML結(jié)果返回給Web服務(wù)器?;赪eb的數(shù)據(jù)庫(kù)訪問利用已有的信息資源和服務(wù)器。其訪問頻率大,尤其是熱點(diǎn)數(shù)據(jù)。但其主要的缺點(diǎn)是:①客戶端與后端數(shù)據(jù)庫(kù)服務(wù)器通信必須通過Web服務(wù)器,且Web服務(wù)器要進(jìn)行數(shù)據(jù)與HTML文檔的互相轉(zhuǎn)換,當(dāng)多個(gè)用戶同時(shí)發(fā)出請(qǐng)求時(shí),必然在Web服務(wù)器形成信息和發(fā)布瓶頸。②CGI應(yīng)用程序每次運(yùn)行都需打開和關(guān)閉數(shù)據(jù)庫(kù)連接,效率低,操作費(fèi)時(shí);③CGI應(yīng)用程序不能由多個(gè)客戶機(jī)請(qǐng)求共享,即使新請(qǐng)求到來時(shí)CGI程序正在運(yùn)行,也會(huì)啟動(dòng)另一個(gè)CGI應(yīng)用程序,隨著并行請(qǐng)求的數(shù)量增加,服務(wù)器上將生成越來越多的進(jìn)程。為每個(gè)請(qǐng)求都生成進(jìn)程既費(fèi)時(shí)又需要大量?jī)?nèi)存,影響了資源的使用效率,導(dǎo)致性能降低并增加等待時(shí)間;④由于SQL與HTML差異很大,CGI程序中的轉(zhuǎn)換代碼編寫繁瑣,維護(hù)困難;⑤安全性差,缺少用戶訪問控制,對(duì)數(shù)據(jù)庫(kù)難以設(shè)置安全訪問權(quán)限;⑥HTTP協(xié)議是無狀態(tài)且沒有常連接的協(xié)議,DBMS事務(wù)的提交與否無法得到驗(yàn)證,不能構(gòu)造Web上的OLTP應(yīng)用。(二)、基于服務(wù)器擴(kuò)展的API 為了克服CGI的局限性,出現(xiàn)的另一種中間件解決方案是基于服務(wù)器擴(kuò)展API的結(jié)構(gòu)。與CGI相比,API應(yīng)用程序與Web服務(wù)器結(jié)合得更加緊密,占用的系統(tǒng)資源也少得多,而運(yùn)行效率卻大大提高,同時(shí)還提供更好的保護(hù)和安全性。服務(wù)器API一般作為一個(gè)DLL提供,是駐留在WWW服務(wù)器中的程序代碼,其擴(kuò)展WWW服務(wù)器的功能與CGI相同。WWW開發(fā)人員不僅可以API解決CGI可以解決的一切問題,而且能夠進(jìn)一步解決基于不同WWW應(yīng)用程序的特殊請(qǐng)求。各種API與其相應(yīng)的WWW服務(wù)器緊密結(jié)合,其初始開發(fā)目標(biāo)服務(wù)器的運(yùn)行性能進(jìn)一步發(fā)掘、提高。用API開發(fā)的程序比用CGI開發(fā)的程序在性能上提高了很多,但開發(fā)API程序比開發(fā)CGI程序要復(fù)雜得多。API應(yīng)用程序需要一些編程方面的專門知識(shí),如多線程、進(jìn)程同步、直接協(xié)議編程以及錯(cuò)誤處理等。目前主要的WWWAPI有Microsoft公司的ISAPI、Netscape公司的NSAPI和OReily公司的WSAPI等。使用ISPAI開發(fā)的程序性能要優(yōu)于用CGI開發(fā)的程序,這主要是因?yàn)镮SAPI應(yīng)用程序是一些與WWW服務(wù)器軟件處于同一地址空間的DLL,因此所有的HTTP服務(wù)器進(jìn)程能夠直接利用各種資源這顯然比調(diào)用不在同一地址空間的CGI程序語句要占用更少的系統(tǒng)時(shí)間。而NSAPI同ISAPI一樣,給WWW開發(fā)人員定制了NetscapeWWW服務(wù)器基本服務(wù)的功能。開發(fā)人員利用NSAPI可以開發(fā)與WWW服務(wù)器的接口,以及與數(shù)據(jù)庫(kù)服務(wù)器等外部資源的接口。雖然基于服務(wù)器擴(kuò)展API的結(jié)構(gòu)可以方便、靈活地實(shí)現(xiàn)各種功能,連接所有支持32位ODBC的數(shù)據(jù)庫(kù)系統(tǒng),但這種結(jié)構(gòu)的缺陷也是明顯的:①各種API之間兼容性很差,缺乏統(tǒng)一的標(biāo)準(zhǔn)來管理這些接口;②開發(fā)API應(yīng)用程序也要比開發(fā)CGI應(yīng)用復(fù)雜得多; ③這些API只能工作在專用Web服務(wù)器和操作系統(tǒng)上。(三)、基于JDBC的Web數(shù)據(jù)庫(kù)技術(shù) Java的推出,使WWW頁(yè)面有了活力和動(dòng)感。Internet用戶可以從WWW服務(wù)器上下載Java小程序到本地瀏覽器運(yùn)行。這些下載的小程序就像本地程序一樣,可獨(dú)立地訪問本地和其他服務(wù)器資源。而最初的Java語言并沒有數(shù)據(jù)庫(kù)訪問的功能,隨著應(yīng)用的深入,要求Java提供數(shù)據(jù)庫(kù)訪問功能的呼聲越來越高。為了防止出現(xiàn)對(duì)Java在數(shù)據(jù)庫(kù)訪問方面各不相同的擴(kuò)展,JavaSoft公司指定了JDBC,作為Java語言的數(shù)據(jù)庫(kù)訪問API。采用JDBC技術(shù),在JavaApplet中訪問數(shù)據(jù)庫(kù)的優(yōu)點(diǎn)在于:直接訪問數(shù)據(jù)庫(kù),不再需要Web數(shù)據(jù)庫(kù)的介入,從而避開了CGI方法的一些局限性;用戶訪問控制可以由數(shù)據(jù)庫(kù)服務(wù)器本地的安全機(jī)制來解決,提高了安全性;JDBC是支持基本SQL功能的一個(gè)通用低層的應(yīng)用程序接口,在不同的數(shù)據(jù)庫(kù)功能的層次上提供了一個(gè)統(tǒng)一的用戶界面,為跨平臺(tái)跨數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行直接的Web訪問提供了方案。從而克服了API方法一些缺陷;同時(shí),可以方便地實(shí)現(xiàn)與用戶地交互,提供豐富的圖形功能和聲音、視頻等多媒體信息功能。JDBC是用于執(zhí)行SQL語句的Java應(yīng)用程序接口API,由Java語言編寫的類和接口組成。Java是一種面向?qū)ο?、多線程與平臺(tái)無關(guān)的編程語言,具有極強(qiáng)的可移植性、安全性和強(qiáng)健性。JDBC是一種規(guī)范,能為開發(fā)者提供標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)訪問類和接口,能夠方便地向任何關(guān)系數(shù)據(jù)庫(kù)發(fā)送SQL語句,同時(shí)JDBC是一個(gè)支持基本SQL功能的低層應(yīng)用程序接口,但實(shí)際上也支持高層的數(shù)據(jù)庫(kù)訪問工具及API。所有這些工作都建立在X/Open SQL CLI基礎(chǔ)上。JDBC的主要任務(wù)是定義一個(gè)自然的Java接口來與X/OpenCLI中定義的抽象層和概念連接。JDBC的兩種主要接口分別面向應(yīng)用程序的開發(fā)人員的JDBC API和面向驅(qū)動(dòng)程序低層的JDBC DriverAPI。JDBC完成的工作是:建立與數(shù)據(jù)庫(kù)的連接;發(fā)送SQL語句;返回?cái)?shù)據(jù)結(jié)果給Web瀏覽器。
三、web服務(wù)器
WEB服務(wù)器
編輯本段什么是WEB服務(wù)器
WEB服務(wù)器也稱為WWW(WORLD WIDE WEB)服務(wù)器,主要功能是提供網(wǎng)上信息瀏覽服務(wù)。
(1)應(yīng)用層使用HTTP協(xié)議。
(2)HTML文檔格式。
(3)瀏覽器統(tǒng)一資源定位器(URL)。
WWW代表萬維網(wǎng)的意思
WWW 是 Internet 的多媒體信息查詢工具,是 Internet 上近年才發(fā)展起來的服務(wù),也是發(fā)展最快和目前用的最廣泛的服務(wù)。正是因?yàn)橛辛薟WW工具,才使得近年來 Internet 迅速發(fā)展,且用戶數(shù)量飛速增長(zhǎng)。
1、WWW簡(jiǎn)介
WWW 是 World Wide Web (環(huán)球信息網(wǎng))的縮寫,也可以簡(jiǎn)稱為 Web,中文名字為“萬維網(wǎng)”。它起源于1989年3月,由歐洲量子物理實(shí)驗(yàn)室 CERN(the European Laboratory for Particle Physics)所發(fā)展出來的主從結(jié)構(gòu)分布式超媒體系統(tǒng)。通過萬維網(wǎng),人們只要通過使用簡(jiǎn)單的方法,就可以很迅速方便地取得豐富的信息資料。 由于用戶在通過 Web 瀏覽器訪問信息資源的過程中,無需再關(guān)心一些技術(shù)性的細(xì)節(jié),而且界面非常友好,因而 Web 在Internet 上一推出就受到了熱烈的歡迎,走紅全球,并迅速得到了爆炸性的發(fā)展。
2、WWW的發(fā)展和特點(diǎn)
長(zhǎng)期以來,人們只是通過傳統(tǒng)的媒體(如電視、報(bào)紙、雜志和廣播等)獲得信息。但隨著計(jì)算機(jī)網(wǎng)絡(luò)的發(fā)展,人們想要獲取信息,已不再滿足于傳統(tǒng)媒體那種單方面?zhèn)鬏敽瞳@取的方式,而希望有一種主觀的選擇性?,F(xiàn)在,網(wǎng)絡(luò)上提供各種類別的數(shù)據(jù)庫(kù)系統(tǒng),如文獻(xiàn)期刊、產(chǎn)業(yè)信息、氣象信息、論文檢索等等。由于計(jì)算機(jī)網(wǎng)絡(luò)的發(fā)展,信息的獲取變得非常及時(shí)、迅速和便捷。
到了1993年,WWW 的技術(shù)有了突破性的進(jìn)展,它解決了遠(yuǎn)程信息服務(wù)中的文字顯示、數(shù)據(jù)連接以及圖像傳遞的問題,使得 WWW 成為 Internet 上最為流行的信息傳播方式。 現(xiàn)在,Web 服務(wù)器成為 Internet 上最大的計(jì)算機(jī)群,Web 文檔之多、鏈接的網(wǎng)絡(luò)之廣,令人難以想象。可以說,Web 為 Internet 的普及邁出了開創(chuàng)性的一步,是近年來 Internet 上取得的最激動(dòng)人心的成就。
WWW 采用的是客戶/服務(wù)器結(jié)構(gòu),其作用是整理和儲(chǔ)存各種WWW資源,并響應(yīng)客戶端軟件的請(qǐng)求,把客戶所需的資源傳送到 Windows 95(或Windows98)、Windows NT、UNIX 或 Linux 等平臺(tái)上。
使用最多的 web server 服務(wù)器軟件 有兩個(gè):微軟的信息服務(wù)器(iis),和Apache。
通俗的講,Web服務(wù)器傳送(serves)頁(yè)面使瀏覽器可以瀏覽,然而應(yīng)用程序服務(wù)器提供的是客戶端應(yīng)用程序可以調(diào)用(call)的方法(methods)。確切一點(diǎn),你可以說:Web服務(wù)器專門處理HTTP請(qǐng)求(request),但是應(yīng)用程序服務(wù)器是通過很多協(xié)議來為應(yīng)用程序提供(serves)商業(yè)邏輯(business logic)。
Web服務(wù)器可以解析(handles)HTTP協(xié)議。當(dāng)Web服務(wù)器接收到一個(gè)HTTP請(qǐng)求(request),會(huì)返回一個(gè)HTTP響應(yīng)(response),例如送回一個(gè)HTML頁(yè)面。為了處理一個(gè)請(qǐng)求(request),Web服務(wù)器可以響應(yīng)(response)一個(gè)靜態(tài)頁(yè)面或圖片,進(jìn)行頁(yè)面跳轉(zhuǎn)(redirect),或者把動(dòng)態(tài)響應(yīng)(dynamic response)的產(chǎn)生委托(delegate)給一些其它的程序例如CGI腳本,JSP(JavaServer Pages)腳本,servlets,ASP(Active Server Pages)腳本,服務(wù)器端(server-side)JavaScript,或者一些其它的服務(wù)器端(server-side)技術(shù)。無論它們(譯者注:腳本)的目的如何,這些服務(wù)器端(server-side)的程序通常產(chǎn)生一個(gè)HTML的響應(yīng)(response)來讓瀏覽器可以瀏覽。
要知道,Web服務(wù)器的代理模型(delegation model)非常簡(jiǎn)單。當(dāng)一個(gè)請(qǐng)求(request)被送到Web服務(wù)器里來時(shí),它只單純的把請(qǐng)求(request)傳遞給可以很好的處理請(qǐng)求(request)的程序(譯者注:服務(wù)器端腳本)。Web服務(wù)器僅僅提供一個(gè)可以執(zhí)行服務(wù)器端(server-side)程序和返回(程序所產(chǎn)生的)響應(yīng)(response)的環(huán)境,而不會(huì)超出職能范圍。服務(wù)器端(server-side)程序通常具有事務(wù)處理(transaction processing),數(shù)據(jù)庫(kù)連接(database connectivity)和消息(messaging)等功能。
雖然Web服務(wù)器不支持事務(wù)處理或數(shù)據(jù)庫(kù)連接池,但它可以配置(employ)各種策略(strategies)來實(shí)現(xiàn)容錯(cuò)性(fault tolerance)和可擴(kuò)展性(scalability),例如負(fù)載平衡(load balancing),緩沖(caching)。集群特征(clustering—features)經(jīng)常被誤認(rèn)為僅僅是應(yīng)用程序服務(wù)器專有的特征。
應(yīng)用程序服務(wù)器(The Application Server)
根據(jù)我們的定義,作為應(yīng)用程序服務(wù)器,它通過各種協(xié)議,可以包括HTTP,把商業(yè)邏輯暴露給(expose)客戶端應(yīng)用程序。Web服務(wù)器主要是處理向?yàn)g覽器發(fā)送HTML以供瀏覽,而應(yīng)用程序服務(wù)器提供訪問商業(yè)邏輯的途徑以供客戶端應(yīng)用程序使用。應(yīng)用程序使用此商業(yè)邏輯就象你調(diào)用對(duì)象的一個(gè)方法(或過程語言中的一個(gè)函數(shù))一樣。
應(yīng)用程序服務(wù)器的客戶端(包含有圖形用戶界面(GUI)的)可能會(huì)運(yùn)行在一臺(tái)PC、一個(gè)Web服務(wù)器或者甚至是其它的應(yīng)用程序服務(wù)器上。在應(yīng)用程序服務(wù)器與其客戶端之間來回穿梭(traveling)的信息不僅僅局限于簡(jiǎn)單的顯示標(biāo)記。相反,這種信息就是程序邏輯(program logic)。 正是由于這種邏輯取得了(takes)數(shù)據(jù)和方法調(diào)用(calls)的形式而不是靜態(tài)HTML,所以客戶端才可以隨心所欲的使用這種被暴露的商業(yè)邏輯。
在大多數(shù)情形下,應(yīng)用程序服務(wù)器是通過組件(component)的應(yīng)用程序接口(API)把商業(yè)邏輯暴露(expose)(給客戶端應(yīng)用程序)的,例如基于J2EE(Java 2 Platform, Enterprise Edition)應(yīng)用程序服務(wù)器的EJB(Enterprise JavaBean)組件模型。此外,應(yīng)用程序服務(wù)器可以管理自己的資源,例如看大門的工作(gate-keeping duties)包括安全(security),事務(wù)處理(transaction processing),資源池(resource pooling), 和消息(messaging)。就象Web服務(wù)器一樣,應(yīng)用程序服務(wù)器配置了多種可擴(kuò)展(scalability)和容錯(cuò)(fault tolerance)技術(shù)。
例如,設(shè)想一個(gè)在線商店(網(wǎng)站)提供實(shí)時(shí)定價(jià)(real-time pricing)和有效性(availability)信息。這個(gè)站點(diǎn)(site)很可能會(huì)提供一個(gè)表單(form)讓你來選擇產(chǎn)品。當(dāng)你提交查詢(query)后,網(wǎng)站會(huì)進(jìn)行查找(lookup)并把結(jié)果內(nèi)嵌在HTML頁(yè)面中返回。網(wǎng)站可以有很多種方式來實(shí)現(xiàn)這種功能。我要介紹一個(gè)不使用應(yīng)用程序服務(wù)器的情景和一個(gè)使用應(yīng)用程序服務(wù)器的情景。觀察一下這兩中情景的不同會(huì)有助于你了解應(yīng)用程序服務(wù)器的功能。
情景1:不帶應(yīng)用程序服務(wù)器的Web服務(wù)器
在此種情景下,一個(gè)Web服務(wù)器獨(dú)立提供在線商店的功能。Web服務(wù)器獲得你的請(qǐng)求(request),然后發(fā)送給服務(wù)器端(server-side)可以處理請(qǐng)求(request)的程序。此程序從數(shù)據(jù)庫(kù)或文本文件(flat file,譯者注:flat file是指沒有特殊格式的非二進(jìn)制的文件,如properties和XML文件等)中查找定價(jià)信息。一旦找到,服務(wù)器端(server-side)程序把結(jié)果信息表示成(formulate)HTML形式,最后Web服務(wù)器把會(huì)它發(fā)送到你的Web瀏覽器。
簡(jiǎn)而言之,Web服務(wù)器只是簡(jiǎn)單的通過響應(yīng)(response)HTML頁(yè)面來處理HTTP請(qǐng)求(request)。
情景2:帶應(yīng)用程序服務(wù)器的Web服務(wù)器
情景2和情景1相同的是Web服務(wù)器還是把響應(yīng)(response)的產(chǎn)生委托(delegates)給腳本(譯者注:服務(wù)器端(server-side)程序)。然而,你可以把查找定價(jià)的商業(yè)邏輯(business logic)放到應(yīng)用程序服務(wù)器上。由于這種變化,此腳本只是簡(jiǎn)單的調(diào)用應(yīng)用程序服務(wù)器的查找服務(wù)(lookup service),而不是已經(jīng)知道如何查找數(shù)據(jù)然后表示為(formulate)一個(gè)響應(yīng)(response)。 這時(shí)當(dāng)該腳本程序產(chǎn)生HTML響應(yīng)(response)時(shí)就可以使用該服務(wù)的返回結(jié)果了。
在此情景中,應(yīng)用程序服務(wù)器提供(serves)了用于查詢產(chǎn)品的定價(jià)信息的商業(yè)邏輯。(服務(wù)器的)這種功能(functionality)沒有指出有關(guān)顯示和客戶端如何使用此信息的細(xì)節(jié),相反客戶端和應(yīng)用程序服務(wù)器只是來回傳送數(shù)據(jù)。當(dāng)有客戶端調(diào)用應(yīng)用程序服務(wù)器的查找服務(wù)(lookup service)時(shí),此服務(wù)只是簡(jiǎn)單的查找并返回結(jié)果給客戶端。
通過從響應(yīng)產(chǎn)生(response-generating)HTML的代碼中分離出來,在應(yīng)用程序之中該定價(jià)(查找)邏輯的可重用性更強(qiáng)了。其他的客戶端,例如收款機(jī),也可以調(diào)用同樣的服務(wù)(service)來作為一個(gè)店員給客戶結(jié)帳。相反,在情景1中的定價(jià)查找服務(wù)是不可重用的因?yàn)樾畔?nèi)嵌在HTML頁(yè)中了。
總而言之,在情景2的模型中,在Web服務(wù)器通過回應(yīng)HTML頁(yè)面來處理HTTP請(qǐng)求(request),而應(yīng)用程序服務(wù)器則是通過處理定價(jià)和有效性(availability)請(qǐng)求(request)來提供應(yīng)用程序邏輯的。
警告(Caveats)
現(xiàn)在,XML Web Services已經(jīng)使應(yīng)用程序服務(wù)器和Web服務(wù)器的界線混淆了。通過傳送一個(gè)XML有效載荷(payload)給服務(wù)器,Web服務(wù)器現(xiàn)在可以處理數(shù)據(jù)和響應(yīng)(response)的能力與以前的應(yīng)用程序服務(wù)器同樣多了。
另外,現(xiàn)在大多數(shù)應(yīng)用程序服務(wù)器也包含了Web服務(wù)器,這就意味著可以把Web服務(wù)器當(dāng)作是應(yīng)用程序服務(wù)器的一個(gè)子集(subset)。雖然應(yīng)用程序服務(wù)器包含了Web服務(wù)器的功能,但是開發(fā)者很少把應(yīng)用程序服務(wù)器部署(deploy)成這種功能(capacity)(譯者注:這種功能是指既有應(yīng)用程序服務(wù)器的功能又有Web服務(wù)器的功能)。相反,如果需要,他們通常會(huì)把Web服務(wù)器獨(dú)立配置,和應(yīng)用程序服務(wù)器一前一后。這種功能的分離有助于提高性能(簡(jiǎn)單的Web請(qǐng)求(request)就不會(huì)影響應(yīng)用程序服務(wù)器了),分開配置(專門的Web服務(wù)器,集群(clustering)等等),而且給最佳產(chǎn)品的選取留有余地。
編輯本段大型WEB服務(wù)器
在UNIX和LINUX平臺(tái)下使用最廣泛的免費(fèi)HTTP服務(wù)器是W3C、NCSA和APACHE服務(wù)器,而Windows平臺(tái)NT/2000/2003使用IIS的WEB服務(wù)器。在選擇使用WEB服務(wù)器應(yīng)考慮的本身特性因素有:性能、安全性、日志和統(tǒng)計(jì)、虛擬主機(jī)、代理服務(wù)器、緩沖服務(wù)和集成應(yīng)用程序等,下面介紹幾種常用的WEB服務(wù)器。
Microsoft IIS
Microsoft的Web服務(wù)器產(chǎn)品為Internet Information Server (IIS), IIS 是允許在公共Intranet或Internet上發(fā)布信息的Web服務(wù)器。IIS是目前最流行的Web服務(wù)器產(chǎn)品之一,很多著名的網(wǎng)站都是建立在IIS的平臺(tái)上。IIS提供了一個(gè)圖形界面的管理工具,稱為 Internet服務(wù)管理器,可用于監(jiān)視配置和控制Internet服務(wù)。
IIS是一種Web服務(wù)組件,其中包括Web服務(wù)器、FTP服務(wù)器、NNTP服務(wù)器和SMTP服務(wù)器,分別用于網(wǎng)頁(yè)瀏覽、文件傳輸、新聞服務(wù)和郵件發(fā)送等方面,它使得在網(wǎng)絡(luò)(包括互聯(lián)網(wǎng)和局域網(wǎng))上發(fā)布信息成了一件很容易的事。它提供ISAPI(Intranet Server API)作為擴(kuò)展Web服務(wù)器功能的編程接口;同時(shí),它還提供一個(gè)Internet數(shù)據(jù)庫(kù)連接器,可以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的查詢和更新。
IBM WebSphere
WebSphere Application Server 是 一 種功能完善、開放的Web應(yīng)用程序服務(wù)器,是IBM電子商務(wù)計(jì)劃的核心部分,它是基于 Java 的應(yīng)用環(huán)境,用于建立、部署和管理 Internet 和 Intranet Web 應(yīng)用程序。 這一整套產(chǎn)品進(jìn)行了擴(kuò)展,以適應(yīng) Web 應(yīng)用程序服務(wù)器的需要,范圍從簡(jiǎn)單到高級(jí)直到企業(yè)級(jí)。
WebSphere 針對(duì)以 Web 為中心的開發(fā)人員,他們都是在基本 HTTP服務(wù)器和 CGI 編程技術(shù)上成長(zhǎng)起來的。IBM 將提供 WebSphere 產(chǎn)品系列,通過提供綜合資源、可重復(fù)使用的組件、功能強(qiáng)大并易于使用的工具、以及支持 HTTP 和 IIOP 通信的可伸縮運(yùn)行時(shí)環(huán)境,來幫助這些用戶從簡(jiǎn)單的 Web 應(yīng)用程序轉(zhuǎn)移到電子商務(wù)世界。
BEA WebLogic
BEA WebLogic Server 是一種多功能、基于標(biāo)準(zhǔn)的web應(yīng)用服務(wù)器,為企業(yè)構(gòu)建自己的應(yīng)用提供了堅(jiān)實(shí)的基礎(chǔ)。各種應(yīng)用開發(fā)、部署所有關(guān)鍵性的任務(wù),無論是集成各種系統(tǒng)和數(shù)據(jù)庫(kù),還是提交服務(wù)、跨 Internet 協(xié)作,起始點(diǎn)都是 BEA WebLogic Server。由于 它具有全面的功能、對(duì)開放標(biāo)準(zhǔn)的遵從性、多層架構(gòu)、支持基于組件的開發(fā),基于 Internet 的企業(yè)都選擇它來開發(fā)、部署最佳的應(yīng)用。
BEA WebLogic Server 在使應(yīng)用服務(wù)器成為企業(yè)應(yīng)用架構(gòu)的基礎(chǔ)方面繼續(xù)處于領(lǐng)先地位。BEA WebLogic Server 為構(gòu)建集成化的企業(yè)級(jí)應(yīng)用提供了穩(wěn)固的基礎(chǔ),它們以 Internet 的容量和速度,在連網(wǎng)的企業(yè)之間共享信息、提交服務(wù),實(shí)現(xiàn)協(xié)作自動(dòng)化。
APACHE
apache仍然是世界上用的最多的Web服務(wù)器,市場(chǎng)占有率達(dá)60%左右。它源于NCSAhttpd服務(wù)器,當(dāng)NCSA WWW服務(wù)器項(xiàng)目停止后,那些使用NCSA WWW服務(wù)器的人們開始交換用于此服務(wù)器的補(bǔ)丁,這也是apache名稱的由來(pache 補(bǔ)丁)。世界上很多著名的網(wǎng)站都是Apache的產(chǎn)物,它的成功之處主要在于它的源代碼開放、有一支開放的開發(fā)隊(duì)伍、支持跨平臺(tái)的應(yīng)用(可以運(yùn)行在幾乎所有的Unix、Windows、Linux系統(tǒng)平臺(tái)上)以及它的可移植性等方面。
Tomcat
Tomcat是一個(gè)開放源代碼、運(yùn)行servlet和JSP Web應(yīng)用軟件的基于Java的Web應(yīng)用軟件容器。Tomcat Server是根據(jù)servlet和JSP規(guī)范進(jìn)行執(zhí)行的,因此我們就可以說Tomcat Server也實(shí)行了Apache-Jakarta規(guī)范且比絕大多數(shù)商業(yè)應(yīng)用軟件服務(wù)器要好。
Tomcat是Java Servlet 2.2和JavaServer Pages 1.1技術(shù)的標(biāo)準(zhǔn)實(shí)現(xiàn),是基于Apache許可證下開發(fā)的自由軟件。Tomcat是完全重寫的Servlet API 2.2和JSP 1.1兼容的Servlet/JSP容器。Tomcat使用了JServ的一些代碼,特別是Apache服務(wù)適配器。隨著Catalina Servlet引擎的出現(xiàn),Tomcat第四版號(hào)的性能得到提升,使得它成為一個(gè)值得考慮的Servlet/JSP容器,因此目前許多WEB服務(wù)器都是采用Tomcat。
編輯本段小型WEB服務(wù)器
【 micro_httpd - really small HTTP server】
特點(diǎn):
* 支持安全的 .. 上級(jí)目錄過濾
* 支持通用的MIME類型
* 支持簡(jiǎn)單的目錄
* 支持目錄列表
* 支持使用 index.html 作為首頁(yè)
* Trailing-slash redirection
* 程序總共代碼才200多行
這個(gè)httpd適合學(xué)習(xí)簡(jiǎn)單的Web Server編寫學(xué)習(xí),因?yàn)樗挥幸粋€(gè)簡(jiǎn)單的框架,只能夠處理簡(jiǎn)單的靜態(tài)頁(yè),可以考慮用來放靜態(tài)頁(yè)。
官方地址:http://www.acme.com/software/micro_httpd/
下載地址:http://www.acme.com/software/micro_httpd/micro_httpd_12dec2005.tar.gz
【 mini_httpd - small HTTP server 】
特點(diǎn):
* 支持GET、HEAD、POST方法
* 支持CGI功能
* 支持基本的驗(yàn)證功能
* 支持安全 .. 上級(jí)目錄功能
* 支持通用的MIME類型
* 支持目錄列表功能
* 支持使用 index.html, index.htm, index.cgi 作為首頁(yè)
* 支持多個(gè)根目錄的虛擬主機(jī)
* 支持標(biāo)準(zhǔn)日志記錄
* 支持自定義錯(cuò)誤頁(yè)
* Trailing-slash redirection
mini_httpd 也是相對(duì)比較適合學(xué)習(xí)使用,大體實(shí)現(xiàn)了一個(gè)Web Server的功能,支持靜態(tài)頁(yè)和CGI,能夠用來放置一些個(gè)人簡(jiǎn)單的東西,不適宜投入生產(chǎn)使用。
官方地址: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中是一個(gè)簡(jiǎn)單,小型,輕便,快速和安全的http服務(wù)器.
簡(jiǎn)單:它能夠支持HTTP/1.1協(xié)議標(biāo)準(zhǔn),或者超過了最低水平
小巧:它具有非常少的運(yùn)行時(shí)間,因?yàn)樗籪ork子進(jìn)程來接受新請(qǐng)求,并且非常謹(jǐn)慎的分配內(nèi)存(性能對(duì)比表:http://www.acme.com/software/thttpd/benchmarks.html)
便攜:它能夠在大部分的類Unix系統(tǒng)上運(yùn)行,包括FreeBSD, SunOS 4, Solaris 2, BSD/OS, Linux, OSF等等
快速:它的速度要超過主流的Web服務(wù)器(Apache, NCSA, Netscape),在高負(fù)載情況下,它要快的多
安全:它努力的保護(hù)主機(jī)不受到攻擊,不中斷服務(wù)器
thttpd 類似于lighttpd,對(duì)于并發(fā)請(qǐng)求不使用fork()來派生子進(jìn)程處理,而是采用多路復(fù)用(Multiplex)技術(shù)來實(shí)現(xiàn)。因此效能很好。同時(shí)它還有一個(gè)特點(diǎn)就是基于URL的文件流量限制,這對(duì)于下載的流量控制而言是非常方便的。象Apache就必須使用插件實(shí)現(xiàn),效率較thttpd低。
thttpd跟lighttpd類似,適合靜態(tài)資源類的服務(wù),比如圖片、資源文件、靜態(tài)HTML等等的應(yīng)用,性能應(yīng)該比較好,同時(shí)也適合簡(jiǎn)單的CGI應(yīng)用的場(chǎng)合。
官方地址:http://www.acme.com/software/thttpd/
下載地址:http://www.acme.com/software/thttpd/thttpd-2.25b.tar.gz
【 lighttpd - light footprint + httpd = LightTPD 】
Lighttpd是一個(gè)德國(guó)人領(lǐng)導(dǎo)的開源軟件,其根本的目的是提供一個(gè)專門針對(duì)高性能網(wǎng)站,安全、快速、兼容性好并且靈活的web server環(huán)境。具有非常低的內(nèi)存開銷,cpu占用率低,效能好,以及豐富的模塊等特點(diǎn)。
lighttpd 是眾多OpenSource輕量級(jí)的web server中較為優(yōu)秀的一個(gè)。支持FastCGI, CGI, Auth, 輸出壓縮(output compress), URL重寫, Alias等重要功能,而Apache之所以流行,很大程度也是因?yàn)楣δ茇S富,在lighttpd上很多功能都有相應(yīng)的實(shí)現(xiàn)了,這點(diǎn)對(duì)于apache的用戶是非常重要的,因?yàn)檫w移到lighttpd就必須面對(duì)這些問題。
實(shí)用起來lighttpd確實(shí)非常不錯(cuò),apache主要的問題是密集并發(fā)下,不斷的fork()和切換,以及較高(相對(duì)于 lighttpd而言)的內(nèi)存占用,使系統(tǒng)的資源幾盡枯竭。而lighttpd采用了Multiplex技術(shù),代碼經(jīng)過優(yōu)化,體積非常小,資源占用很低,而且反應(yīng)速度相當(dāng)快。
利用apache的rewrite技術(shù),將繁重的cgi/fastcgi任務(wù)交給lighttpd來完成,充分利用兩者的優(yōu)點(diǎn),現(xiàn)在那臺(tái)服務(wù)器的負(fù)載下降了一個(gè)數(shù)量級(jí),而且反應(yīng)速度也提高了一個(gè)甚至是2個(gè)數(shù)量級(jí)!
lighttpd 適合靜態(tài)資源類的服務(wù),比如圖片、資源文件、靜態(tài)HTML等等的應(yīng)用,性能應(yīng)該比較好,同時(shí)也適合簡(jiǎn)單的CGI應(yīng)用的場(chǎng)合。
官方地址:http://www.lighttpd.net/
下載地址:http://www.lighttpd.net/download/lighttpd-1.4.16.tar.gz
【 SHTTPD - Simple HTTPD 】
Shttpd是另一個(gè)輕量級(jí)的web server,具有比thttpd更豐富的功能特性,支持CGI, SSL, cookie, MD5認(rèn)證, 還能嵌入(embedded)到現(xiàn)有的軟件里。最有意思的是不需要配置文件! 由于shttpd可以嵌入其他軟件,因此可以非常容易的開發(fā)嵌入式系統(tǒng)的web server,官方網(wǎng)站上稱shttpd如果使用uclibc/dielibc(libc的簡(jiǎn)化子集)則開銷將非常非常低。
特點(diǎn):
* 小巧、快速、不膨脹、無需安裝、簡(jiǎn)單的40KB的exe文件,隨意運(yùn)行
* 支持GET, POST, HEAD, PUT, DELETE 等方法
* 支持CGI, SSL, SSI, MD5驗(yàn)證, resumed download, aliases, inetd模式運(yùn)行
* 標(biāo)準(zhǔn)日志格式
* 非常簡(jiǎn)單整潔的嵌入式API
* dietlibc friendly. NOT that friendly to the uClibc (*)
* 容易定制運(yùn)行在任意平臺(tái):Windows, QNX, RTEMS, UNIX (*BSD, Solaris, Linux)
由于shttpd可以輕松嵌入其他程序里,因此shttpd是較為理想的web server開發(fā)原形,開發(fā)人員可以基于shttpd開發(fā)出自己的webserver!
官方網(wǎng)站:http://shttpd.sourceforge.net/
下載地址:http://jaist.dl.sourceforge.net/sourceforge/shttpd/shttpd-1.38.tar.gz
四、如何在IIS中添加ISAPI和CGI限制功能
對(duì)于很多B/S架構(gòu)的用友財(cái)務(wù)軟件來說,在IIS中添加ISAPI和CGI限制功能是非常必要的,因?yàn)槿绻贗IS中不添加添加ISAPI和CGI限制功能可能會(huì)引起軟件運(yùn)行過程中報(bào)錯(cuò),或者直接就登錄不了,暢捷通T+11.51軟件也是一樣的。
所以首先要保證在IIS安裝時(shí)就已經(jīng)勾選了ISAPI和CGI限制功能,然后在對(duì)應(yīng)的IIS中啟用ISAPI和CGI限制功能,有時(shí)候我們重裝了IIS或者重裝了.NET會(huì)造成ISAPI和CGI限制功能丟失或者沒有啟用,所以用友財(cái)務(wù)軟件免費(fèi)下載網(wǎng)站站長(zhǎng)認(rèn)為學(xué)習(xí)怎么給IIS添加ISAPI和CGI限制功能?是非常有必要的。
在學(xué)習(xí)如何給IIS添加ISAPI和CGI限制功能之前,我們首先學(xué)習(xí)幾個(gè)概念,分別是:ISAPI 服務(wù)器擴(kuò)展、ISAPI篩選器、公共網(wǎng)關(guān)接口CGI。
ISAPI 服務(wù)器擴(kuò)展是可以被 HTTP 服務(wù)器加載和調(diào)用的 DLL。Internet 服務(wù)器擴(kuò)展也稱為 Internet 服務(wù)器應(yīng)用程序 (ISA),用于增強(qiáng)符合 Internet 服務(wù)器 API (ISAPI) 的服務(wù)器的功能。ISA 通過瀏覽器應(yīng)用程序調(diào)用,并且將相似的功能提供給通用網(wǎng)關(guān)接口 (CGI) 應(yīng)用程序。
ISAPI篩選器是在啟用 ISAPI 的 HTTP服務(wù)器上運(yùn)行的 DLL,用以篩選與服務(wù)器之間來回傳送的數(shù)據(jù)。該篩選器注冊(cè)事件的通知,例如登錄或 URL 映射。當(dāng)發(fā)生選定事件時(shí),篩選器被調(diào)用,并且您可以監(jiān)視及更改數(shù)據(jù)(在數(shù)據(jù)從服務(wù)器傳輸?shù)娇蛻舳嘶蛳喾吹倪^程中)??梢允褂?ISAPI篩選器提供增強(qiáng)的 HTTP 請(qǐng)求記錄(例如,跟蹤登錄到服務(wù)器的用戶)、自定義加密、自定義壓縮或其他身份驗(yàn)證方法。
公共網(wǎng)關(guān)接口CGI(Common Gateway Interface) 是WWW技術(shù)中最重要的技術(shù)之一,有著不可替代的重要地位。CGI是外部應(yīng)用程序(CGI程序)與Web服務(wù)器之間的接口標(biāo)準(zhǔn),是在CGI程序和Web服務(wù)器之間傳遞信息的規(guī)程。CGI規(guī)范允許Web服務(wù)器執(zhí)行外部程序,并將它們的輸出發(fā)送給Web瀏覽器,CGI將Web的一組簡(jiǎn)單的靜態(tài)超媒體文檔變成一個(gè)完整的新的交互式媒體。
暢捷通T+軟件在運(yùn)行時(shí),必須在ISAPI和CGI限制功能中允許.NET 4.0相應(yīng)的ISAPI和CGI的DLL組件運(yùn)行。ISAPI和CGI限制功能在ISS7.0(windows7操作系統(tǒng)和windows server 2008 R2操作系統(tǒng))開始才有。
1、允許ISAPI和CGI限制功能中允許.NET 4.0相應(yīng)的ISAPI和CGI的DLL組件運(yùn)行操作步驟如下:
(1)點(diǎn)擊“開始”-“運(yùn)行”-輸入“inetmgr” 如下圖所示:(windows7操作系統(tǒng)也可以通過:右擊計(jì)算機(jī),管理,服務(wù)和應(yīng)用程序,internet信息服務(wù)(IIS)管理器)
(2)選中IIS根路徑,如下圖所示,在“功能”視圖中,雙擊“ISAPI 和 CGI 限制”,如下圖所示:
(3)依次右擊 ASP.NET v4.0.30319 選擇“允許”,然后再在“開始”-“運(yùn)行”中輸入 IISRESET 重啟IIS服務(wù)。
2、在ISAPI和CGI限制功能中添加ISAPI和CGI的DLL組件
有可能會(huì)出現(xiàn)在ISAPI和CGI限制功能中沒有ASP.NET v4.0.30319對(duì)應(yīng)的ISAPI和CGI的DLL組件允許項(xiàng),我們應(yīng)該進(jìn)行如下操作:
(1)點(diǎn)擊“開始”-“運(yùn)行”-輸入“inetmgr”,選中IIS根路徑,如下圖所示,在“功能”視圖中,雙擊“ISAPI 和 CGI 限制”先點(diǎn)擊“操作”窗格中單擊“添加”。
b、在“添加 ISAPI 和 CGI 限制”對(duì)話框中,描述處輸入:ASP.NET v4.0.30319,ISAPI或CGI路徑處選擇:%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll;同時(shí)勾選允許擴(kuò)展路徑,點(diǎn)擊“確定”。
c、按同樣的方法添加,描述為:ASP.NET v4.0.30319,ISAPI或CGI路徑為:%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll;同樣勾選允許擴(kuò)展路徑,點(diǎn)擊“確定”。
注意:如果添加時(shí)不選允許擴(kuò)展路徑,則限制狀態(tài)將為“不允許”,這是默認(rèn)狀態(tài)。我們也可以在添加后,右擊ASP.NET V4.0.30319,選擇“允許”即可。
2、由于T+軟件在運(yùn)行時(shí),需要調(diào)用IASPI擴(kuò)展,所以我們?cè)诎惭bIIS時(shí),一定要注意勾選 ISAPI擴(kuò)展,否則T+軟件無法正常運(yùn)行。
以上就是關(guān)于web服務(wù)器通過什么執(zhí)行外部程序相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
web服務(wù)器是什么服務(wù)器(web服務(wù)器是什么服務(wù)器)
免費(fèi)javaweb源碼(學(xué)java學(xué)費(fèi)大概是多少)
景觀設(shè)計(jì)平面圖線稿(景觀設(shè)計(jì)平面圖線稿手繪)