|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
有专家说:java不是跨平台,java就是平台,这很好的定义了java的特点。有了java,你只需要等待java平台在新平台上移植。这还不错吧!只是,java不是一个平台,而是多个平台。你需要在这个java平台移植到另一个java平台。asp.net 有一群说着一样言语的人,企图修一座挺拔进云的高塔中转天庭,以证实族群勾结的力气,塔很快就初具范围。这下可惊扰天庭的神,他想此人和神都成邻人了,还怎样往统治人类?因而便施邪术侵扰人们的言语,使他们没法相同,因而高塔再也没法持续建筑。
■明显白白我的心-人机交互(Human-ComputerInteraction)
博客园里有一篇《给妈妈写程序》动人肺腑,说的是作者经常为了引导50出头的妈妈完成COPY之类的操纵耗经心思,最初为其定做一个只需点击两下的程序,由此推出UI计划的主要性。固然,就用户而言软件即是N个用户界面。他们中的年夜多半压根不体贴外头有几令开辟者沉醉的所谓初级手艺,复杂、快速、美妙是他们请求的全体。人机交互的研讨范畴就在倒腾这些看似噜苏的器材。
在体系计划中,必要分别主动化体系界限,即把体系分别成手工操纵和体系主动两个部分,二者经由过程用户界面(UserInterface)完成对接,如-1。用户界面完成体系的输出输入事情:搜集用户触发事务及相干数据,传送给体系外部举行处置并吸收处置了局,可视化处置了局。在企业级的c/s使用中,aspx及厥后台编码文件功效纯真得只剩下一个--完成人机交互。一个大度的网页不是用户界面计划的全体内在,它更应当象一名面庞姣好、语音甜蜜的招待者,轻声细语地扣问用户需求,倾听用户乱七八糟的诉说,耐烦引导用户完成操纵流程,宽大用户毛病,正确为用户奉上终极了局--"您的账户里只剩0.4元,没法完成付出操纵。"总之一句话,要充实熟悉和了解白居易同道写诗的巨大精力,让50出头的妈妈兴奋地完成人机交互。
■人动则影动-ASP.NET的静态模子
在ASP.NET架构中,服务器真个ASP.NET页面临应客户真个HTML页面,包括一个交互WebForm,承继于FrameWork的Page类。ASPX文件是人,HTML编码一时文件是影,人动则影动,二者分解完全意义上的用户界面。用户对影举行各类操纵,体系经由过程人举行响应处置,"request-response"回馈机制完成二者的映像历程,如-2。
HTTP是一个无形态协定,以是WEB服务器是位打个磕睡就忘事的师长教师,当呼应发送后将抛弃一切哀求信息。这事必会影呼应用程序的可用性,如由于数据考证毛病而请求用户从头输出几十个输出框的一切信息,连妈妈的指头城市收回抗议的声响。为了填补这个缺点,ASP.NET利用视图形态(ViewState)来完成形态坚持。道理很复杂,服务器将每次HTTP哀求中的页面数据写进天生的HTML文件中,下次页面提交时一并带上,以下例。在ASP时期我们曾用<inputtype="hidden">手工完成,而在.Net中您会发明HTML源代码会主动发生一个_VIEWSTATE标签,其值即为体系保留的页面数据。
<%@PageLanguage="C#"%>
<scriptrunat="server">
protectedoverridevoidOnLoad(EventArgse){
intval=int.Parse(_sum.InnerText);
_sum.InnerText=(val+1).ToString();
base.OnLoad(e);
}
</script>
<html><body><formrunat="server">
<spanid="_sum"runat="server">0</span>
<inputtype="submit"/>
</form></body></html>
ViewState削减了很多贫苦,但也存在成绩。在默许情形下它将被启用,即便没有任何用途也往搜集一切页面信息并穿越往复于C/S两头,其用base64编码的复杂身躯常吞噬大批带宽,并存在被胁持的大概而引发体系平安性成绩。
<P> 用户会对界面做出各类操纵,并但愿失掉体系的回应,这些用户界面的操纵被.Net统称为事务(event,体系外部也会发生事务),而对应的体系回应称为事务处置。在《随想四》中的Login页面,当用户点击btnLogin按钮后,btnLogin工具(这时候它被称为事务源)大呼:"我被点啦,十年了,我终究第一次被点击啦,555~~~"但Button类自己并不决义响应的事务处置程序,那末又是谁来完成体系的实践呼应操纵呢?
在编写Login类时我们已界说成员btnLogin_Click办法,并但愿由此完成btnLogin.click事务的处置,但MS工程师在界说Button类时其实不晓得其感化,以是必要一个前言将二者毗连起来,这时候我们不由回忆起《随想七》中的托付。.net用EventHandler托付作为毗连事务源与事务处置程序的前言,将二者绑定:
//该段程序为《随想四》中Login.aspx.cs的代码片断并有所修正
//EventHandler为System定名空间中界说的大众托付
//sender为事务源工具,EventArgs类卖力搜集事务数据
publicdelegatevoidEventHandler(objectsender,EventArgse);
//Login为受托类,完成事务处置界说和保持
publicclassLogin:System.Web.UI.Page{
//Login.OnInit为Page类受回护办法,实行创立和设置实例所需的初始化步骤
//挪用OnInit办法时激发Init事务
overrideprotectedvoidOnInit(EventArgse){
//newSystem.EventHandler天生一托付实例
//+=完成事务处置托付的毗连历程,统一事务能够触发多个处置程序,称为多路播送
//base.OnInit(e)用于挪用父类的同名办法
this.btnLogin.Click+=newSystem.EventHandler(this.btnLogin_Click);
base.OnInit(e);
}
privatevoidbtnLogin_Click(objectsender,System.EventArgse){……}
}
■苦旅-ASP.NET的静态模子
每个HTTP哀求动身前可谓悲壮,勇士一往兮不复返!Login.aspx页面哀求将URL和相干数据打包背上,胸前挂着本人的IP地点身份牌,从客户端扫瞄器动身,翻越电信网通工资打造的各类停滞,爬雪山过草地,行动盘跚地走到Web服务器的IIS门前,正想狂喜一阵,当看到年夜门口排着长长的数以万计的哀求行列,还常有些饿逝世骨无人理彩时,它终究倒下了。
中Login.aspx页面哀求被传送到HttpRuntime实例,HttpRuntime实例将:
・猎取一个HTTPApplication工具;
・让HTTPApplication工具读取设置文件;
・由HTTPModule实例们分离供应会话保护、考证或设置文件保护等各项服务;
・HTTPHandler接话柄例化详细Page类完成处置。
Login是HTML页面熟产车间的工人,天天他卖力依照严厉的尺度和流动的流程为客户制造HTML编码的Login.aspx页面。一天早上,login正在硬盘里满意地喝着咖啡,身宽体胖的主管HttpHandler年夜叔关照他当即完工。
明天是第一次进进内存,以是他先筹办好页面构架和一切控件零件并设置其默许形态;然后严厉按OnInit办法完成Init事务;以后会在页面哀求中寻觅_VIEWSTAT。假如找到就对数据举行读取息争码;并让控件更新其形态以正确反应客户端响应元素形态;随后他拿出OnLoad办法操纵手册来处置Load事务;然后对付一系列被触发的页面事务,假如页面正在被回送,还会包含用户触发的事务;用onPreRender办法处置的PreRender事务能够改动提交页面的体例;然后把以后的页面形态保留到新的视图形态中。
完成一切操纵后便可天生HTML编码文件,时代可经由过程覆写(override)Render办法以附加一些HTML代码,为页面做最初的润色。
最初Login开释一切占用的文件、图形工具、数据库毗连等关头资本,匆仓促跑出内存,"真是太闷了!"出门时他小声地嘀咕了一声。2003年中微软发布最新版本的ASP.netWebMatrix,对于我们喜欢用Asp.net来编程的朋友实在是个好消息,我也实实在在的将Asp.net更深入的研究了一下,以方便我以后更好的运用它,同时我也讲讲使用它的感受。 |
|