仓酷云

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

[学习教程] ASP.NET网站制作之ASP.NET2.0服务器控件开辟之完成事务

[复制链接]
莫相离 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:42:44 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我认为,可以通过更加简单的首次编译,而增加第二次编译的负担,来提高java的运行效率。只是将java源代码进行简单的等价转换,而不假设编译成某种虚拟机器的目标格式,而由本地编译器针对性的二次编译。asp.net|服务器|控件|控件开辟  后面几篇文章解说了与使用ASP.NET2.0手艺创立自界说服务器控件属性有关的内容。从本文入手下手,包含随后的几篇文章将切磋创立自界说服务器控件事务的办法。本文重点对完成控件事务的基础观点举行先容,这些观点关于匡助开辟职员为服务器控件创立事务有侧重要意义。
  1.事务基础观点
  事务是当有举措产生大概形态改动时,类收回的信息大概关照。一般情形下,形态的产生大概改动由用户界面举措初始化,比方,单击按钮,大概因为其他的程序逻辑引发。发生事务的类大概说发送关照的类叫办事件源sender,吸收事务的类叫办事件吸收者receiver。两者之间经由过程托付(delegate)完成联系关系。上面枚举了一段罕见的使用事务代码。
//声明事务
ClickcustomControl.Click+=newEventHandler(this.customControl1_Clicked);
//完成事务处置程序
customControl1_Clicked(objectsender,EventArgse){......}
  如上代码枚举了服务器控件声明事务和完成事务处置程序的历程。因为这个历程十分复杂,在此将未几做注释。别的,在实践使用中,开辟职员经由过程为服务器控件完成事务机制,能够不接纳以上的声明事务体例,而是在控件声明标志中仅仅列出"OnClick=customControl1_Clicked"便可。实践上,事务的声明和详细事务处置程序的完成都是对照复杂易用的。但是,为控件完成事务机制却不是一件简单的事变。
  从服务器控件开辟的角度而言,控件事务(仅指服务器端事务,而不包含客户端事务)大概来自两个方面:一是从基类承继的事务。比方,假定自界说控件从Button类承继,那末该控件将承继基类的Click事务。二是依据开辟需求而创立的自界说事务。上面分离对这两种事务举行先容。
  2.完成从基类承继的事务
  尽人皆知,自界说服务器控件归根结柢是从System.Web.UI.Control派生而来。该基类中已界说了一些事务。因而,在创立服务器控件过程当中,极可能必要重写以下承继的多个事务。
  ・DataBinding事务:该事务当服务器控件绑定到数据源时产生,其对应事务处置程序为OnDataBinding。
  ・Disposed事务:该事务当从内存开释服务器控件资本时产生,其对应的事务处置程序为OnDisposed。这是服务器控件性命周期的的最初阶段。
  ・Init事务:该事务当服务器控件初始化时产生,其对应的事务处置程序为OnInit。Init事务是控件性命周期的第一步。
  ・Load事务:该事务当服务器控件加载到Page工具中时产生,其对应的事务处置程序为OnLoad。
  ・PreRender事务:该事务在加载Control工具以后、出现之前产生,其对应的事务处置程序为OnPreRender。
  ・Unload事务:该事务当服务器控件从内存中卸载时产生,其对应的事务处置程序为OnUnload。
  以上内容针对Control基类的几个事务举行了扼要申明。因为服务器控件均承继自Control基类(WebControl也是承继自Control类),因而,开辟职员完整能够重写事务所对应的事务处置程序,如许即可以完成一些自界说内容。
  若要完成自界说承继的事务,必要重写从基类承继的受回护的OnEventName办法,而不用附加托付(EventHandler)。一般情形下,重写的事务处置程序应当挪用基类的OnEventName办法,以确保挪用附加到事务的托付(除非不想挪用这些托付)。以下代码片断申明自界说控件重写承继的DataBinding事务的处置历程。
protectedoverridevoidOnDataBinding(EventArgse)
{
 //增加一些自界说逻辑代码
 //挪用基类办法
 base.OnDataBinding(e);
}
  如上代码所示,在重写事务处置程序OnDataBinding过程当中,起首必要增加一些依据使用需求而完成的自界说逻辑代码,然后,必定要切记需挪用基类办法。
  以上内容对Control基类的事务和派生类重写对应事务处置程序的历程举行了先容。必要读者注重的是,上文并不是申明自界说服务器控件仅可以重写以上几个来自Control基类事务的事务处置程序。假如自界说控件承继自其他底本带有事务的基类,比方,Button、DataList等(回根究竟,它们也是从Control基类承继),那末承继的事务处置程序仍旧能够被重写,比方,承继自Button类的控件天然取得Click事务,而且能够重写OnClick事务处置程序。
  3.创立自界说服务器控件事务
  在先容创立自界说服务器控件事务的办法之前,我们起首来复杂回忆一下相干的事务模子。
  在Web窗体页面中,与服务器控件联系关系的事务由客户端激发并由Web服务器处置(注重:事务必需称为"激发",而不要利用"触发"和"引发"等词,它们都是禁绝确,不标准的)。关于在客户机上由服务器控件激发的事务,ASP.NET2.0事务模子搜集有关哀求的信息,并利用HTTPPost将具体信息传送到服务器。服务器上的PageFramework对该通告作出注释以断定产生的事务,然后,挪用得当的处置程序办法。下复杂申明了这一历程。



  如所示,在客户端盘算机中,用户单击购物车的Add(增加)按钮,试图将所选商品放进购物车中。在单击以后,事务模子搜集了相干信息,比方,Submit=btnAddToCart,Prod3=Gizmo等等,将这些信息经由过程Post体例传送到服务器。服务器在吸收这些信息后,起首对其举行剖析,然后,挪用事务处置程序btnAddToCart(obj,event)举行处置。以上就是基础的事务处置模子。
  关于一般使用程序开辟职员而言,只必要完成控件的事务处置程序便可,更进一步的信息关于他们而言是埋没的,并且也是没有需要作更多体贴的。但是,作为服务器控件开辟职员,则必需细心思索这一事务处置模子。
  假如读者细心思索以上历程,则会发明两个在事务处置模子中必要办理的主要成绩。第一,服务器端怎样捕捉回传的单击事务,第二,经由过程Post体例回传到服务器真个数据,详细是怎样处置的。以上两个成绩相当主要。假如可以办理好这两个成绩,那末创立自界说服务器控件事务则变得十分简单。
  为懂得决以上成绩,ASP.NET2.0供应了两个主要接口:IPostBackEventHandler和IPostBackDataHandler。IPostBackEventHandler接口用于处置由客户端激发的页面回传的事务。完成此接口,服务器控件可将客户真个提交表单事务对应到服务器真个事务上,而且经由过程事务处置程序完成对该客户端事务的处置。IPostBackDataHandler接口用于反省提交给页面的数据,并断定是不是在客户端修正过。当控件完成该接口,控件则主动具有了介入回传数据的处置才能。开辟职员能够经由过程完成接口相干成员,完成针对回传数据的处置逻辑。
  实践上,ASP.NET2.0中尽年夜多半服务器控件都激发从客户端到服务器的回传,而且读者完成的良多服务器控件也必需激发回传。因而,以上两个接口关于完成控件事务十分主要。关于它们,本节仅复杂先容一下。在随后的文章中,读者将经由过程典范示例,具体懂得完成接口成员,捕捉回传事务,处置回传数据的详细办法。
  别的,ASP.NET2.0加强了有关回调解理方面的功效。比方,利用System.Web.UI.ICallbackEventHandler接口和Page.GetCallbackEventReference办法等。经由过程这些工具的使用可完成在客户端运转服务器端代码,从而制止丧失客户端形态而且不招致服务器往复的处置开支。这些内容与服务器控件事务之间有着一些接洽。但是,因为回调使用在服务器控件中使用较少。因而,将不作过量申明。
  4.小结
  从手艺开展的角度来说,ASP.NET手艺从1.x晋级到2.0版本,在服务器控件事务开辟方面没有任何分明的修正。假如读者已懂得了ASP.NET1.x下创立服务器控件事务的内容,那末能够依照已往1.x的办法和思绪举行开辟。上面一篇文章,笔者将经由过程典范示例先容服务器控件捕捉回传事务的完成办法。
它有很多缺点的,有兴趣可以到网上去搜索一下。于是微软有发明了“下一代”C++:C++/CLI语言,这个可以解决在.NETFramework中,托管C++产生的问题。在《程序员》杂志上,lippman和李建中合作连载介绍了C++/CLI语言。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-9 21:33

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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