IIS7中的站點(diǎn)、應(yīng)用程序和虛擬目錄詳細(xì)介紹
這里說的不是如何解決路徑重寫或者如何配置的問題,而是闡述一下站點(diǎn)(site),應(yīng)用程序(application)和虛擬目錄(virtual directory)概念與作用,已及這三個(gè)東西在IIS6與IIS7中的異同。因?yàn)檎军c(diǎn),應(yīng)用程序和虛擬目錄是我們?cè)贗IS上架設(shè)網(wǎng)站時(shí)肯定會(huì)遇到的,但它們的概念又是那么的含糊(至少對(duì)我來說)。我在網(wǎng)上找了一些資料來學(xué)習(xí),其中一個(gè)寫的比較詳細(xì)的是:Understanding Sites, Applications, and Virtual Directories on IIS 7 而這里則只是作一些總結(jié)。
在IIS6中,應(yīng)用程序和虛擬目錄的概率是有點(diǎn)含糊的,而在IIS7以上,這三者則被規(guī)范化起來,在IIS架構(gòu)層面上明確了三者的層次關(guān)系。
在IIS6中,雖然存在virtual directory 和application兩個(gè)概念,而且看上去這兩個(gè)概念是獨(dú)立的,但是在IIS6中一個(gè)application其實(shí)就是一個(gè)虛擬目錄,只不過一個(gè)application在medabase中可以對(duì)AppFriendlyName, AppRoot, AppIsolated, AppPoolID這幾個(gè)屬性進(jìn)行設(shè)置而已。但I(xiàn)IS6中的site則是例外,因?yàn)榫退悴粚?duì)那幾個(gè)屬性進(jìn)行設(shè)置,它也不會(huì)被視為虛擬目錄,而是被視為一個(gè)application。
而在IIS7或以上(但目前我能接觸到的最高版本的IIS就是win7中的IIS7.5),site,application和virtual directory的概念已經(jīng)被規(guī)范起來,已經(jīng)不像IIS6那樣含糊。在IIS7+中,他們是獨(dú)立的概念,并且在IIS組織架構(gòu)上呈現(xiàn)出一種層次關(guān)系:一個(gè)site中可以有一個(gè)或者多個(gè)application,一個(gè)application中可以有一個(gè)或者多個(gè)virtual directory,而一個(gè)virtual directory則對(duì)應(yīng)著一個(gè)物理路徑。一個(gè)site默認(rèn)會(huì)至少有一個(gè)application,稱為根應(yīng)用程序(root application)或者默認(rèn)應(yīng)用程序(default application),而一個(gè)application至少有一個(gè)vitual director,稱為根虛擬目錄(root virtual directory)來看一下我的IIS7.5上一個(gè)site的結(jié)構(gòu)和這個(gè)site在IIS的ApplicationHost.config文件是怎樣對(duì)應(yīng)的。:
注:ApplicationHost.config文件在目錄:\%windir%\system\inetsrv\config目錄下
我的IIS中只有一個(gè)ID為13的site,site下有兩個(gè)application分別為cd和dh。從右邊的config中可以看到,其實(shí)除了cd和dh兩個(gè)application外,site本身也是一個(gè)application,也就是root application。同時(shí)也可以看到,每個(gè)application下有一個(gè) virtual directory,也就是root virtual directory,充當(dāng)著這個(gè)application的根目錄,并映射到該application所在的物理路徑。當(dāng)然,每個(gè)application可以有多個(gè)virtual directory,這些virtual directory可以對(duì)應(yīng)其他的物理路徑(譬如dh application下的image虛擬目錄的物理路徑可以使網(wǎng)絡(luò)中另外一臺(tái)計(jì)算機(jī)的某個(gè)共享目錄)
在IIS7+中(其實(shí)IIS6也是一樣,但細(xì)節(jié)有不同,這里有點(diǎn)含糊,還待深入研究),一個(gè)site運(yùn)行在一個(gè)application pool中,而一個(gè)application pool默認(rèn)有一個(gè)w3wp.exe(工作者進(jìn)程),site中的application運(yùn)行在這個(gè)w3wp.exe進(jìn)程中的app domain(應(yīng)用程序域)中(不同application運(yùn)行在不同app domain中,以進(jìn)行隔離),而同一個(gè)application的virtual directory運(yùn)行在相同的app domain下。但site下的application不一定必須跟這個(gè)site運(yùn)行在相同的application pool,application可以指定一個(gè)跟這個(gè)application的site不同的application pool。
接下來獨(dú)立的闡述一下site,application和virtual derectory
站點(diǎn)(site)
一個(gè)站點(diǎn)包含一個(gè)或者多個(gè)application和一個(gè)或者多個(gè)虛擬目錄。我們可以通過對(duì)site進(jìn)行不同的綁定以用不同的方式對(duì)site進(jìn)行訪問。這里的“綁定”包含兩個(gè)方面,一個(gè)是綁定的協(xié)議,另一個(gè)就是綁定信息。綁定協(xié)議用于指定通過什么協(xié)議去和該site進(jìn)行通信。IIS7+中,對(duì)一個(gè)site可以的協(xié)議包括http,https,net.tcp,net.pipe,net.msmq,net.formatname這幾種。當(dāng)然,對(duì)于一個(gè)網(wǎng)站,最常用的就是http和https。而綁定信息則定義了通信的基本信息,比如IP地址,通信端口,站點(diǎn)的一些頭部信息(header)。正如前面說到的,可以為一個(gè)site添加多種綁定,只需要在IIS中對(duì)某個(gè)site進(jìn)行“編輯綁定”操作即可。
應(yīng)用程序(application)
application是為一個(gè)site提供功能的基本單位,例如一個(gè)購物站點(diǎn)可以包含兩個(gè)application:一個(gè)負(fù)責(zé)呈現(xiàn)商品,給消費(fèi)者去選購,并放入購物車,而另一個(gè)appliation則可以專注于用戶的登錄以及支付業(yè)務(wù)。當(dāng)一個(gè)site只有一個(gè)application時(shí)候,這個(gè)application也就是root application或者default application,代表著這個(gè)site本身,在applicationHost中的“<application path="/" >”里面,path="/"就表示該application是該site的根應(yīng)用程序。
application運(yùn)行在IIS中的應(yīng)用程序池中,以app domain隔離。application可以運(yùn)行在IIS中任意一個(gè)應(yīng)用程序池中,而不一定要運(yùn)行在這個(gè)application所在的site的應(yīng)用程序池中,但對(duì)于使用托管代碼開發(fā)的application(例如一個(gè)asp.net網(wǎng)站)必須運(yùn)行在運(yùn)行在.NET之上的應(yīng)用程序池??梢栽贗IS中對(duì)應(yīng)用程序池進(jìn)行設(shè)置,包括設(shè)置.NET版本(或者是非托管環(huán)境),以及設(shè)置管道模式等操作。
虛擬目錄(virtual directory)
一個(gè)虛擬目錄就是一個(gè)site(實(shí)際上是application)上的對(duì)一個(gè)本地計(jì)算機(jī)或者遠(yuǎn)程計(jì)算機(jī)上一個(gè)物理目錄路徑的一個(gè)映射名稱。一個(gè)application可以擁有至少一個(gè)虛擬目錄。在applicationHost中的“<virtualDirectorypath="/" >”里面,path="/"就表示該virtual directory是該application(或者該site)的根虛擬目錄。
當(dāng)設(shè)置一個(gè)虛擬路徑映射到一個(gè)物理路徑后,這個(gè)物理路徑中的目錄名稱就會(huì)變成這個(gè)site(或者application)的url的一部分。一個(gè)site(application)可以擁有多個(gè)虛擬目錄,例如,一個(gè)site中的虛擬目錄"www.site.com/script"映射到本地計(jì)算機(jī)上該站點(diǎn)中script文件夾,而"www.site.com/image"則映射到遠(yuǎn)程圖片服務(wù)器上的一個(gè)“image”文件夾。IIS7+利用虛擬目錄映射的目錄路徑目錄下的web.config配置文件來管理該虛擬目錄及其子目錄(可以在applicationHost.config的sites/virtualDirectoryDefaults節(jié)中使用allowSubDirConfig="false"屬性來關(guān)閉web.config對(duì)子目錄的控制。)
關(guān)鍵詞:IIS7
閱讀本文后您有什么感想? 已有 人給出評(píng)價(jià)!
- 0
- 0
- 1
- 1
- 1
- 0