aspnet管道模型

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

HttpContext
1. 在从非托管环境转到托管环境的过程中,会创建HTTPContext对象,并依 据这个对象来创建IHttpHandler(这里也就是一个HttpApplication对象) HTTPContext这个上下文对象就是请求相关的信息,比如可以得到 Request对象,Server对象等,其生命周期就是这个请求的生命周期, 生成响应并返回给IIS后,此对象的生命周期就结束了。
2.
SSOFT V2.0
HttpApplication
1.
2.
3.
HttpApplication基本可以说是整个程序的体现,在创建这个对象 的时候是基于Global.asax来创建的 这个对象在创建的时候会查看配置文件,并把所有的模块(Modules)添 加到这个对象本省的ModuleCollection集合中。 HttpApplication本身并不处理响应,只是在不同的阶段引发事件,通过 调用响应的事件处理函数来处理响应。事件按先后顺序如下:
SSOFT V2.0
HttpApplication(二)
1. HttpApplication只是承载这个请求,内部会创建一个HttpApplication对 象的一个池,当请求来的时候,直接从池中拿取HttpApplication对象来服 务请求,如果没有就创建HttpApplication对象。
不同的Web容器有不同的处理方式,即便是IIS本身,不同的版本处理模式也不一样 开发的程序一经部署(虚拟目录的形式)就被IIS所管理,对于静态资源IIS直接服 务,可以不经过程序,而动态就需要处理了。 IIS在设计开发时为了满足可以服务多种不同类型的服务,提供了一个扩展API叫做ISAPI (Internet Server API),而提供的API是一个叫做aspnet_isapi.dll的文件 做承载
A类型的请求
Metadata DataBase A->A扩展程序
IIS B->B扩展程序
A扩展程序
B类型的请求
B扩展程序
其它扩展程序……
SSOFT V2.0
IIS5处理模型
IIS的映射元数据库依据扩展名找到aspx该由 aspnet_isapi扩展程序处理。Aspnet_isapi.dll 会创建aspnet_wp.exe这个进程来处理请求
SSOFT V2.0
HttpModule应用场景
1.
2.
安全:因为可以检测进来的请求,所以不和要求的请求可以不响应,比如 日本的IP地址不能访问我们的网站 统计与日志:因为在每一个请求中,模块都会被调用,你就可以在一个模 块中进行集中的处理。
SSOFT V2.0
HttpModule应用
1. 简单的日志管理,比如监听BeginRequest与EndRequest事件。
SSOFT V2.0
管道模型
1. 管道模型会把每个请求都传递给注册的每个Module中,每个Module对请 求都会有完全的控制,设置直接生成响应并输出。但一般不会这么做。一 旦请求经过了所有的管道后,会交给某个特定的Handler来处理 。 Handler执行完后,其结果又会经过管道进行传输
aspnet是一个基于web的开发平台提供构建企业级应用所需的serviceprogrammingmodel和software的infrastructuressoftv20httpcontext在从非托管环境转到托管环境的过程中会创建httpcontext对象并依据这个对象来创建ihttphandler这里也就是一个httpapplication对象httpcontext这个上下文对象就是请求相关的信息比如可以得到request对象server对象等其生命周期就是这个请求的生命周期aspnet生成响应并返回给iis后此对象的生命周期就结束了
SSOFT V2.0
IIS5处理模型
特点有三: • 1. 首先,同一台主机上再同一时间只能运行一个aspnet_wp进程,每个基于 虚拟目录的 Application对应一个Application Domain,也就是说 每个Application都运行在同一个Worker Process中,Application之间的隔 离是基于Application Domain的,而不是基于Process的。 • 2. 其次, ISAPI不但负责创建aspnet_wp Worker Process,而 且负责监控该进程,如果检测到aspnet_wp的Performance降低到某个设定 的下限, ISAPI会负责结束掉该进程。当aspnet_wp结束掉之后 ,后续的Request会导致 ISAPI重新创建新的aspnet_wp Worker Process。 • 3. 最后,由于IIS和Application运行在他们各自的进程中,他们之间的通信 必须采用特定的通信机制。本质上IIS所在的InetInfo进程和Worker Process 之间的通信是同一台机器不同进程的通信(local interprocess communications),处于Performance的考虑,他们之间采用基于Named pipe的通信机制。 ISAPI和Worker Process之间的通信通过他们 之间的一组Pipe实现。同样处于Performance的原因, ISAPI通过 异步的方式将Request 传到Worker Process并获得Response,但是 Worker Process则是通过同步的方式向 ISAPI获得一些基于 Server的变量。
• • • • • • • • • • BeginRequest: AuthenticateRequest & Post AuthenticateRequest AuthorizeRequest & Post AuthorizeRequest ResolveRequestCache & Post ResolveRequestCache PostMapRequestHandler: AcquireRequestState & AcquireRequestState: PreRequestHandlerExecute & Post RequestHandlerExecute: ReleaseRequestState & Post ReleaseRequestState UpdateRequestCache & PostUpdateRequestCache EndRequest:
SSOFT V2.0
ISAPI到 Runtime
SSOFT V2.0

1. 是什么?是一个基于Web的开发平台,提供构建企业级应 用所需的Service、Programming Model和Software的Infrastructure
SSOFT V2.0
SSOFT V2.0
HttpModule
HttpModule在每个请求到来时都被调用,存活于请求的整个生命周期,可以让 你检测请求并作出一些响应。 创建步骤: 1.必须实现IHttpModule 2.在Web.config中进行注册
SSOFT V2.0
ห้องสมุดไป่ตู้
已有HttpModule
1. 在Machine.config和Web.config中可以找到
1. 2. 3. 4. 选中网站,选属性 在Home选项卡点击配置按钮 点击Add 如右图
SSOFT V2.0
HttpHandler文件管理
1. 专门处理.rar扩展名的文件,这样可以通过一个唯一的Handler来集中管理 整个网站的文件下载问题。
SSOFT V2.0
HttpHandler之会话
请求(如浏览器等)
????
Web容器(如IIS)
自己开发的 ? web程序或网站
请求不仅仅只有浏览器,一些网络程序也可以发起请求 Web容器也叫Web Server也不仅仅只有IIS Web容器才是发出响应的地方,我们开发的程序是处在什么角色?
SSOFT V2.0
IIS5处理模型 (Process Model)
SSOFT V2.0
IIS 5的缺陷
• . 首先从Performance上看,IIS和application运行在不同 的进程中,虽然他们之间采用了基于Named Pipe的异步 通信方式,但是一个基于进程之间的通信对性能的影响确 实不能从根本上解决。
• 2. 其次,从Reliability来考虑,一台机器上只能运行一个 worker process,每个Application运行在同一个进程中 ,虽然基于Application Domain的隔离能提供一定的 Reliability,但是一旦真个进程崩溃,所有的Application 都受影响。所以我们有时候需要提供一个基于Process的 隔离性。
Generic Web handler (*.ashx)
Trace handler (trace.axd)
SSOFT V2.0
HttpHandler创建与使用
开发时的步骤: 1.创建IHttpHandler 2.在Web.config中注册 3.<httpHandlers> <add verb="*" path="*.15seconds" type="MyHandler.NewHandler,MyHandler"/> </httpHandlers> 部署时的配置:部署时如果不配置,IIS只会简单的返回文件,而不经过 处理
管道模型
本章目标
• • • • •
简介 主要应用的场景 内嵌的Handler与Module HTTP Handler的创建与使用 HTTP Module的创建与使用
SSOFT V2.0
IIS简介
在浏览器中输入default.aspx是怎么让default.aspx响应这 个请求的呢?整个过程是什么?
1. 2. 实现IRequiresSessionState或者 IReadOnlySessionState
SSOFT V2.0
SSOFT V2.0
HttpHandler
1. 也称为一个端点(终点),用来响应请求,经典的Handler就是aspx页面 Handler
SSOFT V2.0
内置的HttpHandler
Handler page handler (*.aspx) Web service handler (*.asmx) Description The default HTTP handler for all pages. The default HTTP handler for Web service pages created as .asmx files in . The default HTTP handler for all Web handlers that do not have a UI and that include the @ WebHandler directive. A handler that displays current page trace information.
SSOFT V2.0
IIS 6处理模型
• 提供了一个Application Pool的概念,池就是应用程序的 容器,一个池可以放多个应用程序,而这个应用程序的进 程叫w3wp.exe,而且这个进程又可以通过创建许多的 App Domain来托管多个web 应用程序与网站 • 这样可以通过进程隔离各个应用程序,也可以通过应用程 序域(App Domain)来隔离
相关文档
最新文档