AjaxPro运行原理
Annce 2008-10-28
服务器端调用Utility. RegisterTypeForAjax |
向客户端添加ashx 脚本块引用 |
AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default)) |
|
为.ashx设置处理程序 |
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/>; |
处理程序向.ashx文件请求的客户端写入JS脚本
|
客户端请求prototype.ashx等文件时由AjaxHandleFactory处理工厂进行处理. 处理程序工厂分配不同的程序给不同请求.(这里所有请求为GET请求)
|
prototype.ashx:给常用对象添加方法、属性。 Core.ashx:xmlhttp请求、响应。 Converter.ashx:数据类型转换器。比如:DataTable,DataSet,Diretory。 AjaxTestWeb._Default,AjaxTestWeb.ashx(名字动态生成):创建AjaxTestWeb, AjaxTestWeb._Default脚本对象,给AjaxTestWeb._Default对象添加方法(和在服务器标致为[Ajaxpro.AjaxMethod]的公有的方法名相同)并且让这些方法的方法体直接调用xmlhttp请求 |
客户端直接调用标为AjaxMethod的方法 |
<script> AjaxTestWeb._Default.GetStr().value;</script> (AjaxTestWeb对象,AjaxTestWeb._Default对象和GetStr方法都在AjaxTestWeb._Default,AjaxTestWeb.ashx定义过了) |
客户端通过调用AjaxTestWeb._Default.GetStr(),再次请求 AjaxTestWeb._Default,AjaxTestWeb.ashx |
这次的AjaxTestWeb._Default,AjaxTestWeb.ashx请求和上次的不同,使用POST请求,传递方法名
|
相应处理程序处理该请求 返回结果 |
处理程序通过反射AjaxTestWeb._Default类(服务器端),并在所有标到[AjaxMethod]的公开的方法中查找指定方法声明的方法,并执行,把结果发送到客户端,结果是根据特定类型转换器,转换为{“value”:”new class()”}这样的字符串到客户端,由客户端eval方法创建一个JS数据对象的。
|
服务器端调用Utility. RegisterTypeForAjax |
向客户端添加ashx 脚本块引用 |
AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default)) |
|
为.ashx设置处理程序 |
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/>; |
处理程序向.ashx文件请求的客户端写入JS脚本
|
客户端请求prototype.ashx等文件时由AjaxHandleFactory处理工厂进行处理. 处理程序工厂分配不同的程序给不同请求.(这里所有请求为GET请求)
|
prototype.ashx:给常用对象添加方法、属性。 Core.ashx:xmlhttp请求、响应。 Converter.ashx:数据类型转换器。比如:DataTable,DataSet,Diretory。 AjaxTestWeb._Default,AjaxTestWeb.ashx(名字动态生成):创建AjaxTestWeb, AjaxTestWeb._Default脚本对象,给AjaxTestWeb._Default对象添加方法(和在服务器标致为[Ajaxpro.AjaxMethod]的公有的方法名相同)并且让这些方法的方法体直接调用xmlhttp请求 |
客户端直接调用标为AjaxMethod的方法 |
<script> AjaxTestWeb._Default.GetStr().value;</script> (AjaxTestWeb对象,AjaxTestWeb._Default对象和GetStr方法都在AjaxTestWeb._Default,AjaxTestWeb.ashx定义过了) |
客户端通过调用AjaxTestWeb._Default.GetStr(),再次请求 AjaxTestWeb._Default,AjaxTestWeb.ashx |
这次的AjaxTestWeb._Default,AjaxTestWeb.ashx请求和上次的不同,使用POST请求,传递方法名
|
相应处理程序处理该请求 返回结果 |
处理程序通过反射AjaxTestWeb._Default类(服务器端),并在所有标到[AjaxMethod]的公开的方法中查找指定方法声明的方法,并执行,把结果发送到客户端,结果是根据特定类型转换器,转换为{“value”:”new class()”}这样的字符串到客户端,由客户端eval方法创建一个JS数据对象的。
|