SharePoint 体系结构
IIS 和ASP.NET 入门
本章探讨了如何WSS 与Microsoft Internet 信息服务(IIS )和ASP.NET 集成的核心架构细节。我们将首先看一下的基本概念和与IIS 和ASP.NET 使用的一些术语。然后我们将介绍如何WSS 小组在IIS 上设计并实施了WSS 3.0 中扩展ASP.NET 框架。
本章的主要目标是为您了解Web 应用程序的内部工作以及如何初始化WSS 的运行环境。正如您将会看到,WSS 的团队已经扩展了许多ASP.NET 标准组件,丰富了其内部的功能,作为WSS 中的组件进行使用。
在本章结束时,我们将介绍应用程序页,并讨论应用程序页面成为WSS 的体系结构的基本方面。我们还将走过创造您自己的自定义解决方案,并编写应用程序页面底层的代码,访问WSS 的对象模型的过程。
IIS Web 站点和虚拟目录
WSS 的ASP.NET 和IIS 6.0 中依靠供应基本监听机制来处理传入的HTTP 请求,并提供启动和运行Web 服务器上的工作进程管理的基础设施。您了解如何在各种因素相互组合应该从一个IIS Web 站点和虚拟目录的基本概念开始。
一个IIS Web 站点提供到IIS Web 服务器基础设施的一个切入点。每个IIS Web 站点配置为侦听和处理传入的HTTP 请求符合特定标准。例如,IIS 网站可以被配置来处理请求在一个特定的IP 地址或端口号,也可以改为使用诸如http://Extranet.Litwareinc.com 一个特定的主机头,路由到Web 服务器。
IIS 自动创建并配置了IIS Web 站点命名的默认网站,为未来通过端口的80 侦听HTTP 请求的地址在本地Web 服务器的支持。也可以创建和配置其他IIS 网站通过使用IIS 管理工具的网站。
每个IIS 网站定义一个特定的URL 空间。例如,标准的定义默认Web 站点的URL 空间来处理的任何传入请求的URL 映射到以下方式:http://www.Litwareinc.com/ *. 你可以想像,一个无限数量的网址可以创建在这个网址的空间。 IIS 处理针对他们的路由默认Web 站点到这些网址的一个传入的请求。
每个IIS Web 站点配置为映射到一个根目录,这是对托管的Web 服务器的文件系统的物理目录。例如,标准配置为IIS 映射默认Web 站点的根目录位于C :/ Inetpub / wwwroot 文件。在最简单的路由情况下,IIS 传入的HTTP 请求映射到根目录内的物理文件。例如,IIS 将响应请求为http://www.Litwareinc.com/page1.htm 通过简单地载入了位于c 文件内容:/ Inetpub / wwwroot 文件/ page1.htm 到内存和流回客户端。
其中一个IIS Web 站点的一个重要方面是,它控制是否需要验证传入的请求,如果有,哪些身份验证协议使用。例如,默认Web 站点可能是打算作为面向公众的互联网用户的Web 站点。因此,它可能被配置为允许匿名访问,并支持基本身份验证。辅助IIS 网站打算专门为员工在公司内使用局域网可能被配置为禁止匿名访问和支持,而不是基本身份验证集成Windows 身份验证。
除了IIS 网站,IIS 支持创建和虚拟目录的配置。虚拟目录是一个实体,它定义URL 空间的儿童在其父母的IIS Web 站点的URL 空间嵌套。就像一个IIS Web 站点,虚拟目录配置了一份关于托管的Web 服务器文件系统的根目录。 IIS 提供的界定在任何地点虚拟目录的根目录的灵活性。例如,您可以创建一个有如http://www.Litwareinc.com/Sales URL 空间内的默认网站的虚拟目录。当创建此虚拟目录,你可以配置为如C 文件系统目录的根目录:/ WebApps / Site1 。
IIS 提供了一个管理工具命名为Internet 信息服务(IIS )管理器“,如图2-1 所示。此实用工具允许你检查,创建和配置IIS 网站和当前计算机虚拟目录。它可以通过使用启动快捷方式开始| 管理工具| Internet 信息服务(IIS )管理器。如果您不是已经熟悉这个工具,你可以启动它来学习如何用它来检查和配置IIS 网站和虚拟目录的属性。
请注意,IIS 配置跟踪有关其IIS 网站,并在诸如IIS 元数据库中已知的一个仓库虚拟目录的信息。对每个方面的文件系统,结束生命的IIS 元数据库的Web 服务器运行IIS 。例如,当您创建和配置IIS Web 站点使用IIS 管理实用程序,IIS 的轨道以书面项,以本地IIS 元数据库这些变化。
代替使用IIS 管理工具,还可以自动创建和配置通过编写脚本或托管代码编写IIS 网站和虚拟目录的过程,程序对IIS 的对象模型。这个过程中,通常这样做时,Web 场环境中进行新的网站滚动,因为相同的IIS 元数据库设置必须在每个前端Web 服务器适用于农场。
ISAPI 扩展和ISAPI 过滤器
在最简单的路由情况下,IIS 的简单地图传入的请求,在一个IIS Web 站点或虚拟目录的根目录的物理文件。但是,IIS 还支持Internet 服务器应用程序编程接口(ISAPI )编程模型,它提供了更复杂的路由方案的机会。特别是,在ISAPI 编程模型,可配置的IIS Web 站点或虚拟目录,以便传入请求触发自定义代码在Web 服务器上执行。
在ISAPI 编程模型中,介绍了与IIS 的原始版本,并继续提供为IIS 创建定制组件的最低水平。在ISAPI 编程模型组成:两个主要组件类型ISAPI 扩展和ISAPI 过滤器。
ISAPI 扩展是一个组件的DLL 了一个进入的请求端点的作用。基本概念是,IIS 可以将传入的请求映射到一个端点触发的代码在一个ISAPI 扩展DLL 执行。 ISAPI 扩展DLL 必须在Web 服务器上安装和配置在任何一个IIS Web 站点或虚拟目录的水平。配置通常涉及通过使用一个IIS 应用程序映射的ISAPI 扩展特定文件扩展名。
虽然ISAPI 扩展为端点,一个ISAPI 筛选器服务扮演一个拦截器的作用。一个ISAPI 过滤器安装并在IIS Web 站点级别配置。一旦安装,一个ISAPI 筛选器拦截所有针对的IIS Web 站点的传入请求。基本概念是一个ISAPI 筛选器可以提供前处理和后每一个传入的请求处理。 ISAPI 过滤器通常创建为一个IIS Web 站点,如自定义身份验证,并要求记录,低级别的功能。
自定义的ISAPI 组件的发展并不是很受欢迎的原因主要有以下几个。首先,自定义ISAPI 组件很难设计,开发和调试,因为他们必须在托管C + + 编写,需要复杂的编码,例如线程同步技术。大多数开发人员的工作水平以上的ISAPI 和利用,如ASP 和ASP.NET 框架。虽然您可能永远不会被要求写一个ISAPI 组件,但是对于理解如何把ISAPI 组件适合场景中是相当重要的。
应用程序池和IIS 工作进程
IIS 提供了一个被应用程序池使用的管理IIS 工作进行的灵活的基础架构。应用程序池是一个可配置的实体,允许您控制IIS 如何映射IIS 网站,并在IIS 工作进程情况下的虚拟目录。请注意,IIS 工作进程实例都使用可执行推出名为程序w3wp.exe ,显示如下:
IIS 的路由体系结构是受一个内核级的设备驱动程序命名Http.sys 控制的。该设备驱动程序侦听传入的HTTP 请求,并使用IIS 元数据库中的信息,以把他们的任何实例的程序w3wp.exe 与目标相关的应用程序池。如果Http.sys 的确定的目标应用程序池没有运行的程序w3wp.exe 例如,对需求推出新的实例来处理请求。
每个IIS 网站和虚拟目录,可以配置为运行在它自己的独立的应用程序池。相反,您可以配置许多不同的IIS 网站和虚拟目录中运行同一个应用程序池,以便提高效率。关键标准应该是隔离和效率之间的折中。为了实现更大的隔离意味着你必须运行多个实例程序w3wp.exe ,这会影响效率。为了实现更高的效率意味着你必须映射多个IIS 网站和虚拟目录,以较少的情况下在IIS 工作进程,孤立的妥协。
众所周知每一个应用程序池设置具有重要的应用程序池标识。应用程序池标识配置与特定的Windows 用户帐户或者是在Active Directory 目录服务域上的Web 服务器域帐户火本地帐户。当Http.sys 的推出为特定应用程序池的程序w3wp.exe 的新实例,它使用的应用程序池标识初始化Windows 安全令牌的进程令牌服务。这一点很重要,因为它确立了“运行的”身份代码运行在IIS 工作进程。
默认情况下,IIS 使用本地网络服务帐户的身份当您创建一个新的应用程序池。但是,您可以通过任何其他用户使用的应用程序池标识帐户你喜欢。当部署ASP.NET 和WSS 基于Web 站点,建议您配置一个域帐户,而不是网络服务帐户的应用程序池标识。这是尤其是在Web 场环境中,当你需要同步横跨多个前端应用程序池。
重新启动应用程序池
当用于ASP.NET 和WSS 开发,你偶尔会发现有必要重新启动应用程序池所使用的测试代码。这可能是这样,当您需要刷新的功能在您正在开发的定义,一个XML 文件,或者您可能需要重新加载一个从全局程序集缓存程序集DLL 的新版本。你可以重新启动与运行在命令行下面的命令IIS 中所有相关的过程:
运行IISRESET 或者重新启动,
您可以只用通过运行一个名为VB 脚本宏已是IIS 6.0 的,因为Windows Server 2003 的Service Pack 1 安装标准的一部分iisapp.vbs 特定的应用程序池关联的进程。您必须通过使用诸如cscript.exe 脚本宿主,此脚本。当您调用cscript.exe ,然后包括向iisapp.vbs 路径,您可以通过重新启动一个特定的应用程序池/ 参数随着IIS 应用程序池名称。
cscript.exe ç :/ 的Windows / System32 / iisapp.vbs / 1 “默认应用”使用这种技术的主要优点是速度快于全IISRESET 命令,这与IIS 重新启动有关的所有过程。使用此命令,而不是一个IISRESET 命令可以节省几秒钟在这里和那里。
ASP.NET2.0 Framework
ASP.NET
框架代表了上面的IIS
和ISAPI
编程模型生产率的显着一层。如果您对ASP.NET
开发熟悉,你知道,它提供了有管理的书面语言,如C
,你的应用程序逻辑#或Visual Basic
。NET
中的便利,并与所有生产率由Microsoft Visual Studio
提供的面向可视化设计工作。 ASP.NET
框架还提供很多其他宝贵的抽象协助等领域的国家管理,数据绑定,导航开发人员和数据缓存。
ASP.NET
框架是作为一个名为aspnet_isapi.dll
的ISAPI
扩展被实现的。 ASP.NET
的基本配置包括注册为常见的ASP.NET
应用程序文件扩展名包括地图的。aspx
,的。ascx
,。ashx
的,和。在一个IIS Web
站点或虚拟目录级别asmx
文件。当IIS
看到的是一个与传入的请求针对这些扩展一个文件时,它请求转发到aspnet_isapi.dll
的,它有效地越过了ASP.NET
框架的控制。的方式在ASP.NET
框架的进程要求在很大程度上取决于目标文件的扩展名而定。
ASP.NET
框架执行每个IIS
网站定位的要求,并作为自己的每一个独立的ASP.NET
应用程序的虚拟目录。 ASP.NET
应用程序背后,都有一个根目录包含的文件集。这种架构推动部署ASP.NET
应用程序非常简单X -
副本样式。您只需创建一个Web
服务器计算机的新的虚拟目录,并复制到根目录的ASP.NET
应用程序文件。当然,这是一个多一点的,因为有一个虚拟目录创建Web
场环境沉闷乏味,而文件的复制,必须在每个前端农场Web
服务器复制。
每个ASP.NET
应用程序可以独立配置,增加了在其根目录中的Web.config
文件。在Web.config
文件是一个基于XML
的配置元素文件,控制行为的各种功能的ASP.NET
框架,如汇编,页面呈现,和状态管理。一个简单的web.config
文件如下:
<configuration>
<system.web>
<customErrors mode="On" />
<httpRuntime maxRequestLength="51200" />
<authentication mode="Windows" />
<identity impersonate="true" />
<authorization>
<allow users="*" />
</authorization>
</system.web>
</configuration>
重要的是要注意,ASP.NET
框架运行的一定程度的隔离每个ASP.NET
应用程序。这是真的,即使在一个情景时,您已设定多个ASP.NET
应用程序运行在相同的IIS
应用程序池。 ASP.NET
框架提供了ASP.NET
应用程序之间的隔离内的IIS
工作进程运行相同的实例通过加载到一个单独的.NET
框架的AppDomain
。