GridView控件正是使用了这个技术来实现无刷新的分页及排序功能,那么它是如何实现的哪,我们又如何在自定义控件中添加该功能哪?本文将会简单地阐述如何使用ASP.NET 2.0 Callback来实现Ajax.
1、ICallbackEventHandler 接口
ASP.NET Server端控件可以通过实现ICallbackEventHandler 接口来接受客户端Callback事件。
ICallbackEventHandler 接口声明:
以下为引用的内容:
1public interface ICallbackEventHandler
2{
3 string GetCallbackResult();
4 void RaiseCallbackEvent(string eventArgument);
5}
RaiseCallbackEvent负责处理客户端回调事件,其中方法参数eventArgument是客户端脚本在触发Callback时提供的,该方法将会依赖于eventArgument参数来进行处理。
GetCallbackResult则负责将处理结果作为String返回给客户端脚本。当Callback完成后客户端脚本将会根据得到的处理结果,进行页面局部更新。
2、CallbackEventReference
那么怎么样才能注册一段客户端脚本来触发Callback,还需要做些什么哪?
ClientScriptManager类用于管理Web页面中的客户端脚本,提供了一系列的方法来注册脚本,并且还可以获得指定客户端脚本函数的引用。通过ClientScriptManager类的GetCallbackEventReference方法我们可以获取一个对客户端函数的引用。当该函数在客户端被调用时,将启动一次客户端回调。
GetCallbackEventReference方法声明:
以下为引用的内容:
public string GetCallbackEventReference (
Control control,
string argument,
string clientCallback,
string context,
string clientErrorCallback,
bool useAsync
)
第一个参数指的是实现ICallbackEventHandler接口的服务器端控件;
第二个参数将被传递给在服务器端执行的RaiseCallbackEvent方法,它可以是一个JavaScript函数调用表达式;
第三个参数是一个JavaScript函数名,在Callback完成后,该函数将被调用,同时服务器端函数GetCallbackResult的执行结果也将作为这一个函数的参数;
第四个参数是当前执行的Callback的上下文,这个参数也可以是一个JavaScript函数调用表达式;
第五个参数是一个JavaScript函数名,在Callback执行的过程中如果有错误产生,该函数将被调用。
第六个参数是一个Bool值来确定当前Callback应该被同步执行还是异步执行。
当你的.NET应用出现性能问题的时候能很快得找到问题的症结吗? 这是一个运营的企业应用所必需考虑的问题,最近工作中碰到很多这方面的问题,运行中的系统完全是一个黑盒子,不象开发中的产品可以通过代码跟踪去Debug出问题来,运行的系统一个非常重要的方面能够被监控,没有运行维护体系支持的。NET应用,就会脆弱得像入冬后树枝上最后一片叶子。最近一直被这个问题所困扰,公司内有几百个。NET系统,想对他实施监控竟然毫无对策。各位同学在你们的项目/产品中考虑到这个问题了吗,一般怎么处理,欢迎各位交流,讨论。
WMI(Windows管理规范:Windows Management Instrumentation)是Microsoft基于Web的企业管理(WBEM)的实现,同时也是一种基于标准的系统管理接口。Windows系统层面的监控几乎基于WMI机制,而与这个机制切合最好的恐怕非MOM(Microsoft Operations Manager )莫属;无论是学习还是实际应用,事实上Enterprise Library特别是4.0版本已经成为众多。NET应用,尤其是大型应用的样板,Instrument作为Common Block的主要组成,可以说是为整个Enterprise Library内置的,它的外围是性能监控器和WMI;微软Patterns && Practices社区一直在关注。NET监控和性能调整,Improving .NET Application Performance and Scalability,Monitoring in .NET Distributed Application Design.这些都是文档,打印出来都是一本本厚厚的书。给人一个“半生不熟”的感觉,对于很多企业而言几乎没有多少技术力量可以把这些内容串起来。
象Enterprise Library 可以通过WMI来发现和查询,如何让WMI来发现呢,让WMI能够查询到你的那个类?那就需要自己提供WMI Provider,这个东西在。NET 平台下(。NET 2上有 WMI 2,也就是Enterprise Library 4所支持)非常的简单了。
WMI的一些中文资料我也整理了一些Windows管理规范- WMI,在CodeProject上有一篇 A simple guide to WMI providers ,认真研究一下Enterprise Library 4的有关系统监视Instrumentation的东西。
ASP.NET 2.0已经有了一个ASP.NET 运行状况监视,参见 (VS.80)。aspx , 将asp.net 1.1升级到asp.net2.0对于运营来说就是一个非常不错的好处了。