WCF技术剖析之二:再谈IIS与ASPNET管道-WCF技巧-WCF教程

WCF技术剖析之二:再谈IIS与ASPNET管道-WCF技巧-WCF教程

ID:44209849

大小:178.62 KB

页数:14页

时间:2019-10-19

WCF技术剖析之二:再谈IIS与ASPNET管道-WCF技巧-WCF教程_第1页
WCF技术剖析之二:再谈IIS与ASPNET管道-WCF技巧-WCF教程_第2页
WCF技术剖析之二:再谈IIS与ASPNET管道-WCF技巧-WCF教程_第3页
WCF技术剖析之二:再谈IIS与ASPNET管道-WCF技巧-WCF教程_第4页
WCF技术剖析之二:再谈IIS与ASPNET管道-WCF技巧-WCF教程_第5页
资源描述:

《WCF技术剖析之二:再谈IIS与ASPNET管道-WCF技巧-WCF教程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、WCF技术剖析之二:再谈IIS与ASP.NET管道在2007年9月份,我曾经写了三篇详细介绍IIS架构和ASP.NET运行时管道的文章,深入介绍了IIS5.x与IIS6.0HTTP请求的监听与分发机制,以及ASP.NET运行时管道对HTTP请求的处理流程:[原创]ASP.NET[原创]ASP.NETTProcessProcessModel之一:Model之二:IIS和ASP.NETISAPIASP.NETHttpRuntimePipeline-Part[原创]ASP.NETProcessModelZ二:ASP.NETHttpRuntimePipel

2、ine-Part11很多人留言为何没有IIS7的介绍。在写作《WCF深入剖析》中,为了剖析基于IIS的WCF服务寄宿(Hosting),再次对相关内容进行了研究,在这里一并与大家分享。IIS5・x与ASP.NET我们先来看看IIS5.x是如何处理基于ASP.NET资源(比如.aspx,.asmx等)请求的,整个过程基木上可以通过图1体现。TTS5.x运行在进程TnetTnfo.exe中,在该进程中一个最重要的服务就是名为WorldWideWebPublishingService(简称W3SVC)的WindowsServiccoW3SVC的主耍功能包

3、括HTTP请求的监听、工作进程的管理以及配置管理(通过从Metabase中加载相关配置信息)等。当检测到某个HTTPRequest后,先根据扩展名判断请求的是否是静态资源(比如.html,.img,.txt,.xml等),如果是则直接将文件内容以HTTPResponse的形式返回。如果是动态资源(比如.aspx,asp,php等等),则通过扩展名从IIS的脚本影射(ScriptMap)找到相应的1SAP1DIE图1IIS5・X与ASP.NETISAPI是Internet月艮务器API(InternetServerApplicationProgram

4、mingInterface)的缩写,是一套本地的(Native)Win32API,具有较高的执行性能,是IIS和其他动态Web应用或者平台之间的纽带。比如ASPTSAPT桥接IIS与ASP,而ASP.NETISAPI则连接着IIS与ASP.NET。ISPAI定义在一个Dll中,ASP.NET1SAP1对应的Dll为Aspnet_isapi.dll,你可以在目录^%windir%Microsoft.NETFramework{versionno}”中找到该Dll。ISAPI支持ISAPI扩展(ISAPIExtension)和ISAPI筛选(IS

5、APIFilter),前者是真正处理HTTP请求的接口,后者则可以在HTTP请求真正被处理之询查看、修改、转发或者拒绝请求,比如IIS可以利用ISAPI筛选进行请求的验证(Authentication)。如果我们请求的是一个基于ASP.NET的资源类型,比如:•aspxWebPage>.asmxWebService或者.svcWCFService等,Aspnet_isapi.dll会被加载,ASP.NETISAPI扩展会创建ASP.NET的工作进程(如果该韭程尚未启动),对于IIS5.x来说,该工作进程为aspnct.cxcoIIS进程与工作进程Z

6、间通过命名管道(NamedPipes)进程通信,以获得最好的性能。在工作进程初始化过程中,・NET运行时(CLR)被加载,从而构建了一个托管的环境。对于某个Web应用的初次请求,CLR会为其创建一个AppDomaino在此AppDomain中,HTTP运行时(HTTPRuntime)被加载并用以创建相应的应用。对于寄宿于IIS5・x的所有Web应用都运行在同一个进程(工作进程Aspnet_wp.exe)的不同AppDomain中。IIS6与ASP.NET通过上面的介绍,我们可以看II!IIS5.x至少存在着如下两个方面的不足:•ISAPIDll被加

7、载到Inetlnfo.exe进程中,它和工作进程之间是一种典型的跨进程通信方式,尽管采用性能最好的命名管道,但是仍然会帯来性能的瓶颈;•所冇的ASP.NET应用,运行在相同的进程(aspnct_wp.cxc)中的不同的应用程序域(AppDomain)屮,基于应用程序域的隔离级别不能从根木上解决一个应用程序对另一个程序的影响,在更多的时候,我们需要不同的Web应用运行在不同的进程中。在TTS6.0中,为了解决第一个问题,ISAPI.dll被宜接加载到工作进程中。为了解决第2个问题,引入了应用程序池(ApplicationPool)的机制。我们可以为一

8、个或者多个Web应用创建应用程序池,每-•个应用程序池对应一个独立的工作进程,从而为运行在不同应用程序池屮的Web应用提供

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。