基于AJAX的应用程序架构汇总

来源:互联网 发布:超次元矩阵官服网址 编辑:程序博客网 时间:2024/06/17 10:59

======================================================
注:本文源代码点此下载
======================================================

浏览器端框架被划分成两大类:

·应用程序框架:提供浏览器的功能,但是常以包括窗口小部件抽象和另外的部件而出名,其功能主要围绕桌面gui框架。

·基本结构框架:提供基本的管道和可移植的浏览器抽象,让开发者去创建内容。典型的功能:

* 针对xmlhttprequest的包装器以封装浏览器-服务器的交互。(所有的框架都提供这一功能)。

* xml操作和查询。

* 根据来自xmlhttprequest的应答执行dom操作。

* 在一些情况中,与另外的浏览器端技术如flash(和潜在的java applets)集成在一起。

而服务器端框架通常以下面两种方式工作(尽管它们在这里根据语言的不同进行了分类):

·html/js生成:服务器提供完整的html/javascript代码生成和浏览器-服务器协调,结果是只有浏览器端编码可以被定制。

·远程调用:javascript调用直接被路由到服务器端功能(例如java方法)并返回到javascript回叫处理器;或者javascript调用服务器以提取信息,例如会话细节,数据库查询等。

·纯javascript:应用程序框架

1.1 bindows(自从2003年)

网址是:http://www.bindows.net,bindows是一个软件开发包(sdk),它,通过强力联合dhtml,javascript,css和xml等技术,能生成高度交互的互联网应用程序-成为现代的桌面应用程序的强有力对手。bindows应用程序不要求下载和也不需要在用户端安装-仅要求有一个浏览器(也不需要java,flash或者activex)。bindows有可能领导面向对象开发的ajax应用程序的平台。

·它是商业化的,使用来自于mb的技术(总部位于ga usa,主要开发中心在瑞典,成立于2002年)。

bindows框架提供给你:

·基于类的面向对象的api

·一套完整的窗口系统,提供宽范围的窗口小部件支持,包括菜单、表单、格子、滑动条、量程,甚至更多

·用于开发zero-footprint soa客户端应用程序的领先的工具箱

·本机的xml,soap和xml-rpc支持

·单用户到企业级的支持

·内建的对ajax的支持

bindows开发环境:

·支持企业级规模的工程开发

·跨浏览器,跨平台支持

·服务器独立结构

·与新的和现有资源的互操作性

·一致性开发方法学

1.2 backbase(自从2003年)

网址是:http://www.backbase.com,是一个全面的浏览器端框架,支持丰富的浏览器功能以及与.net和java的集成。

·商业化,来自于backbase b.v(总部在amsterdam,成立于2003年)。

1.3 dojo(开发中;自从2004年9月)

网址是:http://dojotoolkit.org/,提供全面窗口小组件和浏览器-服务器消息支持。

·为创建定制的javascript窗口小组件提供框架支持。

·预置的窗口小组件库。

·浏览器-服务器消息支持-xmlhttprequest和另外的机制。

·支持浏览器中的url操纵功能。

·开源许可(学术自由许可2.1(http://opensource.org/licenses/afl-2.1.php)),由jotspot(http://www.jot.com/)的alex russell(http://alex.dojotoolkit.org/)所领导。

1.4 open rico(开发中;自从2005年5月;基于早期的私有框架)

网址是:http://openrico.org/demos.page,是一多用途框架,支持ajax基础结构和用户交互。

·一个xmlhttprequest应答能被路由到一个或者更多回叫操作,dom对象,或者javascript对象。

·容易鼠标拖动支持。

·ajax动画,例如缩放和变换。

·"行为"-实质上是窗口小组件库。

·使用指南(http://www.mirimar.net/mailbrowser/),由russmirimar的yonah所提供

·开源。源于sabre航空公司解决方案,由bill scott(http://looksgoodworkswell.blogspot.com),darren james及另外一些人所支持。

1.5 qooxdoo(开发中;自从2005年5月)

网址是:http://qooxdoo.sourceforge.net/,是另一个雄心勃勃的框架,提供宽范围的ui支持和正在开发中的基础结构特性。

·基础结构:

* dom和事件/焦点管理的可移植的抽象。

* 调试支持。

* 易于时间调度的timer类。

* getter/setter支持。

·ui:

* 窗口小组件框架和预置的窗口小组件库。

* 布局管理器。

* 图像缓冲和可移植的png透明性。

·开源(lgpl)。来自多方面的贡献者。

1.6 tibet(开发中;自从2005年6月)

网址是:http://www.technicalpursuit.com/,目的是提供高度可移植的和全面的javascript api,结果是,可能自动生成大量的客户端代码。自称是"企业级ajax"。

·远程脚本运行在xmlhttprequest包装之上-通过协调调用结果支持工作流管理,例如应答可以发生在只有当两个分离的调用返回时。

·uri支持。

·所有的http方法-不仅是"get"和"post"。

·低级的协议-file://和webdav以及http。

·web服务调用-soap,xml-rpc,等等。

·预置的针对google api,amazon api等等服务的支持。

·由高级javascript对象组成一个巨大的库。

·许多xml操作。

·ide和开发工具。

·开源许可(显然经过osi认证,但是细节不多)。

2 纯javascript:基础结构框架

2.1 ajaxcaller(alpha版本;自从5月2005年)

网址是:http://ajaxify.com/run/testajaxcaller/,是一基本的线程安全的xmlhttprequest包装器,主要针对ajax新手,仍处于原始的alpha开发阶段,目前仅与ajaxpatterns的在线搜索范例一起打包。

·实现对服务器的调用(get/post/put/delete),用路由到一个回叫操作的plain-text或者xml完成。

·使用过的xmlhttprequest对象的析构。

·response缓冲(计划的)。

·针对ajax新手-并非强调性能优化,该库主要用于实现易读的基础代码并将提供调试支持。

·开源许可。由michael mahemoff(http://softwareas.com)(具有john wehr和richard schwartz的一些思想)维护。

2.2 flash javascript集成包

网址是:http://www.osflash.org/doku.php?id=flashjs,允许javascript和flash内容的集成:

·使javascript能够调用actionscript功能和反过来的实现。

·所有主要的数据类型能在这两种环境之间传递。

·开源许可。由多个开源flash贡献者提供支持。

2.3 google ajaxslt(发行于2005年6月)

网址是:http://goog-ajaxslt.sourceforge.net/,是一个javascript框架,用来执行xslt转换以及xpath查询。

·建立在google地图工作基础之上。

·开源许可(bsd)。由一家创新搜索方案公司支持,自称为"google"。

2.4 htmlhttprequest(beta版;始于2005年)

htmlhttprequest(http://www.twinhelix.com/javascript/htmlhttprequest/),它使用了xmlhttprequest和iframes以改进兼容性。

·测试过并能工作在: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)。由twin helix designs(http://www.twinhelix.com/)的angus turnbull维护。

2.5 交互式网站框架(自从2005年5月)

交互式网站框架(http://sourceforge.net/projects/iwf/,是一个项目,目的是从浏览器端对ajax基础结构的多方面予以支持。自描述为"使用javascript,css,xml,和html来创造高度交互网站的框架。包括一个定制的针对高度可读的javascript的xml分析器。实质上,是建立基于ajax的网站的基础,还有另外一些通用脚本"。

·线程安全的xmlhttprequest实现。

·针对xml文档的包装器,以便你能够创建更具可读性的代码:

var node = doc.groceries.frozen[0].pizza[0].size;

代替手工的导航:

var node = doc.documentelement.firstchild.firstchild.getattribute("size");

·开源许可。由weaver(http://circaware.com|brock)维护。

2.6 libxmlhttprequest(发行于2003年6月)

libxmlrequest(http://www.whitefrost.com/servlet/connector?file=reference/2003/06/17/libxmlrequest.html),是xmlhttprequest的一个瘦包装器。

·getxml()和postxml()方法。

·xmlhttprequest对象池支持。

·response缓冲。

·可用源码(明显),但是受标准版权的保护,由stephen w.coate(http://www.whitefrost.com/index.jsp)所维护。

2.7 rslite(x)

网站是:http://www.ashleyit.com/rs/main.htm,是一个针对xmlhttprequest的瘦包装器。

·一个简单的组件,作为brent ashley的更全面的远程脚本工作(参见javascript远程脚本-jsrs在多语言服务器端)的一部分发行。

2.8 sack(在开发中,自从2005年5月)

网站是:http://twilightuniverse.com/2005/05/sack-of-ajax/,是一个针对xmlhttprequest的瘦包装器。

·调用者能指定回叫函数或者回叫dom对象。借助于回叫dom,应答文本直接被推入到dom中

2.9 sarissa(发行于2月,2003年)

网站是:http://sarissa.sf.net,是一种javascript api,它封装了在浏览器端可以独立调用xml的功能。

·可移植的xmlhttprequest创建

·可移植的xpath查询

·可移植的dom操作

·可移植的xslt

·可移植的xml串行化

·开源(gpl2.0和lgpl2.1)。来自多方面贡献者。

2.10 xhconn(发行于自从4月,2005年)

网站是:http://xkr.us/code/javascript/xhconn/,是一个对xmlhttprequest的瘦包装器。

·例如:

new xhconn().connect("mypage.php","post","foo=bar&baz=qux",fnwhendone);

·开源许可。由brad fults所维护。

3 服务器端:多种语言

3.1 跨平台异步的接口工具箱(5月2005年)

cpaint:http://cpaint.sourceforge.net/,是一真正的支持php和asp/vbscript的ajax实现和jsrs(javascript远程脚本)实现。cpaint提供给你需求的代码在后台实现ajax和jsrs,而返回的数据以javascript形式在前台操作,格式化和显示。这允许你创建能提供接近实时的反馈给用户的web应用程序。

·支持php&asp

·针对所有函数的一致的javascript文件

·支持远程脚本和xml

·支持本地和远程函数

·单个或者多个xmlhttp对象

·以文本或者javascript xml/dom文档对象方式返回后台数据

·能支持post和get请求

·后台代理函数来访问远程函数和数据

·在所有的主要浏览器上测试过

·在gnu gpl&lgpl保护下发行

3.2 sajax(可用,但是不是1.0版本;自从3月2005年)

网站是:http://www.modernmethod.com/sajax/,直接把调用从javascript发送到你的服务器端语言并再次回返。例如,调用一个javascript方法x_calculatebudget(),将先到达服务器和调用一个java calculatebudget()方法,然后以javascript方式把值返回到x_calculatebudget_cb()。

·便利从javascript代理函数到后台操作的映射。

·能够代理对众多服务器端平台(asp/coldfusion/io/lua/perl/php/python/ruby)的调用。

·开源许可。来自多方面贡献者。

3.3 javascipt对象标志(json)和json-rpc

json(http://www.crockford.com/json/index.html),是一个"胖的自由的xml选择",而json-rpc(http://www.json-rpc.org/)是一种远程过程协议,类似于xml-rpc,强有力支持javascript客户。

·实现多服务器端平台(http://www.json-rpc.org/impl.xhtml):java,python,ruby,perl。

·针对每种平台有独立的打包和许可,如json-rpc-java(http://oss.metaparadigm.com/jsonrpc/)。

3.4 javascript远程脚本(jsrs)(自从2000年)

网址是:http://www.ashleyit.com/rs/jsrs/test.htm,直接把调用从javascript发送到你的服务器端语言并再次回返。

·知名的浏览器:ie4+,ns4.x,ns6.x,mozilla,opera7和galeon。

·服务器端支持:asp,coldfusion,perlcgi,php,python和jsp(servlet)。

·开源许可。由brent ashley(http://www.ashleyit.com/)提供支持。

4 服务器端:java

注意:许多现有的框架最近正在添加java支持(例如struts),我将在后面指出。

4.1 weborb for java(自从2005年8月)

网址:http://www.themidnightcoders.com/weborb/aboutweborb.htm,是一个平台,支持开发ajax和基于flash的胖客户端应用程序,并可以把它们与java对象和xml web服务相系起来。在线举例(http://www.themidnightcoders.com/examples)

·weborb包括一个称作丰富的客户系统(http://www.themidnightcoders.com/rcs/index.htm)的客户端库。该丰富的客户系统提供一简单的在线api来绑定到并调用任何java对象,xml web服务或者ejb上的方法。

·支持同步的和异步的方法调用。

·并不要求在服务器端代码上作任何修改,不需要定制方法属性,特别的签名或者参数类型。★不要求设计时生成代理。

·同步调用返回来自于该调用(不需要回叫)的数据。异步的调用依赖于一个回叫实现。

·任何服务器端方法能被同步地或者异步地调用。

·客户应用程序能向服务器对象请求指定的活动方式。结果,对象能被轻易地创建而不需任何特殊的编程。

·提供一个特定api来处理数据库查询结果-服务器代码能返回data集合或者data表,而客户端以一个特殊recordset javascript对象来显示这个结果。该对象提供一个方法以检索列名和行数据。

·支持数据分页技术。客户应用程序能检索页面中的数据。

·支持所有的服务器端参数类型并返回值-原型,字符串,复合类型,数组,本机.net集合,远程参考。

·共有两种版本可用:标准版(自由)和专业版(商业许可)

4.2 echo 2(自从3月2005年)

网址是:http://www.nextapp.com/products/echo2/,允许你用纯java代码编写ajax应用软件(范例(http://demo.nextapp.com/interactivetest/ia))。

自动地生成html和javascript。

·协调浏览器和服务器之间的消息。消息形式为xml。

·如果需要,可以手工编写定制的javascript部件。

·开源许可(mozilla公共许可或者gnu lgpl)。源于next app,inc.(http://www.nextapp.com/)。

4.3 direct web remoting (dwr)(2005年)

网址是:http://www.getahead.ltd.uk/dwr/,是一个框架,用于直接从javascript代码中调用java方法。

·象sajax,能把javascript中的调用传递到java方法,并返回到javascript回叫。

·能与任何web框架(struts,tapestry,等等)一起使用。

·开源许可(apache(http://www.apache.org/license.txt))。由joe walker(http://www.getahead.ltd.uk/sg/space/joe/)所支持。被加入到webwork(http://www.opensymphony.com/webwork/)版本。

4.4 swato(2005年)

网址是:http://swato.dev.java.net/,是一套可重用的和良好集成的java/javascript库,它实现了一种更容易的方式来改变你的web应用程序的交互,它是通过ajax方式实现。

·服务器端java库能被容易地配置到所有的servlet 2.3+匹配的容器中。

·客户端javascript库能工作在支持httpxmlrequest的各种浏览器中。

·使用json来在服务器端编组你的pojo数据。这样你能存取在任何javascript环境(html,xul,svg)中的远程数据,这种存取可以容易地通过硬编码或者与某种成熟的javascript库集成来实现。

·提供一个简单的接口来使你的javascript代码可以与暴露在客户端的远程pojo交互(rpc等)。

·使用web.xml中的和的容易且灵活的配置,并能(但不是依赖)与spring集成到一起。

·提供了几个可帮助你快速开发web应用程序的组件(如自动完成的文本框,在线表单,在线列表,等等)。

5 服务器端:lisp

5.1 cl-ajax

网址:http://cliki.net/cl-ajax,实现javascript直接调用服务器端lisp函数。

·如下输出函数:

(export-函数 #’my-函数)

·可以产生带有参数的javascript代理。

·能回叫javascript函数或者dom对象。

·可以被集成进sajax。

·开源(定制,非常灵活,许可)。由[richard newman](http://www.holygoat.co.uk/)所维护。

6 服务器端:.net

6.1 weborb for.net(自从8月2005年)

网址:http://www.themidnightcoders.com/weborb/aboutweborb.htm,是一个平台,用于开发ajax和基于flash的胖客户端应用程序,并能把它们连接到.net对象和xml web服务。(在线举例(http://www.themidnightcoders.com/examples))

·weborb包括一个客户端库,名叫rich client system(http://www.themidnightcoders.com/rcs/index.htm)。rich client system提供一简单的在线api以绑定到和调用任何.net对象或者xml web服务上的任何方法。

·支持同步和异步的方法调用

·并不要求在服务器端代码上作任何修改,不需要定制方法属性,特别的签名或者参数类型。**不要求设计时代理生成。

·同步调用返回来自于该调用的数据(不需要回叫)。异步的调用依赖于一个回叫实现。

·任何服务器端方法能被同步地或者异步地调用。

·客户应用程序能向服务器对象请求指定的活动方式。结果,对象能被轻易地创建而不需任何特殊的编程。

·提供一个特定api来处理数据库查询结果-服务器代码能返回dataset或者datatable,而客户端以一个特殊recordset javascript对象来显示这个结果。该对象提供一个方法以检索列名和行数据

·支持数据页面技术。客户端应用程序能检索页面中的数据。

·支持所有的服务器端参数类型并返回值-原型,字符串,复合类型,数组,本机.net集合,远程参考

·共有两种版本可用的:标准版(自由)和专业版(商业许可)

6.2 ajax.net(自从3月2005年)

网址是:http://ajax.schwarz-interactive.de/,是一个库,实现从javascript到服务器端.net的存取。

·象sajax,能把javascript中的调用传递到.net方法,并返回到javascript回叫。

·能存取来自于javascript的会话数据。

·缓存结果

·自由使用,可用的源码,未指定使用许可。由michael schwarz(http://weblogs.asp.net/mschwarz/)所维护。

·不允许改变源代码,用属性标记方法

·完整的类支持以返回客户端javascript值

·使用htmlcontrols来进行输入和返回值

·可以返回数据表,数据集,数据视图,数组和集合

7 服务器端:php

7.1 ajaxac(自从2005年4月)

网址是:http://ajax.zervaas.com.au/,用单个的php类封装了完整的应用程序。

·所有的应用程序代码是自包含在单个类中(附加另外一些javascript库)

·干净利索地调用php文件/html页面。只需创建应用程序类,然后参照应用程序javascript和依附任何需要的html元素到该应用程序。

·容易地处理javascript事件的内嵌功能

·创建子需要并处理它们的内嵌功能

·允许定制的配置值,因此某些单元能在运行时间设置

·无凌乱的javascript代码夹杂在调用html的代码中-所有的事件是被动态依附的

·由于以上两个原因容易和模板引擎集成到一起

·容易钩到(hook in to)已有的php类或者mysql数据库以返回来自于子需求的数据

·能够容易地进一步生成javascript对象的可扩展的窗口小组件结构(但是还需要做一些工作)

背景:

·开源许可(apache2.0)。由zervaas enterprises(http://ajax.zervaas.com.au/)支持

7.2 jpspan

网址是:http://jpspan.sourceforge.net/wiki/doku.php,直接把javascript调用传递到php函数。

·进行了严肃的单元测试。

·开源许可(php)。

7.3 xajax

网址是:http://xajax.sf.net,直接把javascript调用传递到php函数。

·使用javascript代理来调用php脚本。

·开源。由j.max wilson所创。

8 服务器端:ruby

ruby on rails(http://www.rubyonrails.org/)是一个通常的强力支持ajax的web框架:

·当ajax出现的时候rails还处于其发展的早期,因此ajax可能逐渐成为rails框架的核心。

·生成浏览器中大多数/全部的窗口小组件和动画的javascript脚本。

·支持服务器端调用。

·调度支持。

·开源许可。


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
原创粉丝点击