ajax框架的介绍和初步学习
2007-10-10 13:44
232 查看
Ajax框架有基于服务器端和客户端两种,多数是开源实现,并且发展速度很快 。以下介绍服务器端框架。
SAJAX (2005年3月)
SAJAX的实现方式很独特,例如:调用一个javascript方法x_calculateBudget(),将先把响应传到服务器并调用一个Java calculateBudget()方法,然后以javascript方式把值返回到x_calculateBudget_cb()中。SAJAX的名气不错,估计很多人都听过甚至用过,不过缺点就是它的这套映射理论感觉较繁锁,远不如一些轻量级的封装库好用,不过SAJAX最大的特点就是支持的平台丰富,几乎囊括了WEB下常用的编程语言和平台
很方便从JavaScript函数映射到服务端代理操作
支持多种平台(ASP/ColdFusion/Io/Lua/Perl/PHP/Python/Ruby)
开源协议
JAVA平台下的框架:Direct Web Remoting (DWR) (2005)
Direct Web Remoting可以在Javascript代码中直接调用Java方法的应用框架
类似于SAJAX,可以把Javascript中的请求调用转递到Java方法中并将执行结果返回给Javascript
可以和任何Web框架一起使用,如Struts、Tapestry等等
开源(Apache),目前该产品被加入到WebWork中
使用DWR需要一些额外的配置,如编辑Web应用的描述文件,编辑DWR的配置文件,来指定可以远程创建和调用的类,从这种方式可以看出其中存在一些安全隐患,但是,由于DWR支持常用的Struts/WebWork/Tapestry Web框架,在Apache协议下发布,加上丰富的文档资料,使得DWR在Java领域非常流行。
介绍DWR的相关文章可以参考:
http://www.blogjava.net/mstar/category/2359.html
http://www.blogjava.net/zkjbeyond/category/11348.html
更多信息可以访问:http://getahead.ltd.uk/dwr/index 。
ASP.NET平台下的框架:
Ajax.NET (2005年3月)
Ajax.NET是首家支持各种方式通过Javascript访问服务端.net的免费库
类似于SAJAX,能把Javascript请求发送到.NET方法,服务端回传给Javascript,甚至包括串行化自定义类。
可以在Javascript中访问Session和Application数据
缓存查询结果
免费使用源代码
无需更改源代码,允许给Ajax.NET添加和修改方法和属性
所有类支持Javascript客户端返回数据,可以在JavaScript中使用DataSet:res.Tables[0].Rows
使用HtmlControls组件访问和返回数据
页面无需重载,用事件代理(数据访问层)
因为只提供一个调用接口方法,所以服务端CPU占用非常少
Ajax.net 做为Ajax技术在dotNet 框架下的实现,作者Michael Schwarz采取了一种封装效果相当棒的技术:将客户端处理XML、事件调用方式都封装在2个Javascript文件中(AjaxPro.prototype.js 和AjaxPro.core.js),同时将这2个重要文件以资源的形式编译于dll中,在处理客户端请求其自定义的.ashx文件时,返回这两个文件。所以我们在使用Ajax.net时需要在Web.config中添加如下httpHandlers以AjaxPro.AjaxHandlerFactory来处理.ashx文件:
使用AjaxPro.Net框架实现同样的功能:在客户端异步获取服务端时间!AjaxPro.Net是一个优秀的.net环境下的ajax框架,用法很简单,可以查阅相关资料,简单说有几点:
1)添加AjaxPro.dll应用;
2)配置web.config;
3)写服务端方法,加[AjaxPro.AjaxMethod]申明;
4)在相应的CS文件中的PAGE_LOAD方法中注册客户端JS要调用AJAX方法,如
AjaxPro.Utility.RegisterTypeForAjax(typeof(类名));
5)客户端调用服务端方法;(ajaxpro最大的优点:客户端js中直接调用服务端方法)
示例如下:
1.在web.config中<system.web>与</system.web>之间插入以下代码
<httpHandlers>
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/>
</httpHandlers>
2、在此基础上,Ajax.net开始对要求其处理的方法进行封装,以便在客户端通过Javascript来调用。首先在用户必须调用的另一个ashx文件即converter.ashx中做了方法的封装,当然要支持任意多数量的参数及返回值的处理,然后就是对于服务端的逻辑处理方法所在类的封装处理。
如何开始使用Ajax.net
A:获取Ajax.net 可以到 http://www.schwarz-interactive.de/ 下载(目前最新版6.4.15.1.)。
B:解压zip并在需要使用的项目中添加对dll的引用(其中AjaxPro.dll为dotnet1.1版,AjaxPro.2.dll 为2.0版)
C:如同上面所说,在web.config中添加对ashx的处理
D:在服务端添加Ajax.net要处理的方法,假如我们要提供的服务是返回用户输入的字符的MD5校验码,那么我们首先要做的是给这个方法加入需要Ajax.net处理使客户端可以直接调用的属性[AjaxPro.AjaxMethod]如下:
[AjaxPro.AjaxMethod]
public string Md5Hash(string sSou)
{
string sResult ="";
byte[] byBuffer = System.Text.Encoding.UTF8 .GetBytes(sSou);
System.Security.Cryptography.MD5CryptoServiceProvider md = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] result = md.ComputeHash(byBuffer);
for(int i=0; i< result.GetLength(0); i++)
{
sResult += result[i].ToString("X2");
}
return sResult;
}
然后在Page_Load中注册此类
private void Page_Load(object sender, System.EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax
(typeof(WebForm1));
}
E:在客户端调用方法:
<script type="text/javascript">
function getMd5()
{
var a = document.getElementById("source").value;
var c = TAjax.WebForm1.Md5Hash(a);
alert(c.value);
}
</script>
<input type="text" id="source" name="source" >
<input type="button" name="sub" onclick="getMd5()" value="提交">
当然这里Tajax.WebForm1就是实现类的全名了(包括namespace).
这样一个简单应用就算完成了
SAJAX (2005年3月)
SAJAX的实现方式很独特,例如:调用一个javascript方法x_calculateBudget(),将先把响应传到服务器并调用一个Java calculateBudget()方法,然后以javascript方式把值返回到x_calculateBudget_cb()中。SAJAX的名气不错,估计很多人都听过甚至用过,不过缺点就是它的这套映射理论感觉较繁锁,远不如一些轻量级的封装库好用,不过SAJAX最大的特点就是支持的平台丰富,几乎囊括了WEB下常用的编程语言和平台
很方便从JavaScript函数映射到服务端代理操作
支持多种平台(ASP/ColdFusion/Io/Lua/Perl/PHP/Python/Ruby)
开源协议
JAVA平台下的框架:Direct Web Remoting (DWR) (2005)
Direct Web Remoting可以在Javascript代码中直接调用Java方法的应用框架
类似于SAJAX,可以把Javascript中的请求调用转递到Java方法中并将执行结果返回给Javascript
可以和任何Web框架一起使用,如Struts、Tapestry等等
开源(Apache),目前该产品被加入到WebWork中
使用DWR需要一些额外的配置,如编辑Web应用的描述文件,编辑DWR的配置文件,来指定可以远程创建和调用的类,从这种方式可以看出其中存在一些安全隐患,但是,由于DWR支持常用的Struts/WebWork/Tapestry Web框架,在Apache协议下发布,加上丰富的文档资料,使得DWR在Java领域非常流行。
介绍DWR的相关文章可以参考:
http://www.blogjava.net/mstar/category/2359.html
http://www.blogjava.net/zkjbeyond/category/11348.html
更多信息可以访问:http://getahead.ltd.uk/dwr/index 。
ASP.NET平台下的框架:
Ajax.NET (2005年3月)
Ajax.NET是首家支持各种方式通过Javascript访问服务端.net的免费库
类似于SAJAX,能把Javascript请求发送到.NET方法,服务端回传给Javascript,甚至包括串行化自定义类。
可以在Javascript中访问Session和Application数据
缓存查询结果
免费使用源代码
无需更改源代码,允许给Ajax.NET添加和修改方法和属性
所有类支持Javascript客户端返回数据,可以在JavaScript中使用DataSet:res.Tables[0].Rows
使用HtmlControls组件访问和返回数据
页面无需重载,用事件代理(数据访问层)
因为只提供一个调用接口方法,所以服务端CPU占用非常少
Ajax.net 做为Ajax技术在dotNet 框架下的实现,作者Michael Schwarz采取了一种封装效果相当棒的技术:将客户端处理XML、事件调用方式都封装在2个Javascript文件中(AjaxPro.prototype.js 和AjaxPro.core.js),同时将这2个重要文件以资源的形式编译于dll中,在处理客户端请求其自定义的.ashx文件时,返回这两个文件。所以我们在使用Ajax.net时需要在Web.config中添加如下httpHandlers以AjaxPro.AjaxHandlerFactory来处理.ashx文件:
使用AjaxPro.Net框架实现同样的功能:在客户端异步获取服务端时间!AjaxPro.Net是一个优秀的.net环境下的ajax框架,用法很简单,可以查阅相关资料,简单说有几点:
1)添加AjaxPro.dll应用;
2)配置web.config;
3)写服务端方法,加[AjaxPro.AjaxMethod]申明;
4)在相应的CS文件中的PAGE_LOAD方法中注册客户端JS要调用AJAX方法,如
AjaxPro.Utility.RegisterTypeForAjax(typeof(类名));
5)客户端调用服务端方法;(ajaxpro最大的优点:客户端js中直接调用服务端方法)
示例如下:
1.在web.config中<system.web>与</system.web>之间插入以下代码
<httpHandlers>
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/>
</httpHandlers>
2、在此基础上,Ajax.net开始对要求其处理的方法进行封装,以便在客户端通过Javascript来调用。首先在用户必须调用的另一个ashx文件即converter.ashx中做了方法的封装,当然要支持任意多数量的参数及返回值的处理,然后就是对于服务端的逻辑处理方法所在类的封装处理。
如何开始使用Ajax.net
A:获取Ajax.net 可以到 http://www.schwarz-interactive.de/ 下载(目前最新版6.4.15.1.)。
B:解压zip并在需要使用的项目中添加对dll的引用(其中AjaxPro.dll为dotnet1.1版,AjaxPro.2.dll 为2.0版)
C:如同上面所说,在web.config中添加对ashx的处理
D:在服务端添加Ajax.net要处理的方法,假如我们要提供的服务是返回用户输入的字符的MD5校验码,那么我们首先要做的是给这个方法加入需要Ajax.net处理使客户端可以直接调用的属性[AjaxPro.AjaxMethod]如下:
[AjaxPro.AjaxMethod]
public string Md5Hash(string sSou)
{
string sResult ="";
byte[] byBuffer = System.Text.Encoding.UTF8 .GetBytes(sSou);
System.Security.Cryptography.MD5CryptoServiceProvider md = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] result = md.ComputeHash(byBuffer);
for(int i=0; i< result.GetLength(0); i++)
{
sResult += result[i].ToString("X2");
}
return sResult;
}
然后在Page_Load中注册此类
private void Page_Load(object sender, System.EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax
(typeof(WebForm1));
}
E:在客户端调用方法:
<script type="text/javascript">
function getMd5()
{
var a = document.getElementById("source").value;
var c = TAjax.WebForm1.Md5Hash(a);
alert(c.value);
}
</script>
<input type="text" id="source" name="source" >
<input type="button" name="sub" onclick="getMd5()" value="提交">
当然这里Tajax.WebForm1就是实现类的全名了(包括namespace).
这样一个简单应用就算完成了
相关文章推荐
- Redis (REmote DIctionary Server):初步学习和介绍(2)
- Django学习 初步介绍篇 安装与Hello World
- Django学习 初步介绍篇 安装与Hello World
- Android 动画学习(二)之Property Animation初步介绍
- Android 动画学习(二)之Property Animation初步介绍
- 动画—Core Animation初步学习一:Core Animation动画介绍
- 《Java编程思想》学习记录仪三 -- 2.2.2 基本类型初步介绍(第二章一切都是对象)
- C语言学习笔记 运算符初步介绍
- 【机器学习】从分类问题区别机器学习类型 与 初步介绍无监督学习算法 PAC
- bootstrap学习-初步使用介绍
- Android Binder 机制初步学习 笔记(一)—— 概述及数据结构介绍
- ios学习:多线程二(GCD初步介绍)
- 三、Android学习第三天——Activity的布局初步介绍(转)
- Quartz.Net 学习随手记之01 初步介绍
- iOS学习笔记:Object-C基础语法(OC介绍与Foundation初步)
- Linux学习之路一-Linux的介绍和安装
- .NET学习经典例子:.NET PetShop和Duwamish简单介绍
- JavaScript DOM 学习第九章 选取范围的介绍
- ES6初步学习
- 介绍三个Angular学习参考网站