若相依 发表于 2015-1-16 14:26:42

来一篇关于NET的ASP.NET对哀求处置历程的操纵与剖析

一个很大的类库。应用程序之所以难以跨平台,在于直接调用了特定平台的接口,而一个巨大的类库,就能极大地减少应用程序对平台的依赖。<p>当哀求一个*.aspx文件的时分,这个哀求会被inetinfo.exe历程截获,它判别文件的后缀(aspx)以后,将这个哀求转交给ASPNET_ISAPI.dll,ASPNET_ISAPI.dll会经由过程http管道(HttpPipeLine)将哀求发送给ASPNET_WP.exe历程,在ASPNET_WP.exe历程中经由过程HttpRuntime来处置这个哀求,处置终了将了局前往客户端。
inetinfo.exe历程:是www服务的历程,IIS服务和ASPNET_ISAPI.DLL都存放在此历程中。
ASPNET_ISAPI.DLL:是处置。aspx文件的win32组件。实在IIS服务器是只能辨认。html文件的,当IIS服务器发明被哀求的文件是。aspx文件时,IIS服务器将其交给aspnet_isapi.dll来处置。
aspnet_wp.exe历程:ASP.NET框架历程,供应。net运转的托管情况,。net的CLR(大众言语运转时)就是存放在此历程中。
ASP.NETFramework处置一个HttpRequest的流程:
HttpRequest-->inetinfo.exe-->ASPNET_ISAPI.dll-->ASPNET_WP.exe-->HttpRuntime-->HttpApplicationFactory-->HttpApplication-->HttpModule-->HttpHandlerFactory-->HttpHandler-->HttpHandler.ProcessRequest()
ASP.NET哀求处置历程是基于管道模子的,这个管道模子是由多个HttpModule和HttpHandler构成,ASP.NET把http哀求顺次传送给管道中各个HttpModule,终极被HttpHandler处置,处置完成后,再次经由管道中的HTTP模块,把了局前往给客户端。我们能够在每一个HttpModule中都能够干涉哀求的处置历程。
注重:在http哀求的处置过程当中,只能挪用一个HttpHandler,但能够挪用多个HttpModule。
当哀求抵达HttpModule的时分,体系还没有对这个哀求真正处置,可是我们能够在这个哀求传送各处理中央(HttpHandler)之前附加一些别的信息,大概截获的这个哀求并作一些分外的事情,也大概停止哀求等。在HttpHandler处置完哀求以后,我们能够再在响应的HttpModule中把哀求处置的了局举行再次加工前往客户端。
HttpModule
HTTP模块是完成了System.Web.IhttpModule接口的类。
IHttpModule接口的声明:
<olclass="dp-xml">publicinterfaceIHttpModule{voidInit(HttpApplicationcontext);voidDispose();}
Init办法:体系初始化的时分主动挪用,这个办法同意HTTP模块向HttpApplication工具中的事务注册本人的事务处置程序。
Dispose办法:这个办法赐与HTTP模块在工具被渣滓搜集之前实行清算的时机。此办法一样平常无需编写代码。
HTTP模块能够向System.Web.HttpApplication工具注册上面一系列事务:
AcquireRequestState当ASP.NET运转时筹办好吸收以后HTTP哀求的对话形态的时分激发这个事务。
AuthenticateRequest当ASP.NET运转时筹办考证用户身份的时分激发这个事务。
AuthorizeRequest当ASP.NET运转时筹办受权用户会见资本的时分激发这个事务。
BeginRequest当ASP.NET运转时吸收到新的HTTP哀求的时分激发这个事务。
Disposed当ASP.NET完成HTTP哀求的处置历程时激发这个事务。
EndRequest把呼应内容发送到客户端之前激发这个事务。
Error在处置HTTP哀求的过程当中呈现未处置非常的时分激发这个事务。
PostRequestHandlerExecute在HTTP处置程序停止实行的时分激发这个事务。
PreRequestHandlerExecute在ASP.NET入手下手实行HTTP哀求的处置程序之前激发这个事务。在这个事务以后,ASP.NET把该哀求转发给得当的HTTP处置程序。
PreSendRequestContent在ASP.NET把呼应内容发送到客户端之前激发这个事务。这个事务同意我们在内容抵达客户端之前改动呼应内容。我们可使用这个事务给页面输入增加用于一切页面的内容。比方通用菜单、头信息或脚信息。
PreSendRequestHeaders在ASP.NET把HTTP呼应头信息发送给客户端之前激发这个事务。在头信息抵达客户端之前,这个事务同意我们改动它的内容。我们可使用这个事务在头信息中增加cookie和自界说数据。
ReleaseRequestState当ASP.NET停止所搜有的哀求处置程序实行的时分激发这个事务。
ResolveRequestCache我们激发这个事务来决意是不是可使用从输入缓冲前往的内容来停止哀求。这依附于Web使用程序的输入缓冲时如何设置的。
UpdateRequestCache当ASP.NET完成了以后的HTTP哀求的处置,而且输入内容已筹办好增加给输入缓冲的时分,激发这个事务。这依附于Web使用程序的输入缓冲是怎样设置的。
<p>因为二次编译器太复杂,那么建议只是在安装程序的时候编译一次,而不类似java那样运行就编译。并且我觉得,一次痛苦,总比多次低效率要舒服多了。

莫相离 发表于 2015-1-24 12:53:17

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。

山那边是海 发表于 2015-2-1 16:04:21

如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台。

简单生活 发表于 2015-2-7 08:54:30

代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。

飘飘悠悠 发表于 2015-2-21 16:55:08

现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。

变相怪杰 发表于 2015-3-6 20:59:13

ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。

不帅 发表于 2015-3-13 09:12:06

主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。

因胸联盟 发表于 2015-3-20 19:18:00

ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。
页: [1]
查看完整版本: 来一篇关于NET的ASP.NET对哀求处置历程的操纵与剖析