仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 558|回复: 8
打印 上一主题 下一主题

[学习教程] ASP.NET网页编程之IIS处置Asp.net哀求和Asp.net页面熟命周...

[复制链接]
再现理想 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:18:44 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我认为,可以通过更加简单的首次编译,而增加第二次编译的负担,来提高java的运行效率。只是将java源代码进行简单的等价转换,而不假设编译成某种虚拟机器的目标格式,而由本地编译器针对性的二次编译。起首我们要弄分明两个十分主要的观点:
1,workerprocess(w3wp.exe).workerprocess办理一切的来自客户真个哀求并给出呼应。它是IIS下asp.net使用程序的中心。
2,applicationpool.它是workerprocess的容器,IIS5及之前的IIS版本均没有applicationpool的观点。每个applicationpool对应着一个workerprocess,在IISMetabase中保护着ApplicationPool和workerprocess的Mapping。这就制止了IIS5中呈现的workerprocess(IIS5中是aspnet_wp.exe,统一工夫只能运转一个该历程)溃散,application全溃散的场合排场。
客户端向IIS收回一个资本哀求后产生了以下事变:
1,server承受该哀求
IIS6经由过程内核形式(Kernelmode)中的HTTP.SYS来分发各个Request到applicationpool。这并非随机的历程,在applicationpool创立的时分就已注册到了HTTP.SYS,以是当哀求离开时HTTP.SYS会间接发送到响应的applicationpool。接上去在IIS的用户形式(Usermode)中,WebAdminServices(WAS)做了从HTTP.SYS中失掉Request并分发到applicationpool的事情。applicationpool间接把request传送给workerprocess。
2,哀求传送到workerprocess后,workerprocess初始化加载ASP.NETISAPI(InternetServerApplicationProgramInterface),ASP.NETISAPI进而加载CLR创立托管情况。
(注:ISAPI只是一个接口,起到一个代办署理的感化,次要才能就是依据RequestURL的后缀来寻觅该后缀的处置程序)
ASP.NETISAPI界说在aspnet_isapi.dll中,它自己运转在一个非托管的情况中。ASP.NETISAPI入手下手一个HttpRuntime,HttpRuntime挪用ProcessRequest办法来入手下手处置哀求。ProcessRequest依据ISAPI传出去的iWRType来创立分歧的HttpWorkerRequest,从而屏障了分歧IIS的差别。接上去ProcessRequest办法创立了HttpContext,我们利用HTTPContext.Current来会见它。在HttpRuntime利用HttpApplicationFactory创立了HttpApplication工具(IHttpHandler)今后,一切的哀求城市在经由过程httpmodule后找到响应的Httphandler举行处置。在HttpApplicationFactory创立HttpApplication之前,会查找config(web.config和Machine.config)文件中注册的一切的HttpModule,并依据设置信息加载响应的Assembly,经由过程Reflection创立对应的HttpModule,并将这些Module加到HttpApplication的_moduleCollectionFiled中。我们对一个Application的哀求终极会落到一个HttpApplication工具上。当一个哀求到来时,ASP.NET会在HttplicationPool中查找未被利用的HttpApplication工具。
3,哀求经由过程HTTP管道后,每一个哀求都发向相干的各自的httphandler,IIS哀求处置历程停止。
HttpHandler是HTTP管道的尽头,它为每一个request天生输入。System.Web.UI.Page就是如许一个典范的Httphandler,当我们哀求一个aspx页面,这个HttpHandler就天生html发送回客户端。看Page类的署名:
publicclassPage:TemplateControl,IHttpHandler
{
}
能够看到,Page类就是一个HttpHandler。
综上全部历程就是:当客户端向服务器发送资本哀求时,哀求起首抵达IIS的HTTP.SYS。然后HTTP.SYS发送哀求道对应的ApplicationPool。然后ApplicationPool发送哀求到WorkerProcess(W3WP.exe)中加载ISAPIExtension,ISAPI创立一个HttpRuntime工具来经由过程HttpModule和HttpHandler处置哀求。然后页面熟命周期就入手下手了。
4,页面熟命周期入手下手
页面熟命周期的次要阶段包含:
页面初始化(Init):服务器创立服务器控件的实例
加载(load):控件实例被加载到它界说的页面临象中
预输入:(PreRender)对控件的变动被更新,筹办输入。
保留(SaveViewState):控件的形态信息被保留。
输入页面(Render):服务器为控件创立html标志。
处置(Dispose):次要做的事情就是dispose,封闭数据库毗连,文件资本的开释等。
卸载(Unload):烧毁服务器控件的实例
页面熟命周期的次要事务:
PreInit:
1.反省IsPostBack属性
2.静态设置MasterPage
3.静态设置Theme
4.设置控件的默许值(UniqueId等)
5.从头创立静态控件(初始化控件),初始化控件的值
Init:这个事务产生在一切的控件被初始化,一切的皮肤设置被使用今后。它用来读取大概初始化控件属性。它可以用来注册一些aspx页面中没有指出的控件的事务。
InitComplete:Usethiseventforprocessingtasksthatrequireallinitializationtobecomplete.
PreLoad:加载页面的ViewState和一切的控件,然后处置一切的包括在Request实例中的postback数据。
Load:这个事务多是人人最熟习的了。必要注重的是,Page工具会递回的挪用子控件的onload事务直到页面和一切的子控件被加载完成。这个事务次要用来设置控件属性的值,创建数据库毗连(一般不这么做)。
Controlevents:这个就未几说了,次要是处置控件的事务,比方click。这也就让我们分明了每次我们click一个Button的时分,实践上是要先往实行load事务然后才实行click事务的,一样平常我们用!IsPostBack来判别一下从而制止实行不用要的加载逻辑。
LoadComplete:页面一切的控件都被加载今后实行,临时没有想到用来干甚么。。。
PreRender:在HTML被天生之前这是最初一个事务。每个页面中的控件都有PreRender的历程。在这里对将要输入的HTML了局举行最初一次修正。
SaveStateComplete:在这个工夫产生之前,已保留了一切控件和页面的,任何对page大概控件的修改都不会发生摆布。临时没想到用来干啥。
Render:它不是一个事务而是一个办法。事情就是把HTML写回客户端扫瞄器。
UnLoad:页面中的每个控件城市产生这件事。在控件中,利用这个事务来做清算事情,比方封闭数据库毗连等。对与页面自己也是做清算事情,比方封闭翻开的文件和数据库毗连,大概停止日记大概别的指定的事情。
必要申明的是,每次Request城市创立一个全新的Page类的实例,以是在页面中的本人界说的字段是不克不及在两次request中传送值的,必要利用viewstate来存储。
5,HttpHandler依据页面熟命周期中事务的处置把了局发还IIS,IIS再把了局发还客户端扫瞄器。
值得注重的是,在这个过程当中哀求会再次经由过程HttpModule(注册一个EndRequest事务)。
至此,全部Request停止。数据挖掘有点高深的,主要估计就是使用一些算法提取一些实用的数据。学好数据挖掘的话可以应聘baidu或者google,但是一般人家对算法的要求听高的。你最好还是学点应用型的吧。这种主要是研究型的。
灵魂腐蚀 该用户已被删除
9#
发表于 2015-3-21 10:00:28 | 只看该作者
Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境!
第二个灵魂 该用户已被删除
8#
发表于 2015-3-14 14:37:09 | 只看该作者
CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。
因胸联盟 该用户已被删除
7#
发表于 2015-3-7 05:57:29 | 只看该作者
大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。
深爱那片海 该用户已被删除
6#
发表于 2015-2-23 02:48:34 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp)。
谁可相欹 该用户已被删除
5#
发表于 2015-2-7 19:18:25 | 只看该作者
那么,ASP.Net有哪些改进呢?
愤怒的大鸟 该用户已被删除
地板
发表于 2015-2-2 11:38:30 | 只看该作者
主流网站开发语言之PHPHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。
小女巫 该用户已被删除
板凳
发表于 2015-1-24 17:55:20 来自手机 | 只看该作者
我的意思是.net好用,从功能上来说比JAVA强还是很明显的。
不帅 该用户已被删除
沙发
发表于 2015-1-19 08:03:55 | 只看该作者
逐步缩小出错代码段的范围,最终确定错误代码的位置。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-14 14:37

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表