• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

深度剖析ASP.NET架构—ASP.NET请求的处理过程(一)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

  前言

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

  阅读目录

    一:ASP.NET的工作原理

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

    三:ISAPI

    四: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_isapi.dll。

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

      2.4 IIS把HTML返回给浏览器。

      

    三:ISAPI

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

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

      ISAPI是一种重要的技术,它允许我们增强与ISAPI兼容的Web服务器的能力。

      ISAPI经常用两个手段实现。

      3.1 ISAPI扩展

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

      3.2 ISAPI过滤器

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

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

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

      


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap