|
一 asp.net架构 1.1 .1asp.net工作原理 四步:1 客户端请求WEB页 2 WEB服务器寻找指定文件(aspx) 3 asp.net将指定代码文件发送给CLR进行编译 4 HTML流返回给浏览器 5 浏览器处理HTML并显示页面 1.1.2 asp.net页面的执行过程 图见附件
1. 1.3 ISAPI • 在Internet时代的开端,客户端的需求非常有限;.htm文件就可以满足他们的需求。但是,随着时间的流逝,客户端需求的扩充超越了.htm文件或静态文件所包含的功能。
• 开发者需要扩充或扩展Web服务器的功能。Web服务器厂商设计了不同的解决方案,但是都遵循同一个主题“向Web服务器插入某些组件”。所有的Web服务器补充技术都允许开发者建立并插入组件以增强Web服务器的功能。微软公司提出了ISAPI(Internet服务器API),网景公司提出了NSAPI(网景服务器API)等等。 ISAPI是一种重要的技术,它允许我们增强与 ISAPI兼容的Web服务器(IIS就是一种与ISAPI兼 容的Web服务器)的能力。我们使用下面的组件达到这个目的:
• ISAPI扩展:ISAPI扩展是使用Win32动态链接库 来实现的。你可以把ISAPI扩展看作是一个普通的 应用程序。ISAPI扩展的处理目标是http请求。 • ISAPI过滤器:客户端每次向服务器发出请求的时候,请求要经过过滤器。客户端不需要在请求 中指定过滤器,只需要简单地把请求发送给Web服务器,接着Web服务器把请求传递给相关的过
滤器。接下来过滤器可能修改请求,执行某些登 录操作等等。 1. 1.4 ASP.NET的请求处理过程 •ASP.NET请求处理过程是基于管道模型的,在模型中ASP.NET把http请求传递给管道中的所有模块。每个模块都接收http请求并有完全控制权限。模块可以用任何自认为适合的方式来处理请求。一旦请求经过了所有HTTP模块,就最终被HTTP处理程序处理。HTTP处理程序对请求进行一些处理,并且结果将再次经过管道中的HTTP模块。 图见附件
1.2 ISAPI的筛选器-HttpModule • IIS本身是不支持动态页面的,也就是说它仅仅支持静态html页面的内容,对于如.asp,.aspx,.cgi,.php等,IIS并不会处理这些标记,它就会把它当作文本,丝毫不做处理发送到客户端。为了解决这个问题。IIS有一种机制,叫做ISAPI的筛选器,它是一个标准组件(COM组件)。
•Asp.net服务在注册到IIS的时候,会把每个扩展可以处理的文件扩展名注册到IIS里面(如:*.ascx、*.aspx等)。扩展启动后,就根据定义好的方式来处理IIS所不能处理的文件,然后把控制权跳转到专门处理代码的进程中。让这个进程开始处理代码,生成标准的HTML代码,生成后把这些代码加入到原有的Html中,最后把完整的Html返回给IIS,IIS再把内容发送到客户端。 • HttpModule实现了ISAPI Filter的功能,是通过对IhttpModule接口的继承来处理。
•HTTP模块是实现了System.Web.IhttpModule接口的.NET组件。这些组件通过在某些事件中注册自身,把自己插入ASP.NET请求处理管道。当这些事件发生的时候,ASP.NET调用对请求有兴趣的HTTP模块,这样该模块就能处理请求了。 1.3 HttpHandler • HttpHandler实现了ISAPI Extention的功能,他处 理请求(Request)的信息和发送响应(Response)。 HttpHandler功能的实现通过实现IHttpHandler接 口来达到。
•HTTP处理程序是实现了 System.Web.IHttpHandler接口的.NET组件。任 何实现了IHttpHandler接口的类都可以用于处理输 入的HTTP请求。HTTP处理程序与ISAPI扩展有 些类似。HTTP处理程序和ISAPI扩展的差别在于 在URL中可以使用HTTP处理程序的文件名称直接 调用它们,与ISAPI扩展类似。 二 asp.net与 wss2.0的融合
如果一个虚拟服务器被 Windows SharePoint Services 2.0 扩展之后,当 IIS 接收到HTTP 请求时,该请求会被传送给“stsfltr”这个 ISAPI 过滤器。“stsfltr”过滤器会检测当前请求的页面路径是不是一个 SharePoint 包含的路径,如果是,那么这个请求将不会直接传递给ASP.NET引擎,而是交给 Windows SharePoint Services 2.0进行处理。 Windows SharePoint Services 2.0得到这个HTTP请求后,会根据配置数据库中的信息,从某个合适的地方(磁盘上的模板文件或者数据库中保存的页面文件)将页面载入,然后才会再将页面交给ASP.NET引擎进行处理。 由上面可以看出wss2.0是在IIS机制的基础上对请求预先进行处理,然后传递给ASP。NET引擎进行进一步的处理 三 asp.net与 wss3.0的融合 Windows SharePoint Services 3.0 使用了 ASP.NET 中的HttpHandler 和HttpModule 扩展技术,以及ASP.NET 2.0中新增的Virtual Path Provider 功能,来实现Windows SharePoint Services 2.0中的“stsfltr”以及ISAPI扩展同样的功能。 同时,Windows SharePoint Services 3.0修改了这个虚拟网站的文件映射设置,将所有文的请求全部转给ASP.NET 引擎处理。在一个普通的 ASP.NET 站点中,通常只有 ASP.NET 相的应用程序文件访问请求,比如.aspx、.asmx,才会转给 ASP.NET 引擎处理,而一些普通文件访问请求,比如.doc、.zip,会由 IIS 直接处理。IIS 通常从磁盘上读取文件内容,然直接将文件内容返回给客户端。但是由于Windows SharePoint Services 是将所有的数据内,包括文档库中的文件,都存放在数据库中的,因此,当客户端请求一个存放在 SharePoint点中的文件时,必须 首先将请求传递给ASP.NET引擎,然后Windows SharePoint Services 中的模块会处理这个请求,从适当的地方载入适当的文件,再进行相应的处理。 可以这么说,asp.net实现了isapi的筛选器(httpmodule)和扩展(httphandler),而wss3.0正是利用aspnet的这种功能实现了对asp.net功能的利用与强化。Wss3.0与asp.net的关系是:asp.net预留了用户开发接口,wss3.0利用了这个接口对系统进行扩展,同时利用了asp.net的中的功能,来共同完成任务。功能上wss3.0是一种强化,但是在实现上却是利用了asp.net.2。0上的功能。
|
一共有 2 条评论