黑夜的狼

沮丧吗,那就是一种无病呻吟!留恋它就是一种高度近视!目光应该放得更远一点! 别不想飞,只是要一步跨过太平洋!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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数据对象的。

 

posted on 2010-04-09 23:44  anncesky  阅读(271)  评论(2编辑  收藏  举报