ASP.NET温故而知新学习系列之深度剖析ASP.NET架构—ASP.NET请求的处理过程(一)

       前言

  我为什么要写这一系列呢,因为只有了解运行机制,学好底层,对我们更深入的理解一定的问题有帮助。

  一:ASP.NET的工作原理

  我们根据下面这张图来说明ASP.NET是如何来工作的

  1.1 客户请求Web页

  我们知道ASP.NET是B/S结构,也就是服务器和浏览器这样一个结构,服务器可以有一台或者多台,对于浏览器可以有无数个,每个客户是通过浏览器来访问服务器的,所以第一步是客户请求Web页。

  1.2 Web服务器寻找指令文件

  于是这个指令就通过浏览器被发送到服务器上比如:http://www.menglin/test.apx,在服务器上开始寻找指令文件,在我们这里是寻找.aspx文件,如果服务器上没有装.Framework,对于.aspx文件服务器就不知道如何处理了。如果服务器已经装了.Framework,就会找这个指令。

  1.3 ASP.NET代码发送给公共语言运行时进行编译

  这个指令是谁来处理的呢?是aspnet_isapi.dll这个动态链接库来处理的,可以说在ASP.NET中所有的.aspx文件都是被aspnet_isapi.dll它来处理的,它的作用就是把.aspx文件发送给公共语言运行时进行编译,也就是发送给.Framework里面的公共语言运行时CLR进行编译。

  1.4 HTML流返回给浏览器

  编译完了以后,把HTML流返回给浏览器。

  1.5 浏览器处理HTML流并显示页面

  浏览器解释HTML流,并显示页面。

  可以看出Web服务器处理的过程就是调用aspnet_isapi.dll处理aspx文件的过程,处理的结果就是一个HTML静态页面。

   

  二:ASP.NET页面的执行流程

  2.1 每个.aspx文件实际上是继承page类的,在运行的过程中它从一个类变成了一个对象,这是一个实例化的过程。

  2.2 把类转化为一个对象以后呢,被CLR转化为HTML,发送给aspnet_iaapi.dll。

  2.3 aspnet_iaapi.dll然后和IIS交互,把HTML发送给IIS。

  2.4 IIS把HTML返回给浏览器。

  

  三:ISAPI

   我们前面好几次讲到aspnet_iaapi.dll,到底aspnet_iaapi.dll是个什么东西呢?

  在互联网开始时候,基本上Intent都是静态页面,静态页面是以.HTML文件为代表的,但是随着需求的发展,静态页面已经满足不了需求了,这时候开发者就需要扩展Web服务器的功能,这时候不同的Web服务器厂商都遵循了同一个主题“向Web服务器插入某些组件”,也就是说这在极大程度上丰富了Web服务器,对于Web服务器来说它可以进行功能的扩充,是通过加组件的方式,调用组件来实现一些功能的。所有的Web服务器都允许开发者自己来插入一些组件来增强Web服务器的功能,微软提出了ISAPI(全称是Intent Server API),所以到这里明白了,提供了一种技术,这种技术让开发者向Web服务器插入一些组件来扩充Web服务器的功能。

  ISASP经常用两个手段实现。

  3.1 ISAPI扩展

   ISAPI扩展是使用Win32动态链接库来实现的,我们之前提到的aspnet_iaapi.dll就是这种方式,这种扩展是通过dll来实现的。

  3.2 ISAPI过滤器

  客户端每次向服务器发送请求都要经过滤器的,客户端不需要在请求中指定过滤器,只需要把请求发送给Web服务器,Web服务器把请求传递给相关的过滤器,过滤器可能修改请求,执行某些操作。

  四:ASP.NET请求的处理过程

  ASP.NET请求的处理过程是基于管道模型的,在模型中ASP.NET把HTTP请求传递给管道中的所有模块,每个模块都接收HTTP请求并拥有完全控制权,模块可以用自认为合适的方式来处理请求,一旦HTTP请求经过所有HTTP模块,最终被HTTP处理程序所处理,HTTP处理程序队请求做一些处理,并且结果将再次经过管道中的HTTP模块。类似一个管道似的。

  

  

  

每天学习一点点,每天进步一点点 用文字记录工作,用文字记录人生
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值