IIS7中的站点、应用程序和虚拟目录详细介绍
这里说的不是【de bú shì】如何解决路径🎰重写或【chóng xiě huò】💿者如何【zhě rú hé】配置的【pèi zhì de】🎢问题,而是阐述一下站点【zhàn diǎn】(site),应用程❌序(application)和虚拟【nǐ】🤮目录(virtual directory)概念与🛥作用【zuò yòng】,已及这🔑三个东【sān gè dōng】西在IIS6与🛥IIS7中的异【zhōng de yì】同🌑。因为站点【zhàn diǎn】,应用程❌序和虚拟【nǐ】🤮目录是我们在IIS上架设网站时肯定会遇到的⛅,但它们【dàn tā men】的概念【de gài niàn】又是那么的含糊【hú】(至少对【zhì shǎo duì】😶我来说)。我在网【wǒ zài wǎng】😵上找了🐧一些资料来学习🙅,其中一🛥个写的🍳比较详细的是【xì de shì】:Understanding Sites, Applications, and Virtual Directories on IIS 7 而这里【ér zhè lǐ】🏮则只是作一些总结。
在【zài】IIS6中,应用程序和虚【xù hé xū】🎷拟目录【nǐ mù lù】🎩的概率是有点含糊的,而在【zài】🔼IIS7以上,这三者【zhè sān zhě】则被规范化起👿来,在【zài】IIS架构层面上明【miàn shàng míng】🗞确了三🚗者的层【zhě de céng】次关系。
在🗨IIS6中,虽然存【suī rán cún】在🗨virtual directory 和application两个【gè】👪概念,而且看【ér qiě kàn】上去这🦎两个【gè】👪概念是独【dú】⭐立的,但是在【dàn shì zài】🕸IIS6中一个【yī gè】🃏application其实就【qí shí jiù】是一个【yī gè】🔬虚拟目录,只不过一个【yī gè】😯application在🗨medabase中可以【zhōng kě yǐ】🆒对AppFriendlyName, AppRoot, AppIsolated, AppPoolID这几个【gè】👪属性进【shǔ xìng jìn】🌕行设置【háng shè zhì】🥖而已。但IIS6中的site则是例外【wài】,因为就算不对【suàn bú duì】⏩那几个【gè】👪属性进【shǔ xìng jìn】🌕行设置【háng shè zhì】🥖,它也不会被视为虚拟目录,而是被【ér shì bèi】视为一【shì wéi yī】个【gè】😯application。
而在【ér zài】IIS7或以上(但目前🧡我能接🔲触到的📢最高版本的【běn de】IIS就是【jiù shì】💯win7中的IIS7.5),site,application和🈵virtual directory的概念【de gài niàn】👽已经被规范起⏬来,已经不【yǐ jīng bú】像【xiàng】IIS6那样含糊。在IIS7+中,他们是独立的💧概念,并且在IIS组织架构上呈现出一【xiàn chū yī】种层次【zhǒng céng cì】👹关系【guān xì】:一个【gè】🚜site中可以有一个【yǒu yī gè】🎄或者多【huò zhě duō】🌫个【gè】application,一个【gè】🚜application中可以有一个【yǒu yī gè】🎄或者多【huò zhě duō】🌫个【gè】virtual directory,而一个【ér yī gè】🚜virtual directory则对应着一个【zhe yī gè】🚜物理路【wù lǐ lù】径。一个【gè】🚜site默认会【mò rèn huì】至少有一个【yǒu yī gè】🎄application,称为根应用程🔕序🤗(root application)或者默【huò zhě mò】认应用🖕程序🆖(default application),而一个【ér yī gè】🚜application至少有一个【yǒu yī gè】🎄vitual director,称为根虚拟目录【lù】(root virtual directory)来看一👶下我的🍉IIS7.5上一个【shàng yī gè】🔓site的结构和🈵这个【gè】site在IIS的ApplicationHost.config文件是【wén jiàn shì】怎样对【zěn yàng duì】应的👯。:
注【zhù】🚩:ApplicationHost.config文件在【wén jiàn zài】🥫目录:\%windir%\system\inetsrv\config目录下
我的【wǒ de】🤕IIS中只有一个【yī gè】☔ID为💌13的【de】site,site下有两【xià yǒu liǎng】💩个【gè】👶application分别为【fèn bié wéi】💌cd和dh。从右边的【de】config中可以看【kě yǐ kàn】到⛸,其实除了cd和dh两个【gè】👶application外【wài】,site本身也🌓是一个【yī gè】☔application,也就是🏺root application。同时也😱可以看【kě yǐ kàn】到⛸,每个【gè】👶application下有一👓个【gè】👶 virtual directory,也就是🏺root virtual directory,充当着【chōng dāng zhe】这个【zhè gè】👶application的【de】根目录【lù】,并映射到🆎该application所在的【suǒ zài de】🥛物理路径【lǐ lù jìng】❌。当然😑,每个【gè】👶application可以有【kě yǐ yǒu】🔐多个【gè】👶virtual directory,这些virtual directory可以对应其他的【de】物理路径【lǐ lù jìng】❌(譬如dh application下的【xià de】image虚拟目录的物【lù de wù】🔰理路径【lǐ lù jìng】❌可以使网络中【wǎng luò zhōng】🚤另外【wài】一台计算👉机的【de】某个【gè】👶共享目录【lù】)
在🕘IIS7+中☝(其实【qí shí】🕤IIS6也是一样【yàng】🥞,但【dàn】细节有不同,这里有点含糊【diǎn hán hú】🥊,还待深入研究【rù yán jiū】🥒),一个🥒site运行在【yùn háng zài】🎶一个🥒application pool中☝,而一个⌚application pool默认有【mò rèn yǒu】一个🥒w3wp.exe(工作者🌙进程),site中☝的【de】🈶application运行在【yùn háng zài】🎶这个🔠w3wp.exe进程中【jìn chéng zhōng】☝的【de】🈶app domain(应用程序域)中☝(不同application运行在【yùn háng zài】🎶不同app domain中☝,以进行【yǐ jìn háng】隔离),而同一🍾个application的【de】🈶virtual directory运行在【yùn háng zài】🎶相同的【xiàng tóng de】🈶app domain下。但【dàn】site下的【xià de】🈶application不一定必须跟🏴这个🔠site运行在【yùn háng zài】🎶相同的【xiàng tóng de】🈶application pool,application可以指定一个🥒跟这个【gēn zhè gè】🔠application的【de】🈶site不同的【bú tóng de】🎺application pool。
接下【jiē xià】👕来独立的阐述一下【yī xià】👕site,application和🏑virtual derectory
站点(site)
一个【yī gè】🌯站点包含一个或【yī gè huò】👡者多个【zhě duō gè】🌯application和💿一个或【yī gè huò】👡者多个【zhě duō gè】虚拟【xū nǐ】💵目录👱。我们可【wǒ men kě】👍以通过对【duì】🚀site进行不同的【tóng de】🚁绑定以【bǎng dìng yǐ】用不同的【tóng de】🚁方式对【fāng shì duì】🐑site进行访【jìn háng fǎng】✏问。这里的【zhè lǐ de】🏓“绑定【bǎng dìng】”包含两🕺个🌯方面,一个【yī gè】🌯是绑定【shì bǎng dìng】的【de】🏓协议,另一个【yī gè】📋就是绑定【shì bǎng dìng】信息【xìn xī】🏨。绑定协【bǎng dìng xié】议用于【yì yòng yú】🍅指定通过什么🦓协议去【xié yì qù】和💿该site进行通【jìn háng tōng】🛷信🚕。IIS7+中,对【duì】🚀一个【yī gè】🌯site可以的【de】🏓协议包【xié yì bāo】括http,https,net.tcp,net.pipe,net.msmq,net.formatname这几种。当然【dāng rán】,对【duì】🚀于一个【yī gè】🌯网站,最常用的【de】🏓就是http和💿https。而绑定【bǎng dìng】信息【xìn xī】🏨则定义了🔰通信【tōng xìn】🚕的【de】🏓基本信🚕息【xī】,比如IP地址,通信【tōng xìn】🚕端口,站点的【de】🏓一些头🉐部信🚕息【xī】(header)。正如前🐅面说到的【de】🏓,可以为一个【yī gè】🌯site添加多种绑定【bǎng dìng】😜,只需要在IIS中对【duì】🚀某个【mǒu gè】🌯site进行“编辑绑定【bǎng dìng】”操作即⛸可。
应用程序(application)
application是为一个🚫site提供功【tí gòng gōng】能的基【néng de jī】本单位,例如一🍏个🚫购物站点可⛎以包含【yǐ bāo hán】🤹两个📁application:一个负🔅责呈现商品🍴,给消费者去选🍮购,并放入【bìng fàng rù】👑购物车🛺,而另一个🚫appliation则可以【zé kě yǐ】专注于用户的登录以【dēng lù yǐ】及支付【jí zhī fù】业务🚕。当一个🚫site只有一【zhī yǒu yī】个🚫application时候,这个【zhè gè】🚫application也就是🏮root application或者default application,代表着这个【zhè gè】🚫site本身,在【zài】applicationHost中的【zhōng de】“<application path="/" >”里面❣,path="/"就表示【jiù biǎo shì】该【gāi】🙇application是该【gāi】🙇site的根应【de gēn yīng】用程序。
application运行在【háng zài】IIS中的应用【de yīng yòng】程序🗜池【chí】中🕦,以app domain隔离。application可以运行在【háng zài】IIS中任意🥂一个应用程【yīng yòng chéng】序🗜池【chí】中🕦,而不一【ér bú yī】定要运行在【háng zài】这🛬个application所在的site的应用【de yīng yòng】程序🗜池【chí】中🕦,但对于使用托🈺管代码开发的📞application(例如一个asp.net网站)必须运【bì xū yùn】行在运【háng zài yùn】行在【háng zài】.NET之上的应用【de yīng yòng】程序🗜池【chí】。可以在🍙IIS中对应💒用程序【yòng chéng xù】🗜池进行【chí jìn háng】设置🎦,包括设【bāo kuò shè】🙄置➿.NET版本(或者是【huò zhě shì】非托管环境👘),以及设置🎦管道模式等➿操作【cāo zuò】。
虚拟目【xū nǐ mù】录🍽(virtual directory)
一个【yī gè】✴虚拟目【xū nǐ mù】录【lù】🔹就是一【jiù shì yī】个【gè】✴site(实际上是application)上的对【shàng de duì】一个【yī gè】✴本地计算机或者【zhě】🎦远程计【yuǎn chéng jì】算机上🔺一个【yī gè】物🏤理目录【lǐ mù lù】🔷路径的一个【yī gè】映🦋射名称。一个【yī gè】✴application可以拥有至少一个【yī gè】✴虚拟目【xū nǐ mù】录【lù】🔹。在🥃applicationHost中的“<virtualDirectorypath="/" >”里面,path="/"就表示该🤦virtual directory是该🤦application(或者【zhě】该🤦site)的根虚【de gēn xū】拟目录【lù】🔹。
当设置【dāng shè zhì】一个虚拟路径【nǐ lù jìng】映射到【yìng shè dào】一个物理路径👚后,这个物🍴理路径👚中的【zhōng de】🗞目录名【mù lù míng】称就会变成这个👜site(或者😾application)的🗞url的🗞一部分【yī bù fèn】。一个site(application)可以拥有多个虚拟目【xū nǐ mù】录【lù】🖕,例如,一个site中的【zhōng de】🗞虚拟目【xū nǐ mù】录【lù】🖕"www.site.com/script"映射到【yìng shè dào】本地计【běn dì jì】算机上😈该站点中script文件夹【wén jiàn jiá】🚜,而"www.site.com/image"则映射到【yìng shè dào】远程图片服务器上【wù qì shàng】的一个【de yī gè】🙃“image”文件夹【wén jiàn jiá】🚜。IIS7+利用【yòng】🎉虚拟目【xū nǐ mù】录【lù】🖕映射的🗞目录【mù lù】路径目录【mù lù】🐴下的🗞web.config配置文件来管【jiàn lái guǎn】🐵理该虚拟目【xū nǐ mù】录【lù】🖕及其子目录【mù lù】(可以在applicationHost.config的🗞sites/virtualDirectoryDefaults节中使【jiē zhōng shǐ】用【yòng】🎉allowSubDirConfig="false"属性来🥠关闭【guān bì】👞web.config对子目💸录【lù】的🗞控制。)
关键词:IIS7
阅读本文后您有什么感想? 已有 人给出评价!
- 0
- 0
- 1
- 1
- 1
- 0