基于Ajax的应用程序架构汇总.docx
《基于Ajax的应用程序架构汇总.docx》由会员分享,可在线阅读,更多相关《基于Ajax的应用程序架构汇总.docx(17页珍藏版)》请在冰点文库上搜索。
基于Ajax的应用程序架构汇总
基于Ajax的应用程序架构汇总
2005-08-15
浏览器端框架被划分成两大类:
·应用程序框架:
提供浏览器的功能,但是常以包括窗口小部件抽象和另外的部件而出名,其功能主要围绕桌面GUI框架。
·基本结构框架:
提供基本的管道和可移植的浏览器抽象,让开发者去创建内容。
典型的功能:
*针对XMLHttpRequest的包装器以封装浏览器-服务器的交互。
(所有的框架都提供这一功能)。
*XML操作和查询。
*根据来自XMLHttpRequest的应答执行DOM操作。
*在一些情况中,与另外的浏览器端技术如Flash(和潜在的Javaapplets)集成在一起。
而服务器端框架通常以下面两种方式工作(尽管它们在这里根据语言的不同进行了分类):
·HTML/JS生成:
服务器提供完整的HTML/Javascript代码生成和浏览器-服务器协调,结果是只有浏览器端编码可以被定制。
·远程调用:
Javascript调用直接被路由到服务器端功能(例如Java方法)并返回到Javascript回叫处理器;或者Javascript调用服务器以提取信息,例如会话细节,数据库查询等。
·纯Javascript:
应用程序框架
1.1Bindows(自从2003年)
网址是:
,Bindows是一个软件开发包(SDK),它,通过强力联合DHTML,JavaScript,CSS和XML等技术,能生成高度交互的互联网应用程序-成为现代的桌面应用程序的强有力对手。
Bindows应用程序不要求下载和也不需要在用户端安装-仅要求有一个浏览器(也不需要Java,Flash或者ActiveX)。
Bindows有可能领导面向对象开发的AJAX应用程序的平台。
·它是商业化的,使用来自于MB的技术(总部位于GAUSA,主要开发中心在瑞典,成立于2002年)。
Bindows框架提供给你:
·基于类的面向对象的API
·一套完整的窗口系统,提供宽范围的窗口小部件支持,包括菜单、表单、格子、滑动条、量程,甚至更多
·用于开发zero-footprintSOA客户端应用程序的领先的工具箱
·本机的XML,SOAP和XML-RPC支持
·单用户到企业级的支持
·内建的对AJAX的支持
Bindows开发环境:
·支持企业级规模的工程开发
·跨浏览器,跨平台支持
·服务器独立结构
·与新的和现有资源的互操作性
·一致性开发方法学
1.2BackBase(自从2003年)
网址是:
,是一个全面的浏览器端框架,支持丰富的浏览器功能以及与.NET和Java的集成。
·商业化,来自于BackbaseB.V(总部在Amsterdam,成立于2003年)。
1.3DOJO(开发中;自从2004年9月)
网址是:
http:
//dojotoolkit.org/,提供全面窗口小组件和浏览器-服务器消息支持。
·为创建定制的Javascript窗口小组件提供框架支持。
·预置的窗口小组件库。
·浏览器-服务器消息支持-XMLHttpRequest和另外的机制。
·支持浏览器中的URL操纵功能。
·开源许可(学术自由许可2.1(http:
//opensource.org/licenses/afl-2.1.php)),由JotSpot(Russell(http:
//alex.dojotoolkit.org/)所领导。
1.4OpenRico(开发中;自从2005年5月;基于早期的私有框架)
网址是:
http:
//openrico.org/demos.page,是一多用途框架,支持Ajax基础结构和用户交互。
·一个XMLHttpRequest应答能被路由到一个或者更多回叫操作,DOM对象,或者Javascript对象。
·容易鼠标拖动支持。
·Ajax动画,例如缩放和变换。
·"行为"-实质上是窗口小组件库。
·使用指南(
·开源。
源于Sabre航空公司解决方案,由BillScott(),DarrenJames及另外一些人所支持。
1.5qooxdoo(开发中;自从2005年5月)
网址是:
·基础结构:
*DOM和事件/焦点管理的可移植的抽象。
*调试支持。
*易于时间调度的Timer类。
*Getter/Setter支持。
·UI:
*窗口小组件框架和预置的窗口小组件库。
*布局管理器。
*图像缓冲和可移植的PNG透明性。
·开源(LGPL)。
来自多方面的贡献者。
1.6Tibet(开发中;自从2005年6月)
网址是:
API,结果是,可能自动生成大量的客户端代码。
自称是"企业级Ajax"。
·远程脚本运行在XMLHttpRequest包装之上-通过协调调用结果支持工作流管理,例如应答可以发生在只有当两个分离的调用返回时。
·URI支持。
·所有的HTTP方法-不仅是"GET"和"POST"。
·低级的协议-File:
//和WebDav以及HTTP。
·Web服务调用-SOAP,XML-RPC,等等。
·预置的针对GoogleAPI,AmazonAPI等等服务的支持。
·由高级Javascript对象组成一个巨大的库。
·许多XML操作。
·IDE和开发工具。
·开源许可(显然经过OSI认证,但是细节不多)。
2纯Javascript:
基础结构框架
2.1AjaxCaller(Alpha版本;自从5月2005年)
网址是:
·实现对服务器的调用(GET/POST/PUT/DELETE),用路由到一个回叫操作的plain-text或者XML完成。
·使用过的XMLHttpRequest对象的析构。
·Response缓冲(计划的)。
·针对Ajax新手-并非强调性能优化,该库主要用于实现易读的基础代码并将提供调试支持。
·开源许可。
由MichaelMahemoff()(具有JohnWehr和RichardSchwartz的一些思想)维护。
2.2FlashJavaScript集成包
网址是:
http:
//www.osflash.org/doku.php?
id=flashjs,允许JavaScript和Flash内容的集成:
·使JavaScript能够调用ActionScript功能和反过来的实现。
·所有主要的数据类型能在这两种环境之间传递。
·开源许可。
由多个开源Flash贡献者提供支持。
2.3GoogleAJAXSLT(发行于2005年6月)
网址是:
http:
//goog-
·建立在Google地图工作基础之上。
·开源许可(BSD)。
由一家创新搜索方案公司支持,自称为"Google"。
2.4HTMLHttpRequest(Beta版;始于2005年)
HtmlHttpRequest(
·测试过并能工作在:
IE6/Win,IE5.5/Win,IE5/Win,IE4/Win,Mozilla/Win,Opera7/Win,Safari/Mac,IE5/Mac。
·未测试,可能能工作在:
IE4/Mac,Mozilla/Mac,Opera/Other,Konqueror/Linux。
你正在使用这些之一吗?
作者正在请求兼容性信息。
·开源许可(LGPL)。
由TwinHelixDesigns(Turnbull维护。
2.5交互式网站框架(自从2005年5月)
交互式网站框架(
·线程安全的XMLHttpRequest实现。
·针对XML文档的包装器,以便你能够创建更具可读性的代码:
varnode=doc.groceries.frozen[0].pizza[0].size;
代替手工的导航:
varnode=doc.documentElement.firstChild.firstChild.getAttribute("size");
·开源许可。
由Weaver(|Brock)维护。
2.6LibXMLHttpRequest(发行于2003年6月)
libXmlRequest(
·getXML()和postXML()方法。
·XMLHttpRequest对象池支持。
·Response缓冲。
·可用源码(明显),但是受标准版权的保护,由StephenW.Coate(
2.7RSLite(x)
网站是:
·一个简单的组件,作为BrentAshley的更全面的远程脚本工作(参见Javascript远程脚本-JSRS在多语言服务器端)的一部分发行。
2.8Sack(在开发中,自从2005年5月)
网站是:
·调用者能指定回叫函数或者回叫DOM对象。
借助于回叫DOM,应答文本直接被推入到DOM中
2.9Sarissa(发行于2月,2003年)
网站是:
,是一种JavascriptAPI,它封装了在浏览器端可以独立调用XML的功能。
·可移植的XMLHttpRequest创建
·可移植的XPath查询
·可移植的DOM操作
·可移植的XSLT
·可移植的XML串行化
·开源(GPL2.0和LGPL2.1)。
来自多方面贡献者。
2.10XHConn(发行于自从4月,2005年)
网站是:
http:
//xkr.us/code/javascript/XHConn/,是一个对XMLHttpRequest的瘦包装器。
·例如:
newXHConn().connect("mypage.php","POST","foo=bar&baz=qux",fnWhenDone);
·开源许可。
由BradFults所维护。
3服务器端:
多种语言
3.1跨平台异步的接口工具箱(5月2005年)
CPAINT:
·支持PHP&ASP
·针对所有函数的一致的JavaScript文件
·支持远程脚本和XML
·支持本地和远程函数
·单个或者多个XMLHTTP对象
·以文本或者JavaScriptXML/DOM文档对象方式返回后台数据
·能支持POST和GET请求
·后台代理函数来访问远程函数和数据
·在所有的主要浏览器上测试过
·在GNUGPL&LGPL保护下发行
3.2SAJAX(可用,但是不是1.0版本;自从3月2005年)
网站是:
calculateBudget()方法,然后以javascript方式把值返回到x_calculateBudget_cb()。
·便利从Javascript代理函数到后台操作的映射。
·能够代理对众多服务器端平台(ASP/ColdFusion/Io/Lua/Perl/PHP/Python/Ruby)的调用。
·开源许可。
来自多方面贡献者。
3.3Javascipt对象标志(JSON)和JSON-RPC
JSON(
·实现多服务器端平台(http:
//www.json-rpc.org/impl.xhtml):
Java,Python,Ruby,Perl。
·针对每种平台有独立的打包和许可,如JSON-RPC-Java(
3.4Javascript远程脚本(JSRS)(自从2000年)
网址是:
·知名的浏览器:
IE4+,NS4.x,NS6.x,Mozilla,Opera7和Galeon。
·服务器端支持:
ASP,ColdFusion,PerlCGI,PHP,Python和JSP(servlet)。
·开源许可。
由BrentAshley(
4服务器端:
Java
注意:
许多现有的框架最近正在添加Java支持(例如struts),我将在后面指出。
4.1WebORBforJava(自从2005年8月)
网址:
Web服务相系起来。
在线举例(http:
//
·WebORB包括一个称作丰富的客户系统(Web服务或者EJB上的方法。
·支持同步的和异步的方法调用。
·并不要求在服务器端代码上作任何修改,不需要定制方法属性,特别的签名或者参数类型。
★不要求设计时生成代理。
·同步调用返回来自于该调用(不需要回叫)的数据。
异步的调用依赖于一个回叫实现。
·任何服务器端方法能被同步地或者异步地调用。
·客户应用程序能向服务器对象请求指定的活动方式。
结果,对象能被轻易地创建而不需任何特殊的编程。
·提供一个特定API来处理数据库查询结果-服务器代码能返回Data集合或者Data表,而客户端以一个特殊RecordSetJavaScript对象来显示这个结果。
该对象提供一个方法以检索列名和行数据。
·支持数据分页技术。
客户应用程序能检索页面中的数据。
·支持所有的服务器端参数类型并返回值-原型,字符串,复合类型,数组,本机.net集合,远程参考。
·共有两种版本可用:
标准版(自由)和专业版(商业许可)
4.2Echo2(自从3月2005年)
网址是:
自动地生成HTML和Javascript。
·协调浏览器和服务器之间的消息。
消息形式为XML。
·如果需要,可以手工编写定制的Javascript部件。
·开源许可(Mozilla公共许可或者GNULGPL)。
源于NextApp,Inc.(
4.3DirectWebRemoting(DWR)(2005年)
网址是:
http:
//www.getahead.ltd.uk/dwr/,是一个框架,用于直接从Javascript代码中调用Java方法。
·象SAJAX,能把Javascript中的调用传递到Java方法,并返回到Javascript回叫。
·能与任何web框架(Struts,Tapestry,等等)一起使用。
·开源许可(Apache(http:
//www.apache.org/LICENSE.txt))。
由JoeWalker(http:
//www.getahead.ltd.uk/sg/space/joe/)所支持。
被加入到WebWork(
4.4SWATO(2005年)
网址是:
·服务器端Java库能被容易地配置到所有的Servlet2.3+匹配的容器中。
·客户端JavaScript库能工作在支持HttpXMLRequest的各种浏览器中。
·使用JSON来在服务器端编组你的POJO数据。
这样你能存取在任何JavaScript环境(HTML,XUL,SVG)中的远程数据,这种存取可以容易地通过硬编码或者与某种成熟的JavaScript库集成来实现。
·提供一个简单的接口来使你的JavaScript代码可以与暴露在客户端的远程POJO交互(RPC等)。
·使用web.xml中的和的容易且灵活的配置,并能(但不是依赖)与Spring集成到一起。
·提供了几个可帮助你快速开发web应用程序的组件(如自动完成的文本框,在线表单,在线列表,等等)。
5服务器端:
Lisp
5.1CL-Ajax
网址:
·如下输出函数:
(export-函数#’my-函数)
·可以产生带有参数的Javascript代理。
·能回叫Javascript函数或者DOM对象。
·可以被集成进SAJAX。
·开源(定制,非常灵活,许可)。
由[RichardNewman](http:
//www.holygoat.co.uk/)所维护。
6服务器端:
.NET
6.1WebORBfor.NET(自从8月2005年)
网址:
Web服务。
(在线举例(
·WebORB包括一个客户端库,名叫RichClientSystem(ClientSystem提供一简单的在线api以绑定到和调用任何.NET对象或者XMLWeb服务上的任何方法。
·支持同步和异步的方法调用
·并不要求在服务器端代码上作任何修改,不需要定制方法属性,特别的签名或者参数类型。
**不要求设计时代理生成。
·同步调用返回来自于该调用的数据(不需要回叫)。
异步的调用依赖于一个回叫实现。
·任何服务器端方法能被同步地或者异步地调用。