ASP.NET Framework深度历险(1)

ASP.NET  Framework深度历险(1)

Author:uestc95  
E-mail:uestc95@263.net
    
记得前一段时间有本不错的书叫Delphi深度历险,写得不错,我也就暂且借用了,:)
在这里我不打算简单介绍ASP.NET的入门知识了,ASP.NET除了名字和古老的ASP有些相同外,已经是完完全全的改变了,虽然你仍能在ASP.NET中发现你熟悉的Session,Application等等,但是不要尝试将他们同远古的ASP时代的Session等等画上等号。
我们来慢慢的深入到ASP.NET Framework的核心内部,看看她是如何实现的,看看她是如何能承担起下一代Web开发技术平台这个美誉的。
这篇东东不曾想过要完成多少章节,也没有这个必要,权当日记的形式存在,或许很短,或许很长,我会尽我的所能来将ASP.NET Framework展现在诸位面前。
如果你对ASP.NET Framework没有任何了解,你同样可以成为ASP.NET coding高手,如果是这样,你就不必继续看下去了。

Chapter One --  Process a http request.

我们瞧一瞧ASP.NET Framework的运行机制和架构。
在开始之前,我们先跟随考古学家参观一下古老的ASP运行机制:
当你请求一个*.asp文件的时候,这个http request首先被inetinfo.exe进程所截获,这个inetinfo.exe进程就是WWW服务进程,然后她会将这个请求转交给asp.dll进程,asp.dll进程就会解释执行这个asp叶面,然后将解释后的数据流返回给客户端浏览器。

转过头来我们看看如今的ASP.NET Framework是如何处理一个http request.
当你请求一个*.aspx文件的时候,同样的这个http request会被inetinfo.exe进程截获,她判断文件的后缀之后,将这个请求转交给ASPNET_ISAPI.dll,ASPNET_ISAPI.dll会通过一个被称为Http PipeLine的管道,将请求发送给ASPNET_WP.exe进程,当这个http request进入ASPNET_WP.exe进程之后,会通过HttpRuntime来处理这个请求,处理完毕将结果返回客户端。

OK,好像并没有太大的改进嘛,不要着急,在ASP.NET Framework中我们甚至能够了解到HttpRuntime的细节。好,继续深入下去:
当Http Request进入HttpRuntime之后,会继续进入到一个被称之为HttpApplication Factory的一个Container中,她会给出一个HttpApplication来处理传递进来的请求,这个请求会依次进入如下几个Container:HttpModule->HttpHandler Factory->HttpHandler。
当系统内部的HttpHandler的ProcessResquest方法处理完毕之后,整个Http Request就完成了,客户端也就得到相应的东东了。

整理一下ASP.NET Framework处理一个Http Request的流程:

HttpRequest-->inetinfo.exe-->ASPNET_ISAPI.dll-->Http Pipeline-->ASPNET_WP.exe-->HttpRuntime-->HttpApplication Factory-->HttpApplication-->HttpModule-->HttpHandler Factory-->HttpHandler-->HttpHandler.ProcessRequest()

或许会问,我知道这个处理流程有什么用处呢?当然有用了,比如如果你想要中途截获一个Http Request并且做些自己的处理,该如何做呢?这是下一次我们探讨的东东了,下次我们详细讨论处理的细节问题。
see you later

(待续,欢迎探讨:uestc95@263

时间: 2024-12-14 13:01:37

ASP.NET Framework深度历险(1)的相关文章

ASP.NET Framework深度历险(2)

asp.net ASP.NET Framework深度历险(2) Author:uestc95ArticleType:原创E-mail:uestc95@263.net.NET Framework Version:1.0.3705正式版VS.NET(C#) Version:7.0.9466正式版     刚刚吃完晚饭,正好在键盘上面锻炼一下手指.    接着上回继续写这个"日记":        Chapter Two -- HttpModule是如何工作的?     我们上回说到,一个

ASP.NET Framework深度历险(3)

asp.net ASP.NET Framework深度历险(3) Author:uestc95ArticleType:原创E-mail:uestc95@263.net.NET Framework Version:1.0.3705正式版VS.NET(C#) Version:7.0.9466正式版     这几天胃口还算好,虽然算不上"吃嘛嘛香",但是也算是不错了,但愿能增上几斤才好.    怎么样,我们在Chapter Two最后提出的两个问题估计早出来了吧,:)    First:为什

DataGrid Web控件深度历险(2) Part2

datagrid|web|控件 在本文的第一部分,我们研究了如何设定DataGrid Web控件的显示属性以及如何通过样式设定DataGrid的页眉.页脚.行和交替行的显示.所有这些技术或是用于设定整个DataGrid的显示,或是用于设定DataGrid中行的显示.但是如何设定DataGrid中列的显示属性?其实并不难,接着读你就知道了. 设定哪些列应该显示 缺省情况下DataGrid在生成的HTML表格中为SQL查询返回的每一列生成一个对应的列.但是在一些情况下仅希望在DataGrid中显示这

DataGrid Web控件深度历险(3) part1

datagrid|web|控件 这篇文章是一系列关于使用DataGrid Web控件文章的第三篇.ASP.Net DataGrid Web控件可将数据库信息显示在HTML表格中,并且功能强大.在第一篇文章中我们讨论了DataGrid的基本功能:在第二篇文章中我们讨论了设定DataGrid显示属性的信息.本文将研究如何将事件与DataGrid联系起来. 导言 在第一篇文章中我们研究了DataGrid的基本功能 (它是一个被设计用于在HTML表格标签中显示数据的ASP.Net Web控件),展示了通

DataGrid Web控件深度历险(1)

datagrid|web|控件 DataGrid Web控件深度历险(1) 这篇文章是一系列关于使用DataGrid Web控件文章的第一部分.ASP.Net DataGrid Web控件可将数据库信息显示在HTML表格中,并且功能强大.在最简单的情形下DataGrid显示HTML表格框架,但是它可被增强以显示丰富的用户界面,可根据数据库的列进行排序,甚至允许对数据库结果进行分页!所有这些有趣的主题将在今后一系列文章中涉及. 从数据库中获取表格信息并将其显示在一个HTML表格中是传统ASP编程中

《java深度历险》读书笔记(一)

笔记 最近开始看 王森先生的<java深度历险>,从我一借到这本书就爱不释手,书里的内容非常吸引人.可以说这本书有助于我们对java程序运行过程有更深的理解.所以我将记录一些书中的重要结论,供大家参考,也作为自己的笔记.     第一章: 我们的机器里面至少有两套jre,一套在%JAVA_HOME%/jre,一套在%HOME%/Program Files/Java/jre1.x.x,那么当我们在命令行输入java xxx的时候会按照下面的逻辑来寻找适合的jre来执行程序: 1.       当

042_《Delphi深度历险》

<Delphi深度历险> Delphi 教程 系列书籍 (042) <Delphi深度历险> 网友(邦)整理 EMail: shuaihj@163.com 下载地址: Part1 Part2 附书源码 作者: 陈宽达 丛书名: 其他 出版社:科学出版社 ISBN:7030094484 上架时间:2001-10-11 出版日期:2001 年7月 页码:422 版次:1-1 内容简介 这是一本很具特色的书籍,作者通过自身的编程经验告诉你在拥有了基本的程序设计能力后,如何进行自身发掘问题

详解ASP.NET Core和ASP.NET Framework共享身份验证_实用技巧

.NET Core 已经热了好一阵子,1.1版本发布后其可用性也越来越高,开源.组件化.跨平台.性能优秀.社区活跃等等标签再加上"微软爸爸"主推和大力支持,尽管现阶段对比.net framework还是比较"稚嫩",但可以想象到它光明的前景.作为.net 开发者你是否已经开始尝试将项目迁移到.net core上?这其中要解决的一个较大的问题就是如何让你的.net core和老.net framework站点实现身份验证兼容! 1.第一篇章 我们先来看看.net co

DataGrid Web控件深度历险(2) Part1

datagrid|web|控件 导言 在第一部分我们研究了DataGrid的基本功能,它可在HTML表格中显示数据.在第一部分我么说明了将数据库内容绑定至DataGrid是非常简单的,我们所要做的就是通过SQL查询来生成一个DataReader对象,将DataGrid的DataSource属性设为这个DataReader对象,然后调用DataGrid对象的DataBind()方法.剩下的事情就是将DataGrid放置到HTML中,它可通过如下代码实现: <asp:datagrid runat=&qu