莫相离 发表于 2015-1-16 22:42:44

ASP.NET网站制作之ASP.NET2.0服务器控件开辟之完成事务

我认为,可以通过更加简单的首次编译,而增加第二次编译的负担,来提高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语言。

透明 发表于 2015-1-18 06:45:16

网页从开始简单的hmtl到复杂的服务语言,走过了10多个年头,各种技术层出不穷,单个的主流技术也在不断翻新的版本,现在分析下各种语言的区别、优势、劣势、开发注意事项!

老尸 发表于 2015-1-21 11:55:35

弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。

若天明 发表于 2015-1-30 17:37:42

微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。

只想知道 发表于 2015-2-16 13:36:12

当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。

第二个灵魂 发表于 2015-3-5 06:33:42

最强的技术支持WebService,而且有.NET的所有library做后盾。而且ASP.NET在.NET3.5中还有微软专门为AJAX开发的功能--ASP.NETAJAX。

变相怪杰 发表于 2015-3-11 23:39:13

同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。

若相依 发表于 2015-3-19 16:24:24

目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案.

精灵巫婆 发表于 2015-3-29 05:48:59

在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗?
页: [1]
查看完整版本: ASP.NET网站制作之ASP.NET2.0服务器控件开辟之完成事务