客户端调用服务器端方法——ASP.NET AJAX(Atlas)、Anthem.NET和Ajax.NET Professional实现之小小比较[转]...
前几天曾经发过一篇《ASP.NET AJAX(Atlas)和Anthem.NET——管中窥豹般小小比较》,Jeffrey Zhao说用ASP.NET AJAX中的UpdatePanel似乎不大好。我想了想确实如此,有些高射炮打蚊子的感觉。还有朋友希望我也能在比较中关照一下Ajax.NET Professional——同样是个ASP.NET平台上非常优秀的Ajax框架。
种种要求下,形成此文。本文将比较在ASP.NET AJAX(Atlas)、Anthem.NET和Ajax.NET Professional这三个知名ASP.NET上Ajax框架中实现客户端调用服务器端方法的实现。客户端调用服务器端方法是每一个Ajax框架都必须考虑的问题,非常具有代表性。在程序编写过程中,我也将抛弃掉某些框架中提供的“智能的”服务器端控件(例如ASP.NET AJAX的UpdatePanel),而完全用手工JavaScript和C#实现,力求创造出较为“公平”的比较环境。
由于本文侧重于“比较”,而不是“介绍”,所以对于基础知识都一笔带过。有需要详细了解程序实现,或是希望重现实验结果的朋友,可以下载本文附带的代码。
程序要实现的功能
程序功能很简单,却也足够典型:
用户点击页面上的某个<input>按钮
浏览器执行该按钮的客户端JavaScript事件处理函数
该JavaScript事件处理函数调用某服务器端方法
服务器端方法执行并返回当前时间
客户端JavaScript回调函数执行,将服务器端返回的时间显示在页面中一个<span>中
程序运行界面
由于这三个程序的界面、行为以及实现功能都完全一致,所以这里仅以ASP.NET AJAX(Atlas)版本的为例。下面是程序初始化之后的界面:
点击按钮,上面介绍的5个步骤将依次执行,最终得到如下图所示的结果,显示出服务器端时间:
ASP.NET AJAX(Atlas)版本的实现代码
首先是页面的HTML部分,注意ASP.NET AJAX(Atlas)独有的ScriptManager控件:
<asp:ScriptManager ID="ScriptManager1" runat="server" /><div> <input type="button" value="Get Server Time" id="btnGetServerTime" οnclick="return btnGetServerTime_onclick()" /> <span id="result" /></div>然后是客户端JavaScript部分,注意用PageMethods.GetServerTime()这样的形式调用服务器端方法:
function btnGetServerTime_onclick() { PageMethods.GetServerTime(cb_getServerTime);} function cb_getServerTime(result) { document.getElementById("result").innerHTML = result;}服务器端代码如下,注意方法必须为静态,且添加[System.Web.Services.WebMethod]和[Microsoft.Web.Script.Services.ScriptMethod]两个属性:
[System.Web.Services.WebMethod][Microsoft.Web.Script.Services.ScriptMethod]public static string GetServerTime(){ return DateTime.Now.ToString();}OK!
Anthem.NET版本的实现代码
首先是页面的HTML部分,没什么过多需要注意的:
<div> <input type="button" value="Get Server Time" id="btnGetServerTime" οnclick="return btnGetServerTime_onclick()" /> <span id="result" /></div>客户端JavaScript部分,注意用Anthem_InvokePageMethod辅助函数调用服务器端方法:
function btnGetServerTime_onclick() { Anthem_InvokePageMethod("GetServerTime", [], cb_getServerTime);} function cb_getServerTime(result) { document.getElementById("result").innerHTML = result.value;}最后是服务器端代码,注意Page_Load中要注册一下(与ASP.NET AJAX中的ScriptManager有异曲同工之妙)。还有方法应用了[Anthem.Method]属性:
[Anthem.Method]public string GetServerTime(){ return DateTime.Now.ToString();} protected void Page_Load(object sender, EventArgs e){ Anthem.Manager.Register(this);}OK!
Ajax.NET Professional版本的实现代码
页面的HTML部分和Anthem.NET版本的完全一致:
<div> <input type="button" value="Get Server Time" id="btnGetServerTime" οnclick="return btnGetServerTime_onclick()" /> <span id="result" /></div>客户端JavaScript部分倒于与ASP.NET AJAX得有几分神似,注意“ASP.ajaxpro_aspx”这个东西为本ASP.NET页面编译后的类名:
function btnGetServerTime_onclick() { ASP.ajaxpro_aspx.GetServerTime(cb_getServerTime);} function cb_getServerTime(result) { document.getElementById("result").innerHTML = result.value;}服务器端代码类似Anthem.NET版本的实现方式,同样需要在Page_Load中注册,且需要为方法应用一个属性——不过这里是[AjaxPro.AjaxMethod]:
[AjaxPro.AjaxMethod]public string GetServerTime(){ return DateTime.Now.ToString();} protected void Page_Load(object sender, EventArgs e){ AjaxPro.Utility.RegisterTypeForAjax(this.GetType());}OK!
实现方式比较
用图表说话吧,我也同样不再评论了:
源代码下载
这个是我进行本次实验所用到的程序源代码:3ASPNETAJAXFrameworksTest.zip
该文章转载自'大智の博客':http://www.csafe.cn/article.asp?id=1217
转载于:https://www.cnblogs.com/6602300/archive/2007/02/14/650080.html
客户端调用服务器端方法——ASP.NET AJAX(Atlas)、Anthem.NET和Ajax.NET Professional实现之小小比较[转]...相关推荐
- 使用 AjaxManager 生成调用服务器端方法的 javascript 函数
通过 AjaxManager, 我们可以方便的生成调用 WebService 或者一般处理程序的 javascript 函数, 这样就可以方便的在客户端调用. 本文更新: 2011-12-12: 去掉 ...
- java 调用服务器文档,JAVA远程调用服务器端方法
JAVA远程调用服务器端方法 内容精选 换一换 Windows Server 2012 R2操作系统弹性云服务器,本地使用远程桌面连接功能连接云服务器并启用redirected drive功能时,云服 ...
- Winform C#客户端调用接口方法封装
Winform C#客户端调用接口方法封装 编码中,偶尔需要调用其他方提供的API或者其他端交互的API.封装了常用的调用的get请求与post的请求. 接口返回值为Json,复制返回值通过Visua ...
- Asp.net ajax、Anthem.net、Ajax pro三大ajax框架那一种使用比较方便?易于配置?
· aspxcsharp Asp.net ajax.Anthem.net.Ajax pro三大ajax框架那一种使用比较方便?易于配置? Ajax Pro如何实现DataGrid无刷新? o ...
- 使用JQuery从客户端调用C#方法
这篇文章将帮助你怎样实现客户端调用后台定义的方法.JQuery让生活变的更简单,对于它来说,这有一个很简单的方法去实现这个目的. 早前,我们知道一种方法:如果我们想从客户端去调用一个后台添加的函数就需 ...
- 深入Atlas系列:综合示例(1) - 调用服务器端方法时直接获得客户端具体类型...
摘要: 在使用ASP.NET AJAX时,大家对于返回服务器端的复杂类型的情况经常会遇到问题.Dflying兄写了一篇文章来说明在如何在客户端得到Sys.Preview.Data.DataTable对 ...
- js 调用服务器端方法总结
javascript函数中执行C#代码中的函数: 方法一:1.首先建立一个按钮,在后台将调用或处理的内容写入button_click中; 2.在前台写一个js函数,内容为documen ...
- JS调用服务器端方法
javascript函数中执行C#代码中的函数: 方法一:1.首先建立一个按钮,在后台将调用或处理的内容写入button_click中; 2.在前台写一个js函数,内容为documen ...
- android 和 js交互 客户端调用的方法
mWebView.setWebViewClient(new WebViewClient() { // 点击H5的按钮,跳转到另一个界面,单机H5里的提交按钮判断是否登录,onPageFinished( ...
- Asp.net ajax、Anthem.net、Ajax pro三大ajax框架论坛网友比较
个人感觉性价比最高的是anthem.net,MS的AJAX最常用的是UPDATEPANLE,但是用了不好布局,效率也很低!不如anthem.net,ajaxpro的门槛相对高了些(是相对),而且开发起 ...
最新文章
- 读书:历史 -- 百年战争简史
- 用linux写python_linux用什么写python
- React history.push 传递参数
- 做好三个“避免”,加速网站排名提升!
- co11n——生产订单确认的BAPI
- 使用C#把Tensorflow训练的.pb文件用在生产环境
- 人工智能会让工作环境变得更公平,还是更压抑?
- echarts 卡_图表太丑怎么破,ECharts神器带你飞!
- 解决:No goals have been specified for this build. You must specify a valid lifecycle phase or a goal i
- 创业,白手起家需要些什么?
- Linux下的虚拟机拷贝与快照生成
- 【文献阅读】ResNet-Deep Residual Learning for Image Recognition--CVPR--2016
- 超硬核 Web 前端学霸笔记,学完就去找工作!
- 解决Visual Studio 2022 python 中文乱码问题
- 小学生学AD16(入门级别,看这篇就够了)
- 如何运用SWOT分析法
- 「POI2012」约会 Rendezvous
- 一周电子取证行业热点简讯
- nexmo - 电话报警Alert
- 第4届华为编程大赛决赛试题解答(棋盘覆盖)
热门文章
- Win10安装MySql步骤
- 树中两节点的最低公共祖先
- 微服务学习之服务治理、服务注册与发现、Eureka【Hoxton.SR1版】
- python 整合同类数据求分位值_【利用python进行数据分析】数据聚合与分组运算...
- mfc用数组怎么存储句柄_指南手机存储不足怎么办?用好这份清理指南你的手机还能再战三年...
- linux 显存占用内存,Linux服务器内存、CPU、显卡、硬盘使用情况查看
- linux数组操作 增删改查,JS实现数组的增删改查操作示例
- 实施和开发哪个前景好_现在学习苹果ios开发还有发展前景吗?学android和ios哪个更好?...
- 面试题:React实现鼠标托转文字绕原点旋转
- Java编程:排序算法——冒泡排序