- 浏览: 1060335 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (695)
- 心情日记 (14)
- AS开发工具 (12)
- 文章转载 (99)
- AIR (5)
- 问题总结 (46)
- SWF格式 (7)
- 测试总结 (10)
- 外文资料 (9)
- 算法技术 (33)
- AS3常用开源库 (43)
- 源码范例 (102)
- FLEX (72)
- FLASH 优化 (33)
- 游戏开发 (49)
- 开发技术 (11)
- 工作应用 (34)
- AS3收集 (140)
- WebBase (0)
- 开发构想 (4)
- 设计模式 (2)
- 框架和框架范例 (19)
- RED5 (3)
- java开发 (3)
- JAVA (1)
- FLASH-3D (23)
- 3D (6)
- 书籍 (10)
- 业界信息资料 (3)
- C# (1)
- JavaScript (12)
- HTML5 (6)
- Flixel (1)
- D5Power RPG网页游戏引擎 (0)
- ColorMatrixFilter - 获得相应颜色的色调 函数 (0)
- Starling (0)
最新评论
-
老顽童203:
字体
水果忍者鼠标跟随特效制作[转载] -
hairball00:
[转] 放出超多的Flash组件源代码 -
he74552775:
flash AS3 RegExp简单功能用法(转) -
hanshuai1232000:
第四点,有利也有弊,等你做了大型的aprg,你就知道了
[转]位图数据内存优化 -
yangfantao:
太感谢
[转] 放出超多的Flash组件源代码
http://mochou123456.blog.163.com/blog/static/46057646200941423625216/
关于这个实现,网上相关的资料有很多,也好像讲得很条理,清楚。通过那些资料本人也在自己的系统中实现了地图的 AJAX 页面的”无回发回调”。但是对于它真正的机制我却始终知其一而不知其二。
也许是本人基础太差,究其原因,就是不知道贯穿始终的“客户端回调”究竟是指什么。
记得在3D编程的遍历中也有“回调”这概念, 当时就有点稀里糊涂不能理解。而实际上经过查资料,才知道“回调”是Win线程里一种重要的消息机制。所以事实上理解Dot Net中ICallbackEventHandler的AjAX回调,关键还是在理解“回调”是什么,意味着什么。
理解了这一点的,对于实现已经封装了很多细节的ICallbackEventHandler 接口来说,也只是一个“回调函数”的调用过程。
1.什么是回调
软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口)。回调和异步调用的关系非常紧密,通常我们使用回调来实现异步消息的注册,通过异步调用来实现消息的通知。同步调用是三者当中最简单的,而回调又常常是异步调用的基础(引用自网络)
2、回调函数
回调函数,就是由你自己写的。你需要调用另外一个函数,而这个函数的其中一个参数,就是你的这个回调函数名。这样,系统在必要的时候,就会调用你写的回调函数,这样你就可以在回调函数里完成你要做的事。例如:模块A有一个函数foo,它向模块B传递foo的地址,然后在B里面发生某种事件(event)时,通过从A里面传递过来的foo的地址调用foo,通知A发生了什么事情,让A作出相应反应。 那么我们就把foo称为回调函数。
(参考http://www.yuanma.org/data/2006/0605/article_641.htm)
3、ICallbackEventHandler实现模式AjAX的一般模式
Dot Net 2.0中ICallbackEventHandler接口封装了从客户端的JavaScript通过XmlHttp方式调用服务器端的代码,所以只要在页面中实现了这个接口,便可以无需要使用其它的Ajax框架或是自己动手写XmlHttp请求这两种方式实现异步回调,可以避免回发过程中带来的页面刷新,这样不但减少了页面刷新的延时而且服务端无需处理每次回发的大量视图状态(View State)信息,应用程序的整体性能会有很大的提高。
ICallbackEventHandler 接口。继承这个接口需要实现两个方法RaiseCallbackEvent和GetCallbackResult,其中,RaiseCallbackEvent用来处理客户端提交的请求,RaiseCallbackEvente有一个string类型的参数,是客户端提交到服务器端的参数。而GetCallbackResult方法则负责把服务器端的处理结果返回到客户端。
为了向服务器页发送回调和接收结果这两个功能,可以在客户端定义两个脚本函数来实现用ClientScriptManager类的GetCallbackEventReference方法在客户端注册一个向服务器端发送请求的函数。Page.ClientScript获得页面的ClientScriptManager引用,GetCallbackEventReference注册发送回调请求的函数。
在客户端注册了一个向服务器发送请求的函数,所以一般可以在页面的按钮单击事件或其它事件触发时,向服务器发出请求
比如,在页面的html 中有
<input type="button" id="btnSubmit" value="提交" onclick="CallServer(txtEnter,lblShow)"/>
页面的Javascript中
向服务器发出了请求,让服务器发送回调,所以实际上”发送回调”是服务器端执行的。这个语句也可以在后台页面加载时注册,保存在一个结果,则在调试的时候,我们可以看到执行这语句实际上执行一个这样的字符串:
WebForm_DoCallback('__Page',arg,ReceiveServerData,context,null,true)。
到这里,就可与上面提到的“回调函数“联系起来了。
ReceiveServerData实际上就是一个回调函数,根据以上对回调函数的定义,ReceiveServerData是回调函数,是我们自己写的,也就是说我们自己定义的,我们调用 WebForm_DoCallback这个函数,这个函数中的一个参数是ReceiveServerData。“系统在必要的时候,就会调用你写的回调函数”,那么什么时候调用ReceiveServerData这一函数呢。IcallbackEventHandler接口中的会在RaiseCallbackEvent方法处理结束后,将结果返回,然后触发这一函数,调用ReceiveServerData,我们在ReceiveServerData我们可以实现想要的效果。
总结如下:
至于Dot net在哪里触发了RaiseCallbackEvent,回传结果在哪里处理成html形式等问题,则是里面封装的细节,这个我也不清楚,希望懂的朋友留言指教。
一个简单的可执行例子
参考:http://www.sina.com.cn
关于这个实现,网上相关的资料有很多,也好像讲得很条理,清楚。通过那些资料本人也在自己的系统中实现了地图的 AJAX 页面的”无回发回调”。但是对于它真正的机制我却始终知其一而不知其二。
也许是本人基础太差,究其原因,就是不知道贯穿始终的“客户端回调”究竟是指什么。
记得在3D编程的遍历中也有“回调”这概念, 当时就有点稀里糊涂不能理解。而实际上经过查资料,才知道“回调”是Win线程里一种重要的消息机制。所以事实上理解Dot Net中ICallbackEventHandler的AjAX回调,关键还是在理解“回调”是什么,意味着什么。
理解了这一点的,对于实现已经封装了很多细节的ICallbackEventHandler 接口来说,也只是一个“回调函数”的调用过程。
1.什么是回调
软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口)。回调和异步调用的关系非常紧密,通常我们使用回调来实现异步消息的注册,通过异步调用来实现消息的通知。同步调用是三者当中最简单的,而回调又常常是异步调用的基础(引用自网络)
2、回调函数
回调函数,就是由你自己写的。你需要调用另外一个函数,而这个函数的其中一个参数,就是你的这个回调函数名。这样,系统在必要的时候,就会调用你写的回调函数,这样你就可以在回调函数里完成你要做的事。例如:模块A有一个函数foo,它向模块B传递foo的地址,然后在B里面发生某种事件(event)时,通过从A里面传递过来的foo的地址调用foo,通知A发生了什么事情,让A作出相应反应。 那么我们就把foo称为回调函数。
(参考http://www.yuanma.org/data/2006/0605/article_641.htm)
3、ICallbackEventHandler实现模式AjAX的一般模式
Dot Net 2.0中ICallbackEventHandler接口封装了从客户端的JavaScript通过XmlHttp方式调用服务器端的代码,所以只要在页面中实现了这个接口,便可以无需要使用其它的Ajax框架或是自己动手写XmlHttp请求这两种方式实现异步回调,可以避免回发过程中带来的页面刷新,这样不但减少了页面刷新的延时而且服务端无需处理每次回发的大量视图状态(View State)信息,应用程序的整体性能会有很大的提高。
ICallbackEventHandler 接口。继承这个接口需要实现两个方法RaiseCallbackEvent和GetCallbackResult,其中,RaiseCallbackEvent用来处理客户端提交的请求,RaiseCallbackEvente有一个string类型的参数,是客户端提交到服务器端的参数。而GetCallbackResult方法则负责把服务器端的处理结果返回到客户端。
为了向服务器页发送回调和接收结果这两个功能,可以在客户端定义两个脚本函数来实现用ClientScriptManager类的GetCallbackEventReference方法在客户端注册一个向服务器端发送请求的函数。Page.ClientScript获得页面的ClientScriptManager引用,GetCallbackEventReference注册发送回调请求的函数。
在客户端注册了一个向服务器发送请求的函数,所以一般可以在页面的按钮单击事件或其它事件触发时,向服务器发出请求
比如,在页面的html 中有
<input type="button" id="btnSubmit" value="提交" onclick="CallServer(txtEnter,lblShow)"/>
页面的Javascript中
function CallServer(inputcontrl,context) { context.innerHTML="加载中……"; var arg=inputcontrl.value; <%=ClientScript.GetCallbackEventReference(this,"arg","ReceiveServerData","context",true)%> } <%=ClientScript.GetCallbackEventReference(this,"arg","ReceiveServerData","context",true)%>
向服务器发出了请求,让服务器发送回调,所以实际上”发送回调”是服务器端执行的。这个语句也可以在后台页面加载时注册,保存在一个结果,则在调试的时候,我们可以看到执行这语句实际上执行一个这样的字符串:
WebForm_DoCallback('__Page',arg,ReceiveServerData,context,null,true)。
到这里,就可与上面提到的“回调函数“联系起来了。
ReceiveServerData实际上就是一个回调函数,根据以上对回调函数的定义,ReceiveServerData是回调函数,是我们自己写的,也就是说我们自己定义的,我们调用 WebForm_DoCallback这个函数,这个函数中的一个参数是ReceiveServerData。“系统在必要的时候,就会调用你写的回调函数”,那么什么时候调用ReceiveServerData这一函数呢。IcallbackEventHandler接口中的会在RaiseCallbackEvent方法处理结束后,将结果返回,然后触发这一函数,调用ReceiveServerData,我们在ReceiveServerData我们可以实现想要的效果。
总结如下:
至于Dot net在哪里触发了RaiseCallbackEvent,回传结果在哪里处理成html形式等问题,则是里面封装的细节,这个我也不清楚,希望懂的朋友留言指教。
一个简单的可执行例子
参考:http://www.sina.com.cn
发表评论
-
HttpStatusConfig --一个HTTP 协议返回的 解析说明类
2012-04-18 16:40 0package guwanyuan.qicool.game ... -
HTTP/1.1协议规范(中文归纳版)
2012-04-18 16:39 2006一、介绍(introduction) ... -
[转] [Flash/Flex] 加载SWF性能VS影片剪辑性能
2012-03-15 22:29 0http://bbs.9ria.com/viewthread. ... -
关于富士通windows 7家庭普通板升级为windows 7旗舰版
2012-03-05 14:51 1948windows7普通家庭版不能一下升级到windows7旗舰版 ... -
水果忍者鼠标跟随特效制作[转载]
2012-03-01 16:06 2393实现这效果其实比较简单,主要是思路~! package ... -
请问如何才能让加载到一半的SWF不自动播放
2012-02-29 03:06 1472我用loader加载l=new Loader(); ... -
禁止输入文本可以粘贴
2012-02-10 13:15 2254//禁止输入文本粘贴动作 private static ... -
江湖情缘游戏里的跳的类
2012-02-08 23:55 0package com.app.role.montions ... -
[教程] 路点导航(Waypoint Navigation)
2011-12-31 00:51 0前言:这个不难,所以知道的童鞋不要喷,不知道的童鞋也不要怕,要 ... -
ARPG游戏引擎设计思路
2011-12-31 00:48 00.整体结构 下载 (32.92 KB ... -
Embed绑定XML与txt文本文件
2011-12-28 15:54 4599使用Embed标签可以将图片绑定到swf中并显示,那么我 ... -
Flash_Rich_Text_Editor(完美的富文本编辑器)
2011-12-27 17:55 0Flash_Rich_Text_Editor(完美的富文 ... -
弹弹堂测试
2011-12-08 04:21 0弹弹堂测试弹弹堂测试 -
一些DEMO
2011-11-28 17:42 0一些DEMO一些DEMO -
Matrix学习
2011-11-28 16:51 0Matrix学习 -
[转]三次贝尔曲线
2011-11-10 01:09 1868http://bbs.9ria.com/viewt ... -
[心得] 完美解决as3在ie中初始化时stageWidth和stageHeight为0的问题
2011-11-03 00:46 2882先看下面的一段脚本,这是比较经典的初始化脚本: pa ... -
五子棋算法详解
2011-10-31 04:14 0五子棋算法详解五子棋算法详解五子棋算法详解 -
[转]服务器端ActionScript语言参考
2011-10-31 00:29 0服务器端ActionScript语言参考 -
[转]FLASH与JS序列简单应用
2011-10-28 01:03 2022FLASH与JS序列简单应用 (一) 用swfob ...
相关推荐
ASP.NET基于ICallbackEventHandler的轻量级异步回调 CSDN学生大本营文章代码
ICallBackEventHandler(ajax应用),ajax应用实例。。
Visual studio 2008 ASP.NET 实现IcallbackEventHandler Ajax实现手机号码查询
ICallbackEventHandler接口实现多级联动
ICallbackEventHandler接口无刷新源码 功能介绍: 在 ASP.NET 网页的默认模型中,用户会与页交互,单击按钮或执行导致回发的一些其他... 可以使用ICallbackEventHandler接口,使其能执行客户端回调。在客户端回调中。
关于如何实现ICallbackEventHandler的简单指南
通过实现ICallbackEventHandler接口来再请求本页的代码页面,可以用在数据的操作,后台代码可以随便写。 还有一个是最基本的AJAX入门实例,基于url请求的
汇集了多种AJAX实现的方法,包括微软UpdatePannel、实现ICallBackEventHandler的AJAX,基于Prototype的AJAX,手写xmlRequest的AJAX,以及第三方组件的AJAX
AJAXPAGE分页源码~ 部分代码: AJAX using System; using System.Text; using System.Collections; using System.Collections.Generic; using System.Text.RegularExpressions; using System.IO; using System....
ICallbackEventHandlerDemo ,关于Ajax异步提交的例子,没有用到MS提供的Asp.net框架。主要是实现了ICallbackEventHandler接口
通过实现ICallbackEventHandler接口和借助GetCallbackEventReference生成脚本,完成repeater分页无刷新的效果
Thetarget'__Page'forthecallbackcouldnotbefoundordidnotimplementICallbackEventHandler不能ICallbackEventHandler回掉的错误,我进行了一下修正并整理,现在可以实现了中文验证码无刷新的操作,现特把全部源码...
Asp.net无刷新中文验证码的实现代码,V2.0(建议采用VS2005(Sp1)或以上版本开发工具进行开发编译 ) 以前在网上找到了很多关于中文验证码的文章,但是都没有调测成功,总出现 The target '__Page' for the callback ...
前两天看了一个自定义分页控件,和AspNetPager一样是实现IPostBackEventHandler接口,不过简洁许多,就想能不能实现ICallbackEventHandler接口做到无刷新分页呢?想到了就马上去做,终于,设想变成了现实!!
利用JavaScript代码调用服务器代码,从服务器端返回html到浏览器,再通过JavaScript添加到页面,实现局部刷新.