新闻中心

EEPW首页 > 手机与无线通信 > 设计应用 > 基于Ajax的应用程序架构汇总及开发面临的问题介绍

基于Ajax的应用程序架构汇总及开发面临的问题介绍

作者:时间:2012-05-10来源:网络收藏

 4 服务器端:Java

本文引用地址:http://www.eepw.com.cn/article/154990.htm

  4.1 WebORB for Java(自从2005年8月)

 是一个平台,支持AJAX和Flash的胖客户端,并可以把它们与Java对象和XML Web服务相系起来。在线举例(http://www.themidnightcoders.com/examples)

  4.2 Echo 2(自从3月2005年)

 允许你用纯Java代码编写应用软件

  4.3 Direct Web Remoting (DWR)(2005年)

是一个框架,用于直接从Javascript代码中调用Java方法。

  4.4 SWATO(2005年)

是一套可重用的和良好集成的Java/JavaScript库,它实现了一种更容易的方式来改变你的web的交互,它是通过AJAX方式实现。

  5 服务器端:Lisp

  5.1 CL-

 实现Javascript直接调用服务器端Lisp函数。

  6 服务器端:.NET

  6.1 WebORB for.NET(自从8月2005年)

 是一个平台,用于AJAX和Flash的胖客户端,并能把它们连接到.NET对象和XML Web服务

  6.2 .NET(自从3月2005年)

 是一个库,实现从Javascript到服务器端.NET的存取。

  7 服务器端:PHP

  7.1 AjaxAC(自从2005年4月)

用单个的PHP类封装了完整的应用程序。

  7.2 JPSpan

  直接把Javascript调用传递到PHP函数。

  7.3 XAJAX

直接把Javascript调用传递到PHP函数。

  8 服务器端:Ruby

是一个通常的强力支持Ajax的web框架:

  Ajax应用及解决方案

  对程序员而言,开发Ajax应用最头痛的莫过于以下几点:

  Ajax在本质上是一个浏览器端的技术,首先无可避免的第一个即是浏览器的兼容性问题。各家浏览器对于JavaScript/DOM/CSS的支持总有部分不太相同或是有Bug,甚至同一浏览器的各个版本间对于JavaScript/DOM/CSS的支持也有可能部分不一样。这导致程序员在写Ajax应用时花大部分的时间在调试浏览器的兼容性而非在应用程序本身。因此,目前大部分的Ajax链接库或开发框架大多以js链接库的形式存在,以定义更高阶的JavaScript API 、JavaScript对象(模板)、或者JavaScript Widgets来解决此问题。如prototype.js。

  Ajax技术之主要目的在于局部交换客户端及服务器之间的数据。如同传统之主从,无可避免的会有部分的业务逻辑会实现在客户端,或部分在客户端部分在服务器。由于业务逻辑可能分散在客户端及服务器,且以不同之程序语言实现,这导致Ajax应用程序极难维护。如有用户接口或业务逻辑之更动需求,再加上前一个JavaScript/DOM/CSS之兼容性问题,Ajax应用往往变成程序员的梦魇。针对业务逻辑分散的问题,Ajax开发框架大致可分为两类:

  将业务逻辑及表现层放在浏览器,数据层放在服务器:因为所有的程序以JavaScript执行在客户端,只有需要数据时才向服务器要求服务,此法又称为胖客户端(fat client)。服务器在此下通常仅用于提供及储存数据。此法的好处在于程序员可以充分利用JavaScript搭配业务逻辑来做出特殊的用户接口,以符合终端用户的要求。但是问题也不少,主因在第一,JavaScript语言本身之能力可能不足以处理复杂的业务逻辑。第二,JavaScript的执行效能一向不好。第三,JavaScript访问服务器数据,仍需适当的服务器端程序之配合。第四,浏览器兼容性的问题又出现。有些Ajax开发框架如DWR企图以自动生成JavaScript之方式来避免兼容的问题,并开立通道使得JavaScript可以直接调用服务器端的Java程序来简化数据的访问。但是前述第一及第二两个问题仍然存在,程序员必须费相当的力气才能达到应用程序之规格要求,或可能根本无法达到要求。

  将表现层[2]、业务逻辑、及数据层放在服务器,浏览器仅有用户接口引擎(User Interface engine);此法又称为瘦客户端(thin client)架构,或中心服务器(server-centric)架构。浏览器的用户接口引擎仅用于反映服务器的表现层以及传达用户的输入回到服务器的表现层。由浏览器所触发之事件亦送回服务器处理,根据业务逻辑来更新表现层,然后反映回浏览器。因为所有应用程序完全在服务器执行,数据及表现层皆可直接访问,程序员只需使用服务器端相对较成熟之程序语言(如Java语言)即可,不需再学习JavaScript/DOM/CSS,在开发应用程序时相对容易。缺点在于用户接口引擎以及表现层通常以标准组件的形式存在,如需要特殊组件(用户接口)时,往往须待原框架之开发者提供,缓不济急。如开源码Ajax开发框架ZK目前支持XUL及XHTML组件,尚无XAML之支持。

  Ajax是以异步的方式向服务器提交需求。对服务器而言,其与传统的提交窗体需求并无不同,而且由于是以异步之方式提交,如果同时有多个Ajax需求及窗体提交需求,将无法保证哪一个需求先获得服务器的响应。这会造成应用程序典型的多进程(process)或多线程(thread)的竞争(racing)问题。程序员因此必须自行处理或在JavaScript里面动手脚以避免这类竞争问题的发生(如Ajax需求未响应之前,先disable送出按钮),这又不必要的增加了程序员的负担。目前已知有自动处理此问题之开发框架似乎只有ZK。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭