您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 深入解析ASP.NET架构
ASP.NET架构讲师:邵志东课前准备•DotNetFrameWork•VS.NET2002/2003•C#/VB.NET•Level200议程•ASP.NET请求的处理过程•HttpModule•HttpHandler•HttpModule和HttpHandler使用实例•ASP.NET事件模型机制ASP.NET工作原理Web服务器客户机①客户请求Web页②Web服务寻找指令文件(.aspx)③ASP.NET代码被发送给公共语言运行时进行编译④HTML流返回给浏览器和指令⑤浏览器处理HTML并显示页面aspnet_isapi.dllASP.Mypage.aspx类System.Web.UI.Page类继承自Mypage.aspx文件aspnet_isapi.dllIISCLRASP.Mypage.aspx对象HTML实例化Web浏览器HTTP请求HTTP响应(HTML)ASP.NET页面的执行过程ISAPI•在Internet时代的开端,客户端的需求非常有限;.htm文件就可以满足他们的需求。但是,随着时间的流逝,客户端需求的扩充超越了.htm文件或静态文件所包含的功能。•开发者需要扩充或扩展Web服务器的功能。Web服务器厂商设计了不同的解决方案,但是都遵循同一个主题“向Web服务器插入某些组件”。所有的Web服务器补充技术都允许开发者建立并插入组件以增强Web服务器的功能。微软公司提出了ISAPI(Internet服务器API),网景公司提出了NSAPI(网景服务器API)等等。ISAPIISAPI是一种重要的技术,它允许我们增强与ISAPI兼容的Web服务器(IIS就是一种与ISAPI兼容的Web服务器)的能力。我们使用下面的组件达到这个目的:•ISAPI扩展:ISAPI扩展是使用Win32动态链接库来实现的。你可以把ISAPI扩展看作是一个普通的应用程序。ISAPI扩展的处理目标是http请求。•ISAPI过滤器:客户端每次向服务器发出请求的时候,请求要经过过滤器。客户端不需要在请求中指定过滤器,只需要简单地把请求发送给Web服务器,接着Web服务器把请求传递给相关的过滤器。接下来过滤器可能修改请求,执行某些登录操作等等。ASP.NET请求的处理过程•ASP.NET请求处理过程是基于管道模型的,在模型中ASP.NET把http请求传递给管道中的所有模块。每个模块都接收http请求并有完全控制权限。模块可以用任何自认为适合的方式来处理请求。一旦请求经过了所有HTTP模块,就最终被HTTP处理程序处理。HTTP处理程序对请求进行一些处理,并且结果将再次经过管道中的HTTP模块。ASP.NET请求的处理过程议程•ASP.NET请求的处理过程•HttpModule•HttpHandler•HttpModule和HttpHandler使用实例•ASP.NET事件模型机制ISAPI的筛选器•IIS本身是不支持动态页面的,也就是说它仅仅支持静态html页面的内容,对于如.asp,.aspx,.cgi,.php等,IIS并不会处理这些标记,它就会把它当作文本,丝毫不做处理发送到客户端。为了解决这个问题。IIS有一种机制,叫做ISAPI的筛选器,它是一个标准组件(COM组件)。•Asp.net服务在注册到IIS的时候,会把每个扩展可以处理的文件扩展名注册到IIS里面(如:*.ascx、*.aspx等)。扩展启动后,就根据定义好的方式来处理IIS所不能处理的文件,然后把控制权跳转到专门处理代码的进程中。让这个进程开始处理代码,生成标准的HTML代码,生成后把这些代码加入到原有的Html中,最后把完整的Html返回给IIS,IIS再把内容发送到客户端。HttpModule•HttpModule实现了ISAPIFilter的功能,是通过对IhttpModule接口的继承来处理。•HTTP模块是实现了System.Web.IhttpModule接口的.NET组件。这些组件通过在某些事件中注册自身,把自己插入ASP.NET请求处理管道。当这些事件发生的时候,ASP.NET调用对请求有兴趣的HTTP模块,这样该模块就能处理请求了。HttpModule的实现1.编写一个类,实现IhttpModule接口2.实现Init方法,并且注册需要的方法3.实现注册的方法4.实现Dispose方法,如果需要手工为类做一些清除工作,可以添加Dispose方法的实现,但这不是必需的,通常可以不为Dispose方法添加任何代码。5.在Web.config文件中,注册您编写的类HttpModule实现DEMO1WebConfig设置•httpModulesaddtype=“classname,assemblyname”name=“modulename”/removename=“modulename”/clear//httpModules子标记说明:•add将HttpModule类添加到应用程序。请注意,如果以前已指定了相同的谓词/路径组合(例如在父目录的Web.config文件中),则对的第二个调用将重写以前的设置。•remove从应用程序移除HttpModule类。•clear从应用程序移除所有HttpModule映射。深入研究HttpModuleHttpModule通过对HttpApplication对象的一系列事件的处理来对HTTP处理管道施加影响,这些事件在HttpModule的Init方法中进行注册,包括:•BeginRequestAuthenticateRequestAuthorizeRequestResolveRequestCacheAcquireRequestStatePreRequestHandlerExecutePostRequestHandlerExecuteReleaseRequestStateUpdateRequestCacheEndRequest多个HttpModule实现DEMO2议程•ASP.NET请求的处理过程•HttpModule•HttpHandler•HttpModule和HttpHandler使用实例•ASP.NET事件模型机制HttpHandler•HttpHandler实现了ISAPIExtention的功能,他处理请求(Request)的信息和发送响应(Response)。HttpHandler功能的实现通过实现IHttpHandler接口来达到。•HTTP处理程序是实现了System.Web.IHttpHandler接口的.NET组件。任何实现了IHttpHandler接口的类都可以用于处理输入的HTTP请求。HTTP处理程序与ISAPI扩展有些类似。HTTP处理程序和ISAPI扩展的差别在于在URL中可以使用HTTP处理程序的文件名称直接调用它们,与ISAPI扩展类似。HttpHandler的实现实现我们的HTTP处理程序包含以下步骤:•编写一个实现IHttpHandler接口的类。•在web.config或machine.config文件中注册这个处理程序。•在Internet服务管理器中把文件扩展(你想要处理的文件扩展名)映射到ASP.NETISAPI扩展DLL(aspnet_isapi.dll)上。HttpHandler实现DEMO3HttpHandler之间的关系http请求判断是否存在自定义的HttpHandler不存在存在由系统默认httpHandler处理Http请求由自定义httpHandler处理Http请求在HttpHandler中访问Session•不能直接通过HttpContext访问•必须实现IRequiresSessionState接口•IRequiresSessionState接口指定目标HTTP处理程序接口具有对会话状态值的读写访问权限。这是一个标记接口,没有任何方法。可以访问Session的HttpHandler实现DEMO4议程•ASP.NET请求的处理过程•HttpModule•HttpHandler•HttpModule和HttpHandler使用实例•ASP.NET事件模型机制ASP.NET中定时器的使用DEMO5议程•ASP.NET请求的处理过程•HttpModule•HttpHandler•HttpModule和HttpHandler使用实例•ASP.NET事件模型机制ASP.NET事件模型机制•ASP.NET之所以对于以前的ASP是一个革命性的巨变,在很大程度上是由于ASP.NET技术是一种完全基于事件驱动的全新技术。•在ASP.NET中事件的触发和处理分别是在客户端和服务器段进行的。•ASP.NET中,如果频繁和服务器进行事件信息的传递,会大大降低服务器的处理效率和性能,因而有些事件如OnMouseOver没有提供。•但提供了Change事件。为了提高效率它们被缓存在客户端。等到再一次事件信息被发送到服务器端时一同发送回去。ASP.NET中事件执行顺序DEMO6小结•ASP.NET请求的处理过程•HttpModule•HttpHandler•HttpModule和HttpHandler使用实例•ASP.NET事件模型机制获取更多MSDN资源•MSDN中文网站•MSDN中文网络广播•MSDNFlash•MSDN开发中心如需提出问题,请单击“提问”按钮并在随后显示的浮动面板中输入问题内容。一旦完成问题输入后,请单击“提问”按钮。
本文标题:深入解析ASP.NET架构
链接地址:https://www.777doc.com/doc-4455321 .html