ASP.NET编程:ASP.NET:把握Web窗体的性命周期与形态管...
是不是实质都是API?有的好像不只是API那么简单的,有的也是一种框架就像MFC一样。有的还是一种思想(就是做软件的思想)(好像很深奥,其实我也不懂^_^)asp.net|web 假如你具有利用ActiveServerPages(ASP)的履历,你将熟悉到ASP是线性处置模子。ASP页是按从上到下的按次处置的。ASP代码和静态HTML的每行都按其在文件中的显现按次举行处置。在往复路程顶用户操纵招致页被发送到服务器。由于此操纵招致往复路程,以是服务器必需从头创立该页。在从头创立该页后,将经由过程与之前不异的从上到下的按次对该页举行处置,因而,该页未体现出真实的事务驱动举动。若要创立事务驱动体验,你必要显式计划它。别的,你必需在最基础的级别上显式保护页和控件形态。此模子限定了能够组合的用户界面的丰厚水平,而且此模子增添了必要撑持它的代码的庞大性。 与此比拟,传统VisualBasic使用程序中的事务驱动模子包括可编程的元素,这些元素可被初始化并在窗体上显现。用户与这些元素举行交互,而这又招致激发挪用事务处置程序的事务。此模子撑持真实的事务驱动举动,这在计划上极年夜拓宽了能够组合的用户界面的丰厚水平,而且下降了必要撑持它的代码的庞大性。ASP.NET经由过程摹拟事务驱动模子的举动取代了ASP的线性处置模子。供应ASP.NET页框架以隐式地为你创建事务和事务处置程序的联系关系。使用该页框架,你能够很简单地创立呼应用户操纵的用户界面。
起首,我们必需先懂得一下Web窗体的性命周期,才干更好的懂得Web窗体的形态办理。
一个Web窗体的性命周期相似于在服务器中运转的Web历程的性命周期。一个Web窗体从实例化分派内存空间各处理停止开释内存,一样平常履历上面4个步骤:初始化、页面装载、事务处置和资本清算。
(1)页面初始化
当页面被初始化时,产生第一个事务Page_Init。体系会实行创立和设置一个例示所必要的一切初始化步骤。
(2)页面装载
页面装载在初始化以后,所产生的事务叫做Page_Load,它的用处以下:
依据Page.IsPostBack属性反省页面是否是第一次被处置;
第一次处置页面时实行数据绑缚,大概在今后的轮回过程当中从头判别数据绑缚表达式;
读取和更新控件属性;
恢复在保留步骤中所保留的前一个客户哀求的形态;
(3)事务处置
Web窗体上的每一个举措都激活一个抵达服务器的事务。一个Web窗体有两个视图:一个客户视图和一个服务器视图。一切的数据处置都在服务器长进行。当经由过程点击鼠标或别的办法引发一个事务时,事务就抵达服务器并前往响应的数据。
(4)资本清算
最初一步产生于一个窗体完成了它的义务而且筹办卸载的时分,这时候激活Page_Unload事务,完成最初的资本清算事情,好比:封闭文件,封闭数据库毗连,抛弃工具。
我们晓得基于Web的会见体例是断开式的,Web页面是无形态性的。而于ASP中的线性驱动体例分歧的是ASP.NET接纳的是事务驱动形式,那末,Web窗体是怎样做到ASP.NET页面形态的保护的呢?在ASP.NET中引进了一个观点:ViewState,从而用ViewState来保留页面的形态信息。
除第一次的会见哀求是有基类天生之外,今后每次客户真个回传都是依据客户端传来的页面形态来从头创立页面。而页面的各个形态信息就保留在客户端页面源文件的埋没字段<inputtype="hidden"name="__VIEWSTATE"value=""/>中,我们能够经由过程扫瞄器检察到它,value的值就是经由加密的页面形态信息。服务器依据value值举行窗体的再现,然后在窗体的事务处置阶段举行实行呼应的事务历程,然后把实行了局前往到客户端,而且改动Web窗体的形态值,并回写到value值中。最初抵达资本清算阶段。全部历程就是一个Web窗体的性命周期,同时也完成了页面形态的办理。
上面这个实例演示了ASP.NET页面框架是怎样保护页面形态的。一切代码以下:
<%@PageLanguage="VB"%>
<scriptrunat="server">
SubButton1_Click(senderAsObject,eAsEventArgs)
使viewstate(“value”)的值增1
viewstate("value")+=1
Label1.Text="这是第"&Str(viewstate("value"))&"点击按钮"
EndSub
subpage_Load(senderAsObject,eAsEventArgs)
判别是不是为第一次处置该页面
假如是则使viewstate类保留键value的值为0
IfNotPage.IsPostBackThen
viewstate("value")=0
Label1.Text="这是第"&Str(viewstate("value"))&"点击按钮"
EndIf
endsub
</script>
<html>
<head>
<title>页面形态办理</title>
</head>
<bodyms_positioning="GridLayout">
<formid="Form1"method="post"runat="server">
<asp:Labelid="Label1"runat="server"width="176px"></asp:Label>
<br/>
<asp:Buttonid="Button1"runat="server"Text="点击累加"></asp:Button>
</form>
</body>
</html>
保留为viewstate.aspx,运转了局如.9所示。
.9点击3次按钮以后
在客户真个扫瞄器中,我们检察源文件,能够检察到的埋没字段的值为:
<inputtype="hidden"name="__VIEWSTATE"value="dDwtOTk1MjE0NDA4O3Q8cDxsPHZhbHVlOz47bDxpPDM+Oz4+O2w8aTwxP
js+O2w8dDw7bDxpPDE+Oz47bDx0PHA8cDxsPFRleHQ7PjtsPOi/meaYr+esrCAz54K5
5Ye75oyJ6ZKuOz4+Oz47Oz47Pj47Pj47PmLc5pTevWJok9DSup0E5RUygUMi"/>
而全部页面的形态信息就个中
你所列的那些其实差不多都可以称为应用服务器(servlet应该说是一种语言更合适)java是开放的,相同的工具就会有很多公司在做,加上java已经发展了很多年了,因此这些工具就很多了。他们很多都是类似的。 目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案. ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。 对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。 比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。 ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。 是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。 比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。 现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。
页:
[1]