XuGang

记录一个程序员的成长

 

(翻译)从底层了解ASP.NET体系结构

http://www.cnblogs.com/rijing2004/archive/2007/09/14/892426.html

前言

关于ASP.NET的底层的工作机制,最近园子里讨论的甚是火热。相信很多人都看过Rick Strahl先生的一篇经典之作:A low-level Look at the ASP.NET Architecture,经Rick Strahl先生同意,我把他的这篇文章翻译成中文,希望能够给想深入了解ASP.NET工作机制的朋友一点帮助。 


特别说明:翻译此文的目的仅仅是为了给广大的ASP.NET爱好者提供一些帮助,由于本人能力有限,文中不对地方,还请批评指正。如果你需要转载,请你保留该文以及原英文的链接。多谢!

作者:Rick Strahl ||  翻译:today || 下载例子代码

目录

1.      ASP.NET是什么?

2.      从浏览器到ASP.NET

3.      ISAPI连接

4.      IIS5和IIS6的不同之处

5.      进入.NET运行时

6.      加载.NET—稍微有点神秘

7.      回到运行时

8.      HttpRuntime,HttpContext以及HttpApplication

9.      Web程序的主要部分:HttpApplication

10. 穿过ASP.NET管道

11. HttpContext,HttpModules和HttpHandlers

12. HttpModules

13. HttpHandlers

14. 是否已经提供了足够的底层知识?

摘要:ASP.NET是一个用于构建Web程序的强大平台,提供了巨大的弹性和能力以至于它可以构建任意的Web程序。许多人仅仅对处于ASP.NET高层次的框架如:WebForms和WebServices比较熟悉,因此,在这篇文章里,我将会阐述有关ASP.NET比较底层的知识,并且将会解释,如何将请求从Web Server移交给ASP.NET运行时,然后通过ASP.NET HTTP管道处理这些请求。

对于我来说,了解一个平台的内部工作机制总是会让我感到一些满足和安慰,如同洞察,可以帮助我写出更好的程序。知道了工具有什么用途,以及它们如何组装成复杂框架的一部分,这些将会使你很容易的找到问题的解决方案,以及在你修改和调试错误时,都显得非常重要。这篇文章的目的就是从底层了解ASP.NET以及帮助你理解请求如何流入ASP.NET处理管道里。同时,你将会了解ASP.NET引擎的核心,以及一个Web请求如何在这里结束。这里讲到的许多知识都是你日常工作中没必要知道的,但是,如果你理解了ASP.NET如何把请求路由到应用程序的代码里(通常比较高层次的),这将对你非常有用。

注:整个ASP.NET引擎完全构建在托管代码里,其所有的扩展性都是通过托管代码去构建

 

使用ASP.NET的大多数都比较熟悉WebForms和WebServices。这些高层次的实现,使得构建Web程序变得非常容易。ASP.NET被设计为驱动引擎,它把底层的接口提供给Web Server,为高层次Web应用程序的前端和末端提供了路由服务。WebForms和WebServices是建立在ASP.NET框架之上,有关HTTP处理的两种最常用的方式。

其实,在较低的层次上,ASP.NET也提供了足够多的灵活性。HTTP运行时和请求管道提供了同样的能力,可以构建类似于WebForms和WebServices的实现,当然,这些已经使用.NET托管代码实现了。如果你需要构建一个自定义HTTP处理平台,而这个平台要比WebForms所处的层次低一点,那么你就会用到所有这些类似的功能。

构建大多的Web界面,使用WebForms无疑是最容易的方法,但是,如果你想自定义一个内容处理器,或者需要对流入和流出的内容做特殊的处理,或者需要为一个应用程序定制一个应用服务器接口,那么使用这些低层次的处理或者模块将会得到更好的性能,以及可以在真正的请求处理中获得更多的控制权。尽管那些高层次的实现,如:WebForms和WebServices已提供了类似的功能,但由于它们针对请求添加了太多的控制(导致性能下降)。所以你完全可以另辟佳境,在较低层次上处理这些请求。


posted on 2007-10-12 11:47  钢钢  阅读(441)  评论(0编辑  收藏  举报

导航