这里说的不是如何解决路径重写或者如何配置的问题,而是阐述一下站点(site),应用程序(application)和虚拟目录 (virtual directory)概念与作用,已及这三个东西在IIS6与IIS7中的异同。因为站点,应用程序和虚拟目录是我们在IIS上架设网站时肯定会遇到的, 但它们的概念又是那么的含糊(至少对我来说)。我在网上找了一些资料来学习,其中一个写的比较详细的是:Understanding Sites, Applications, and Virtual Directories on IIS 7 而这里则只是作一些总结。

在IIS6中,应用程序和虚拟目录的概率是有点含糊的,而在IIS7以上,这三者则被规范化起来,在IIS架构层面上明确了三者的层次关系。

在 IIS6中,虽然存在virtual directory 和application两个概念,而且看上去这两个概念是独立的,但是在IIS6中一个application其实就是一个虚拟目录,只不过一个 application在medabase中可以对AppFriendlyName, AppRoot, AppIsolated, AppPoolID这几个属性进行设置而已。但IIS6中的site则是例外,因为就算不对那几个属性进行设置,它也不会被视为虚拟目录,而是被视为一个 application。

而在IIS7或以上(但目前我能接触到的最高版本的IIS就是win7中的 IIS7.5),site,application和virtual directory的概念已经被规范起来,已经不像IIS6那样含糊。在IIS7+中,他们是独立的概念,并且在IIS组织架构上呈现出一种层次关系:一 个site中可以有一个或者多个application,一个application中可以有一个或者多个virtual directory,而一个virtual directory则对应着一个物理路径。一个site默认会至少有一个application,称为根应用程序(root application)或者默认应用程序(default application),而一个application至少有一个vitual director,称为根虚拟目录(root virtual directory)来看一下我的IIS7.5上一个site的结构和这个site在IIS的ApplicationHost.config文件是怎样对 应的。:

  注:ApplicationHost.config文件在目录:\%windir%\system\inetsrv\config目录下

我 的IIS中只有一个ID为13的site,site下有两个application分别为cd和dh。从右边的config中可以看到,其实除了cd和 dh两个application外,site本身也是一个application,也就是root application。同时也可以看到,每个application下有一个 virtual directory,也就是root virtual directory,充当着这个application的根目录,并映射到该application所在的物理路径。当然,每个application可 以有多个virtual directory,这些virtual directory可以对应其他的物理路径(譬如dh application下的image虚拟目录的物理路径可以使网络中另外一台计算机的某个共享目录)

在IIS7+中(其实IIS6也是一样,但细节有不同,这里有点含糊,还待深入研究), 一个site运行在一个application pool中,而一个application pool默认有一个w3wp.exe(工作者进程),site中的application运行在这个w3wp.exe进程中的app domain(应用程序域)中(不同application运行在不同app domain中,以进行隔离),而同一个application的virtual directory运行在相同的app domain下。但site下的application不一定必须跟这个site运行在相同的application pool,application可以指定一个跟这个application的site不同的application pool。

接下来独立的阐述一下site,application和virtual derectory

站点(site)


个站点包含一个或者多个application和一个或者多个虚拟目录。我们可以通过对site进行不同的绑定以用不同的方式对site进行访问。这里的
“绑定”包含两个方面,一个是绑定的协议,另一个就是绑定信息。绑定协议用于指定通过什么协议去和该site进行通信。IIS7+中,对一个site可以
的协议包括http,https,net.tcp,net.pipe,net.msmq,net.formatname这几种。当然,对于一个网站,最常
用的就是http和https。而绑定信息则定义了通信的基本信息,比如IP地址,通信端口,站点的一些头部信息(header)。正如前面说到的,可以
为一个site添加多种绑定,只需要在IIS中对某个site进行“编辑绑定”操作即可。

应用程序(application)

application
是为一个site提供功能的基本单位,例如一个购物站点可以包含两个application:一个负责呈现商品,给消费者去选购,并放入购物车,而另一个
appliation则可以专注于用户的登录以及支付业务。当一个site只有一个application时候,这个application也就是
root application或者default
application,代表着这个site本身,在applicationHost中的“<application path="/"
>”里面,path="/"就表示该application是该site的根应用程序。 

 application运行在IIS中的
应用程序池中,以app
domain隔离。application可以运行在IIS中任意一个应用程序池中,而不一定要运行在这个application所在的site的应用程
序池中,但对于使用托管代码开发的application(例如一个asp.net网站)必须运行在运行在.NET之上的应用程序池。可以在IIS中对应
用程序池进行设置,包括设置.NET版本(或者是非托管环境),以及设置管道模式等操作。

虚拟目录(virtual directory)


个虚拟目录就是一个site(实际上是application)上的对一个本地计算机或者远程计算机上一个物理目录路径的一个映射名称。一个
application可以拥有至少一个虚拟目录。在applicationHost中的“<virtualDirectorypath="/"
>”里面,path="/"就表示该virtual directory是该application(或者该site)的根虚拟目录。


设置一个虚拟路径映射到一个物理路径后,这个物理路径中的目录名称就会变成这个site(或者application)的url的一部分。一个
site(application)可以拥有多个虚拟目录,例如,一个site中的虚拟目录"www.site.com/script"映射到本地计算机
上该站点中script文件夹,而"www.site.com/image"则映射到远程图片服务器上的一个“image”文件夹。IIS7+利用虚拟目
录映射的目录路径目录下的web.config配置文件来管理该虚拟目录及其子目录(可以在applicationHost.config的
sites/virtualDirectoryDefaults节中使用allowSubDirConfig="false"属性来关闭
web.config对子目录的控制。)

IIS7中的站点、应用程序和虚拟目录详细介绍 (转)的更多相关文章

  1. IIS7中的站点、应用程序和虚拟目录详细介绍

    IIS7中的站点.应用程序和虚拟目录详细介绍 这里说的不是如何解决路径重写或者如何配置的问题,而是阐述一下站点(site),应用程序(application)和虚拟目录 (virtual direct ...

  2. IIS6.0、IIS7中的站点、应用程序和虚拟目录详细介绍

    这里说的不是如何解决路径重写或者如何配置的问题,而是阐述一下站点(site),应用程序(application)和虚拟目录 (virtual directory)概念与作用,已及这三个东西在IIS6与 ...

  3. WEB服务器4--IIS中网站、Web应用程序和虚拟目录

    网站.Web应用程序和虚拟目录 在IIS中可以创建网站.Web 应用程序和虚拟目录,以便与计算机网络上的用户共享信息. “网站”.“Web 应用程序”和“虚拟目录”这三个概念的关系如图 8‑1所示. ...

  4. PowerShell管理IIS(新建站点、应用程序池、应用程序、虚拟目录等)

    #导入IIS管理模块 Import-Module WebAdministration #新建应用程序池 api.dd.com New-Item iis:\AppPools\api.dd.com Set ...

  5. IIs 网站应用程序与虚拟目录的区别及高级应用说明(文件分布式存储方案)

    原文 IIs 网站应用程序与虚拟目录的区别及高级应用说明(文件分布式存储方案) 对于IIS网站,大伙用的比较多,就不啰嗦了.   今天和说说大伙比较少使用的"IIS应用程序”和虚拟目录的区别 ...

  6. appcmd创建站点、应用程序、虚拟目录批处理程序

    创建站点(放置在站点下运行): @echo off cls :start echo start set /p sitename="sitename:" @set "phy ...

  7. IIS网站的应用程序与虚拟目录的区别及应用

    IIS网站 一个网站可以新建无数个应用程序和目录 应用程序 同一域名下程序的独立开发,独立部署的最佳应用策略. 应用程序的应用场景: 1. 域名的分布 比如:www.baidu.com,对于后台,我们 ...

  8. Tomcat 中如何给 web 项目配置虚拟目录的方法

    为什么要给 web 项目配置虚拟目录? 初学 JavaWeb 时,会发现只要我们把 web 项目放到 Tomcat 的 webapps 目录下,再通过 http://localhost:8080/项目 ...

  9. 在.net core项目中想使用类似iis上面虚拟目录的功能

    事实上iis是不支持.net core mvc项目虚拟目录的.你在iis上发布网站 然后在wwwroot目录上创建虚拟目录,指向硬盘其他位置上的文件夹,是不会有效果的. 正确的处理方式应该是修改静态文 ...

随机推荐

  1. [经验交流] Apache Mesos Docker集群初探

    前言 因工作需要,我对基于Apache Mesos 的 Docker 集群作了一点研究,并搭建了一套环境,以下是资料分享. 1. Apache Mesos概述 Apache Mesos是一款开源群集管 ...

  2. zookeeper 笔记

    http://www.biaodianfu.com/zookeeper.html ======= ---- zookeeper这种数据结构有如下这些特点: 1,每个子目录如NameService都被作 ...

  3. java内存溢出分析(一)

    在项目中发现内存占用过高,且一直不会释放,top命令如下图显示 可以看到pid为17453的java进程占用27.1%内存,且长时间没有释放. 1.使用命令生成heap日志以供分析 sudo jmap ...

  4. OS X 禁止Android File Transfer自动启动

    操作步骤 关闭Android File Manager 在Activity Manager中退出Android File Manager Agent进程 在Applications中,将Android ...

  5. AX2012 审批流流转到已停用的域账号导致审批流停止

    AX 2012 中当审批流流转到某个节点时,如果在该节点的审批人的域账号被停用,审批流将会停止,会报如图的错误: 要解决这个问题,得修改标准功能,需要修改SysWorkflow和SysWorkflow ...

  6. Easyui修改样式

    背景:公司一个后台管理系统做的网站,构架采用Asp.net MVC4.0 + EasyUI, 请了美工做了切图,结果发现美工不懂Easyui,切图的风格又都是直角风格. 而Easyui默认风格是圆角. ...

  7. Flume 远程写HDFS

    现在的需求是在一台Flume采集机器上,往Hadoop集群上写HDFS,该机器没有安装Hadoop. 这里的Flume版本是1.6.0,Hadoop版本是2.7.1. 把Hadoop集群的hdfs-s ...

  8. free pascal 错误代码表

    free pascal 错误代码表 为了方便对照检查运行时错误代码,这里把所有的错误代码的含义整理出来.(最大序号为232,中间不一定连续.user.pdf P175) Run-time errors ...

  9. Spring JDBC常用方法详细示例

    Spring JDBC使用简单,代码简洁明了,非常适合快速开发的小型项目.下面对开发中常用的增删改查等方法逐一示例说明使用方法 1 环境准备 启动MySQL, 创建一个名为test的数据库 创建Mav ...

  10. 查看真机的APP沙盒文件

    1.Xcode --> window --> devices -->左边选择设备 右下边选择要查看的app 双击应用可查看目录 点击设置按钮,选 Download Container ...