三、服务器端的Ajax库
基于服务器端的Ajax库都有如下的共同点:
1. 可以在服务器端声明某一方法为一个可调用的Ajax;
2. 可为服务器端的API创建JavaSctipt代码。
从主流到非主流的,每种服务器端语言都具有能够Ajax功能化的服务器端API。而这些服务器端Ajax库可以访问服务端对象,并能以JavaScipt的形式在客户端展示。而本文将讨论以下三种服务器端语言:ASP.NET、PHP、Java。
1) Java
在Java世界,DWR(Direct Web Remoting)和GWT(Google Web Toolkit)是常见具有Ajax功能的框架。
它们都允许将定义在服务器端的对象上的方法直接暴露给Ajax请求。我们常常在这些服务器端的函数中执行那些必须要在服务器端执行的计算(例如,从数据库查询一个值),然后再将有用的结果返回给客户端。这些框架为从Web浏览器中访问这些函数或方法提供了方便的途径,并且也是将服务器端的领域模型暴露给Web浏览器代码的很好方法。
DWR是一个基于Java的框架,它能够将对象的方法暴露出来。DWR不认为浏览器/WEB服务器协议是重要的,而更乐于保证编程界面的简单自然。对此最大的挑战就是把Ajax的异步特性和正常Java方法调用的同步特性相结合。在异步模式下,结果数据在开始调用之后的一段时间之后才可以访问。DWR解决了这个问题,允许WEB开发人员使用一个特殊的方法参数来指定一个函数,以便在数据返回后来回调此函数。
GWT是一个Java软件开发框架,用于开发类似于Google Maps和Gmail的Ajax应用程序。GWT的设计参考Java AWT包设计,类命名规则、接口设计、事件监听等。可以用Java编程语言开发自己的界面,然后用GWT编译器将Java类转换成适合浏览器执行的JavaScript与HTML。
相对而言,使用DWR很容易上手,同时,相对GWT而言,DWR需用编写的代码量更少。但是,GWT的调试功能比较有优势,同时还有一些其它框架所不具有的功能,如自动支持浏览器的后退功能。
2) ASP.NET
ASP.NET具在Ajax功能的API是Microsoft的ASP.NET AJAX Extensions(以前叫“Atlas”,免费但不开源)以及Michael Schwarz开发的AjaxPro(免费且开源)。ASP.NET AJAX Extensions是100%的在客户端创建Ajax功能的服务非常好的选项。它比较适合于想尽量避免客户端脚本的开发人员。
AjaxPro并不像ASP.NET AJAX Extensions那样提供非常丰富的组件,但在创建客户端可调用的服务器端API时,却经验丰富。
AjaxPro提供一个很简单但非常有效的模型:
(1) 给某一个方法增加一个属性,从而使该方法具有Ajax调用功能。
(2) 可以在客户端使用JavaSscript像在服务器端一样调用Ajax功能的方法。
(3) AjaxPro可以将返回值,如DataSets,以JavaSscript返回给客户端。
(1) 给某一个方法增加一个属性,从而使该方法具有Ajax调用功能。
(2) 可以在客户端使用JavaSscript像在服务器端一样调用Ajax功能的方法。
(3) AjaxPro可以将返回值,如DataSets,以JavaSscript返回给客户端。
3) PHP
xAjax是最广泛的使用的PHP Ajax,它可以像平常一样编写函数,并通过增加少量的几行代码从而使它Ajax化。就市场份额来看(仍然是根据Ajaxian.com调查),xAjax几乎统计了PHP市场。xAjax的语法简单、简洁。