博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 14 下一页

2012年4月17日

摘要: 对于Asp.net页面层开发无论是写页面还是写控件,我觉得都可以用一句话描述:"Do the right thing at the right time in the right place."这是07年底的一篇东西,还是有点价值整理出来与大家共享。 本文从两个粒度对Asp.net生命周期做了展示,一是通过记录页面事件的触发顺序看请求的处理流程,一是通过Reflector看Page类内部对请求处理的实现,为了清晰我清理掉了ETW相关的代码保留了一个简化却足可以说明问题的流程骨架; 本文覆盖以下内容:页面事件的触发顺序展示清理掉ETW代码后的,Page类内部对请求处理的实现M 阅读全文

posted @ 2012-04-17 14:17 qianyz 阅读(304) 评论(0) 推荐(0) 编辑

2012年4月12日

摘要: ViewState相信大家都会使用,可ViewState到底是什么,又有多少人知道呢StateBag类这个就不用多说啦吧在Asp.net 2.0 里,用到StateBag有以下几种1Control._viewState这个就是大家使用的ViewState2WebControl.attrState这个是存放Attribute的3Style.statebag是存放样式的4.CssStyleCollection.StateBag.......Page生命周期内SaveAllState时 需要先生成个Piar类,在调用this.SavePageStateToPersistenceMedium(pair 阅读全文

posted @ 2012-04-12 14:06 qianyz 阅读(173) 评论(0) 推荐(0) 编辑

摘要: 作者:Infinities Loop概述ViewState是一个被误解很深的动物了。我希望通过此文章来澄清人们对ViewState的一些错误认识。为了达到这个目的,我决定从头到尾详细的描述一下整个ViewState的工作机制,其中我会同时用一些例子说明我文章中的观点,结论。比如我会用静态控件(declared controls)和动态控件(dynamic controls)两个方面来说明同一个问题。现在有关ViewState的文章可谓多如牛毛,你可能会说再写有关ViewState的文章无异于炒剩饭(我这篇文章便是:D)。但是我却不这么认为,如果把ViewState看成一匹野马的话,那么这匹野马 阅读全文

posted @ 2012-04-12 13:43 qianyz 阅读(239) 评论(0) 推荐(0) 编辑

2012年3月30日

摘要: 在我的随笔《Page,你是怎样处理回发事件的?》 中曾提出一个疑问,如何得到引起页面PostBack的控件?通过阅读Page类的源码,误打误撞,无意中看到了__EVENTTARGET和 __EVENTARGUMENT这两个常量的定义,并通过调试分析页面,知道了通过Request.Form[“__EVENTTARGET”]可以获取 到触发页面PostBack的事件源(控件的ID)。对于一般的控件,这样就可以了,唯有Button和ImageButton触发的PostBack无 法通过这种方式获取到它们的ID,起初还以为是它们实现的接口的不同而产生PostBack方式的不同。刚刚在AspAllian 阅读全文

posted @ 2012-03-30 13:15 qianyz 阅读(141) 评论(0) 推荐(0) 编辑

摘要: __VIEWSTATE:页面状态信息在客户端的存储(ViewState中存储的信息, EnableViewState="true"的控件状态信息).__EVENTTARGET:页面回传触发事件 页面回传触发事件:__doPostBack('Button2','')表示调用按钮Button2在后端的所对应的单击事件 控件回传触发事件:__doPostBack('TEST1$Button1','')表示调用TEST1控件中的Button1按钮的Click方法__EVENTARGUMENT:页面回传触发事件时所带的参 阅读全文

posted @ 2012-03-30 12:26 qianyz 阅读(415) 评论(0) 推荐(0) 编辑

摘要: 用户在ASP.NET应用程序显示的页面上面点击一个Button、LinkButton、或者改变某个TextBox的Value时(启用AotuPostBack),就会导致页面提交,并且在服务器端引发对应的PostBack事件,大家可以想象客户端浏览器显示的是html,而html是不存在引发PostBack事件这一说的,这样就说明ASP.NET应用程序肯定提供一种方法,能够知道用户在客户端做了什么动作导致页面被提交的,然后服务器端根据这个信息引发相应的服务器端控件的PostBack事件,那么这篇文章,我们一起来讨论下ASP.NET应用程序是如何来引发PostBack事件.首先我们通过最直接的方式来 阅读全文

posted @ 2012-03-30 09:42 qianyz 阅读(140) 评论(0) 推荐(0) 编辑

摘要: Asp.net中服务端控件事件是如何触发的Asp.net 中在客户端触发服务器端事件分为两种情况:一. WebControls中的Button 和HtmlControls中的Type为submit的HtmlInputButton这两种按钮最终到客户端的表现形式为:<input type="submit" value="Submit">,这是Form表单的提交按钮,点击以后会作为参数发送到服务端,参数是这样的:控件的name属性=控件的value值,对应上面的例子就是:Submit1= Submit。服务器端会根据接收到的控件的name属性的这 阅读全文

posted @ 2012-03-30 09:34 qianyz 阅读(146) 评论(0) 推荐(0) 编辑

2012年3月20日

摘要: 前一篇提到了通过改变委托中的指针来改变实际的调用目标。修改委托实例中的_target、_methodPtr、_methodPtrAux这三个成员,都能够改变跳转目标;特别是后两个,它们的类型是IntPtr,可以构造出任意数值的指针设置进去,那样就可以跳转到任意目标了。 但只能指定目标地址,却不能随意控制目标里的代码,显然还不够好玩。如果要跳转的目标是托管方法,那构造一个正常的委托就够了。如果能在不使用P/Invoke也不使用unsafe code的条件下在C#程序里执行一小块自定义的native code就好玩多了。先前的两篇日志(这里和这里)我提到在内存里生成native code并执行并不 阅读全文

posted @ 2012-03-20 13:19 qianyz 阅读(386) 评论(0) 推荐(0) 编辑

摘要: 对应到.NET上的话, 第一点基本上就映射到P/Invoke的使用了。如果被P/Invoke的native code里有非常糟糕的错误而且不使用SEH,那CLR什么办法也没有,只能让程序crash了。 第二点是关于操纵VM内部实现用到的指针。各种JVM实现里在不同位置暴露了一些指针(即便是Compressed Oops那也是指针),改变它们的值确实能达到crash的效果,虽然如果更进一步能它它们改成“有意义”的值的话就能更有效的操纵破坏的具体行为。 CLR里也有许多看起来很无辜的东西实际上是指针来的(注意我是说CLR不是CLI)。一个典型的例子是Type.TypeHandle属性,在CLR里它 阅读全文

posted @ 2012-03-20 13:17 qianyz 阅读(264) 评论(0) 推荐(0) 编辑

2012年3月18日

摘要: 调用GetQueuedCompletionStatus函数,某个线程就会等待一个完成包进入到完成端口的队列中,而不是直接等待异步I/O请求完成。线程(们)就会阻塞于它们的运行在完成端口(按照后进先出队列顺序的被释放)。这就意味着当一个完成包进入到完成端口的队列中时,系统会释放最近被阻塞在该完成端口的线程。(自己用线程池来模拟完成端口的话,主要的性能问题会在这里出现,操作系统调度线程的算法和完成端口调度线程的算法相反。) 最有效的假想是发生在有完成包在队列中等待,而没有等待被满足,因为此时完成端口达到了其并发量的极限。此时,一个正在运行中的线程调用GetQueuedCompletionSt... 阅读全文

posted @ 2012-03-18 17:56 qianyz 阅读(210) 评论(0) 推荐(0) 编辑

上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 14 下一页