- 很方便从JavaScript函数映射到服务端代理操作
- 支持多种平台(ASP/ColdFusion/Io/Lua/Perl/PHP/Python/Ruby)
- 开源协议
3.3 Javascipt Object Notation (JSON) and JSON-RPC
JSON是一个"face-free" XML,而JSON-RPC是一种远程交互协议,类似于XML-RPC,对JavaScript支持较强
- 支持多服务端平台: Java, Python, Ruby, Perl.
- 针对不同的平台有不同的包和许可协议, 如JSON-RPC-Java.
3.4 JavaScript Remote Scripting(JSRS)(2000年)
JSRS,较经典的远程脚本访问组件,支持将客户端数据通过服务器做代理进行远程的数据/操作交互。
- 支持的浏览器:IE4+,NS4.x,NS6.x,Mozilla,Opera7和Galeon。
- 服务器端脚本语言支持:ASP,ColdFusion,PerlCGI,PHP,Python和JSP(servlet)。
- 开源协议。由Brent Ashley提供支持。
3.5 Bitkraft for ASP.NET
Bitkraft是个基于(.NET)Web框架的CLR(公共语言运行库),允许用独特的方式创建和操作分布式Web内容。用C#编写,运行在微软的.NET 1.1和Mono框架下,无缝式的客户端-服务器响应方式是它的最大特点。Bitkraft没有使用XML组织数据,而是用JSON代替。
- 支持的浏览器: IE5+, Firefox1+, NS6
- 服务器端要求:ASP.NET, Mono XSP, Cassini, Apache (modMono) .NET Framework 1.1+
- 事件驱动
- 支持同步和异步的远程代理
- 客户端支持所有的.NET类型或自定义类对象映射到JSON中
- 用JSON取代XML
- 免费,开源许可协议
4 Server-Side: Java
4.1 WebORB for Java (2005年8月)
WebORB for Java是一个开发AJAX和基于Flash的富客户端应用程序的开发平台。在线例子
- WebORB包括一个富客户端开发类库。提供简单的在线式API用来绑定或者调用任何Java对象、XML Web Services和EJB
- 支持异步或同步的事件驱动
- 不需要在服务端修改任何代码,不需要自定义方法或属性、变量等。不要求设计时指定代理等。
- 同步调用不需要回调,异步调用需要一个回调方法。
- 客户端可以向服务端请求指定的活动方式,不需要任何编程就可以把处理结果轻易的转变为状态。
- 提供一个特定API来处理数据库查询结果-服务器代码能返回DataSet或者DataTable,而客户端以一个类似于RecordSet的JavaScript对象来显示这个结果。该对象提供检索列名和行数据的方法。
- 支持数据分页技术。客户应用程序能检索页面中的数据。
- 支持以参数的方式返回所有服务期端数据类型,如primitives, strings, complex types, arrays, native .net collections, remote references
- 目前有两个版本:标准版(免费),专业版(商业许可)
4.2 Echo 2 (2005年3月)
Echo 2允许你用纯Java语言编写AJAX程序。 Demo.
- 自动生成HTML和Javascript代码
- 用XML在客户端-服务端传递消息
- 如果愿意支持自定义Javascript组件
- 开源协议(Mozilla Public License or GNU LGPL)
4.3 Direct Web Remoting (DWR) (2005)
Direct Web Remoting可以在Javascript代码中直接调用Java方法的应用框架
- 类似于SAJAX,可以把Javascript中的请求调用转递到Java方法中并将执行结果返回给Javascript
- 可以和任何Web框架一起使用,如Struts、Tapestry等等
- 开源(Apache),目前该产品被加入到WebWork中
4.4 SWATO (2005)
SWATO是一套可重用的和良好集成的Java/JavaScript库,它实现了一种更容易的方式来改变你的web应用程序的交互,通过AJAX方式实现。
- 服务端Java库可以非常容易的部署到所有Servlet2.3+兼容的容器中
- 客户端Javascript库可以在所有支持XMLHttpRequest的浏览器中使用
- 使用JSON技术在服务端组织POJO数据,这样你可以在任何Javascript环境中(HTML、XUL、SVG)访问这些远程数据,这种方式很容易通过硬编码或者某种成熟的Javascript库集成到当前应用中