Ajax框架原理分析之Ext.Net
2010-11-26 10:55
141 查看
Ext.Net也是一个很有名的前端框架,它构建于ExtJS之上,提供了一整套UI+AJAX的解决方案.通过对其源码的研究,了解其是如何实现这套AJAX的,对我们也是很有帮助的.
1.静态的AJAX方法实现.
当把[DirectMethod]标记标在一个静态方法上时,Ext.Net是通过HttpModule来截获Http请求实现的.具体的实现类为:DirectRequestModule类
在应用程序生命周期的PostAcquireRequestState事件内中加入处理函数
public void Init(HttpApplication app)
{
app.PostAcquireRequestState += OnPostAcquireRequestState;
app.PreSendRequestHeaders += RedirectPreSendRequestHeaders;
}
如果是AJAX请求且是静态AJAX方法则调用ProcessRequest方法
代码byte[] data = System.Text.Encoding.UTF8.GetBytes((isUpload ? "<textarea>" : "") + ajaxResponse.ToString() + (isUpload ? "</textarea>" : "") );
this.response.Write(data, 0, data.Length);
this.response.Flush();最后,将结果通过DirectResponse类重写过的ToString方法将结果序列化输出到客户端。
总结输出的过程,其实是从原始的HTML代码提取出相关信息填充到DirectResponse类的相关属性中,再将其序列化到客户端的过程。从ResourceManager获取ServiceResponse,ExtraParamsResponse,Result,从原始HTML获取ViewState,ViewStateEncrypted,EventValidation,从原始HTML获取更新的数据,动态的HTML内容,"<Ext.Net.Direct.Response>"并填入Script属性,跟据需要设置Success与ErrorMessage属性。通过重写DirectResponse类的ToString方法,来实现序列化过程。
以上就是我的分析。可能非常的粗枝大叶,但整个流程的基本架构是分析出来了。 虽然代码具体实现的好坏可能仁者见仁,智者见智,但里面真的还是有很多东西值得我去学习的!
1.静态的AJAX方法实现.
当把[DirectMethod]标记标在一个静态方法上时,Ext.Net是通过HttpModule来截获Http请求实现的.具体的实现类为:DirectRequestModule类
在应用程序生命周期的PostAcquireRequestState事件内中加入处理函数
public void Init(HttpApplication app)
{
app.PostAcquireRequestState += OnPostAcquireRequestState;
app.PreSendRequestHeaders += RedirectPreSendRequestHeaders;
}
如果是AJAX请求且是静态AJAX方法则调用ProcessRequest方法
代码byte[] data = System.Text.Encoding.UTF8.GetBytes((isUpload ? "<textarea>" : "") + ajaxResponse.ToString() + (isUpload ? "</textarea>" : "") );
this.response.Write(data, 0, data.Length);
this.response.Flush();最后,将结果通过DirectResponse类重写过的ToString方法将结果序列化输出到客户端。
总结输出的过程,其实是从原始的HTML代码提取出相关信息填充到DirectResponse类的相关属性中,再将其序列化到客户端的过程。从ResourceManager获取ServiceResponse,ExtraParamsResponse,Result,从原始HTML获取ViewState,ViewStateEncrypted,EventValidation,从原始HTML获取更新的数据,动态的HTML内容,"<Ext.Net.Direct.Response>"并填入Script属性,跟据需要设置Success与ErrorMessage属性。通过重写DirectResponse类的ToString方法,来实现序列化过程。
以上就是我的分析。可能非常的粗枝大叶,但整个流程的基本架构是分析出来了。 虽然代码具体实现的好坏可能仁者见仁,智者见智,但里面真的还是有很多东西值得我去学习的!
相关文章推荐
- ASP.NET+XML打造网络硬盘原理分析
- ASP.NET 2.0运行原理及其过程简要分析
- ASP.NET 2.0运行原理及其过程简要分析
- Ext.Net 1.x_Ext.Net.综合布局案列-易飞综合信息查询分析-选择行事件(多值)
- .Net平台下CLR程序载入原理分析 [草稿]
- Ajax框架及原理分析(更新程度:完毕 )
- ASP.NET 2.0运行原理及其过程简要分析
- Ext.Net 1.x_Ext.Net.综合布局案列-易飞综合信息查询分析-选择行事件(多值)
- Ajax框架及原理分析(更新程度:完毕 )
- [转]asp.net中利用ashx实现图片防盗链的原理分析
- ASP.NET服务器端控件原理分析
- Ajax框架及原理分析(更新程度:完毕 )
- IronPython for ASP.NET 的原理分析(一):如何在 CLR 类型上实现动态性
- Ext.Net 1.2.0_分析 Ext.Net.ResourceHandler 资源处理程序
- ASP.NET中的加密与解密 【分析总结】ASP.NET中的状态管理原理
- VB.NET关于Socket分包发送的原理分析
- 【简单Web服务器搭建】基于Socket实现的最简单的Web服务器【ASP.NET原理分析】
- .NETZ 原理分析 .NETZ - .NET Executables Compressor .NETZ compresses the Microsoft .NET Framework execu
- IronPython for ASP.NET 的原理分析(一):如何在 CLR 类型上实现动态性
- Asp.net防止盗链的实现原理分析