IIS ASP.NET的本質(zhì)與聯(lián)系淺析
IIS ASP.NET的本質(zhì)與聯(lián)系是什么呢?首先讓我們看看什么是ASP.NET,ASP.NET對于編寫WEB應(yīng)用程序以及組件來說是一個很好的框架,但是由于他的龐大性對于很多人來說要了解他的每一個細節(jié)好象是否不太可能,我一直認為有必要了解一下基層結(jié)構(gòu)的工作原理以便在設(shè)計時獲取更高的性能,在接下來的一系列文章中,我將要描敘一下WEB的生命周期,從當請求被服務(wù)器接受開始,傳送到ASP.NET管道處理一直到生成回送信息(如:HTML)在管道處理后期。
IIS ASP.NET的本質(zhì)與聯(lián)系之ASP.NET介紹
Microsoft Active Server Pages(微軟動態(tài)網(wǎng)頁服務(wù)),同樣也被大家稱為ASP,首先是在1996年末年發(fā)布的,為程序員提供一個用來建立WEB應(yīng)用程序豐富復雜的框架。幾年后,他的基礎(chǔ)構(gòu)造發(fā)展改進了很多,也就是大家現(xiàn)在所了解的ASP.NET.ASP.NET是一個用來構(gòu)件WEB應(yīng)用程序的框架,也就是說,他必須運行在WEB服務(wù)上,用客服端-服務(wù)端模型了表述的話通常是瀏覽器發(fā)送不同類型的資源請求到WEB服務(wù)器。在出現(xiàn)動態(tài)服務(wù)器資源生成技術(shù)(如CGI,PHP,JSP以及ASP),所有的WEB服務(wù)只能接受客服端的靜態(tài)資源請求并把他們回送到客服端。
表面上看起來,這樣在服務(wù)端和客戶端的交互是非常的簡單。會話通過HTTP協(xié)議進行,他是一個建立在TCP和IP協(xié)議(用來在2個連接到不同類型的網(wǎng)絡(luò)端點交換數(shù)據(jù),如我們所知道的WWW萬維網(wǎng))上的應(yīng)用程序級協(xié)議。
本質(zhì)上任何動態(tài)服務(wù)器技術(shù)需要運行在特定WEB服務(wù)上,同樣ASP.net緊密地和微軟因特網(wǎng)信息服務(wù),也叫做IIS。
不同的服務(wù)選擇不同的方式去生成動態(tài)資源等等。。。我們將要解析一下IIS是怎么做到的當一個請求信息一旦到達服務(wù)端以及***回送到客戶端。
IIS ASP.NET的本質(zhì)與聯(lián)系之IIS and ISAPI 擴展
如上面提到的,靜態(tài)資源不需要被服務(wù)器處理;一旦這樣的資源請求到達服務(wù)器,服務(wù)器只需要從文件系統(tǒng)中找到他的內(nèi)容并且以字節(jié)流形式發(fā)送到客戶端通過HTTP協(xié)議。靜態(tài)資源可以是圖片,javascript,CSS或者普通HTML頁面。很顯然服務(wù)器需要知道怎樣去區(qū)分靜態(tài)和動態(tài)資源,動態(tài)資源需要如何被處理而不是直接發(fā)送回客戶端。因此出現(xiàn)了ISAPI擴展,ISAPI是因特網(wǎng)服務(wù)應(yīng)用程序編程的接口。ISAPI作為模塊被執(zhí)行如早期的Win32.dll.IIS依靠ISAPI來處理特定的資源。通過IIS映射ISAPI擴展和文件的方式,把每種文件擴展類型關(guān)聯(lián)到特定的ISAPI擴展,也就是說,當一個請求某種文件的請求到達,IIS處理并轉(zhuǎn)到相應(yīng)的ISAPI擴展,以確認這種請求能被處理。
圖表1:在IIS5.0中配置ISAPI擴展映射
ISAPI擴展明顯需要符合一個通用接口,這樣他們才能被IIS調(diào)用并提供必要的數(shù)據(jù)用來處理請求和生成回送。
如圖1,.ASP擴展名被映射到asp.dll ISAPI擴展;在ASP處理時段,這個組件負責執(zhí)行所有需要的任務(wù)去生成回送,也就是說,通過收集請求信息,并使得他能夠在ASP頁面可用,其他ASP內(nèi)部對象,解析并執(zhí)行ASP頁面***以HTML形式返回結(jié)果。
盡管,這樣相對于CGI技術(shù)來說已經(jīng)是很大的進步了,但是ASP.net更強大。
在安裝ASP.NET后,ASP.NET配置IIS 把ASP.NET指定的文件請求重定向到一個新的ISAPI擴展aspnet_isapi.dll.這個擴展有些不同于以前的asp.dll擴展。
表格I:aspnet_isapi.dll在IIS應(yīng)用程序中的映射
ExtensionResource Type
.asaxASP.NET 應(yīng)用程序文件. 常用的有 global.asax.
.ascxASP.NET 用戶控件文件.
.ashxHTTP handlers, the managed counterpart of ISAPI extensions.
.asmxASP.NET web services.
.aspxASP.NET web pages.
.axdASP.NET internal HTTP handlers.
除了表格1所列出的文件擴展名,ASP.NETISAPI擴展也管理其他一些通常不提供給瀏覽器訪問的文件擴展類型,如Visual Studio工程文件,資源文件以及配置文件。
IIS ASP.NET的本質(zhì)與聯(lián)系就向你介紹到這里,關(guān)于IIS ASP.NET的學習我們還將在別的文章中涉及。
【編輯推薦】