作者:empty 页数:265 出版社:empty |
1.1.传统的Web应用程序以交换文档简单高效为日标, Web技术, 超文本传输协议(HTTP) 和超文本标记语言(HTML) , 都来源于单页性(page-based) 和无状态(stateless-communication) 的模式。在这种模式中,个页面是自给自足(self-contained) 的, 并且是沟通客户端与服务器端的最小单位。随着网络伊然成为应用开发的默认平台,这种模式面临着巨大的挑战:对于表现当今应用程序中复杂性的无能为力,举个例子,为了给客户报价,你或许必须打开另一个页面来查询此客户的交易记录,再打开一个页面来显示当前的价格,还得开一个页面来存储当前信息。用户被迫离开他正在工作的页面,并且在儿个页面间来回浏览。这很容易迷失,混淆,结果是把客户弄得不愉快,销售机会的损失和低生产力。在这种单页性(page-based) 的模式上开发个现代的应用程序也是个极大的挑战。在这种模式中,运行在服务器上的应用程序必须处理来自从语法上分析请求,送出回应,连接用户从一个页面到另一个页面路由的一切,并且处理用户的各种错误。数十种框架, 例如Struct, Tapestry和JSF, 随即出现用来简化开发过程。由于单页性(page-based) 模式与现代模式之间的巨大差别, 学习和使用这些框架并不是一个愉快的过程, 更不要提直觉感知(intuition) 和简化了。
1.2.点对点(Ad-hoc) AJAX应用经过数十年的演变, Web应用己经从静态HTML发展到动态HTML, applets, Flash,最后发展到了AJAX II(Asynchronous JavaScript and XML, 非同步的JavaScript和XML) , 通过谷歌地图及推荐(GoogleMaps and Suggest) 的说明, AJAX技术通过提供与桌面应用程序同等水平的互动性和反应能力给Web应用带来了新生命。不同丁applets或Flash, AJAX基于标准的浏览器和JavaScript.并且不需要专门的插件。AJAX是新一代的DHTML, 就像DHTML, 它在很大程度上依赖于JavaScript监听用户活动产生的事件, 然后动态的操纵浏览器中一个页面(aka.DOM) 的视觉表现。此外,它更近一步,能够使与服务器的沟通异步进行,即不需要离开或提交整个页面.它通过引入客户与服务器间轻量级的通信(light-weight communication) 打破了基于页面的模式。妥善设计, AJAX可以给Web应用带来丰富的桌面通用组件, 而且这些组件的内容可以在应用程序的控制下动态更新。当提供给用户需要的交互性的同时, AJAX给已经很品贵的Web应用程序开发增加了复杂性和技术先决条件。开发者不得不在浏览器中操纵DOM, 并且使用不兼容甚至是错误的JavaScript与服务器通信, 为了更好的交互性, 开发者必须重复复制应用数据和业务逻辑以便于浏览。这样就增加了维护成本及同步数据的挑战底线是在关于处理请求方面, 点对点(Ad-hoc) 的AJAX应用与传统的Web应用没有区别:开发者仍然必须解决由单页性(page-based) 和无状态(stateless-communication) 模式造成的隔阂,口Ajax是由Jesse James Garrett於Ajax:ANewApproachtoWebApplications中所提出的
1.3.ZK:它是什么ZK是一个事件驱动(event-driven) 的, 基于组件(component-based) 的, 用以丰富网络程序中用户界面的框架.ZK包括一个基于AJAX事件驱动的引擎(engine) .一套丰富的XUL和XHTML, 以及一种被称为ZUM L(ZK UserInterface MarkupLanguage, ZK用户界面标记语言) 的标记语言。有了ZK, 您可以利用XUL和XHTML的丰富特性来早现您的Web应用, 操纵它们来处理因用户活动而引发的事件,就像您使用多年的桌面应用程序那样,不同于大多数其它框架, ZK是种幕后(behind-the-scene) 技术, 组件内容的同步和流水线事件(pipelining of events) 都由ZK引擎白动完成。您的用户获得了如同桌面程序的互动性和反应能力,而您的开发仍然像开发桌面应用程序那样简单.除了简单的模型和丰富的组件, ZK也支持一种文本标记语言, 称为ZUM L.ZUM L, 如同HTML, 可以让开发人员设计界面而无需编程。通过XML的命名空间, ZUM L无缝的集成了一套不同的标签2l到同一页面。日前, ZUM L支持两套标签, 即XUL和HTML.为了方便快速模型开发(prototyping) 和定制, ZK允许开发人员嵌入EL表达式, 以及您喜欢的脚本语言, 包括但不限于Java, JavaScript, Ruby ll and Groovy.开发人员可以选择不嵌入任何脚本语言, 如果他们喜欢更严格的要求(discipline) 。不同于JavaScript嵌入在HTML, ZK在服务器端执行所有的嵌入脚本。注意我们所说的一切运行在服务器端是从应用程序开发者的角度出发的。对于组件开发人员来说,他们必须平衡互动性与简单性来决定什么任务由浏览器来完成,而什么任务山服务器来完成。
1.4.ZK:它不是什么ZK井没有关注持久化(persistence) 或伺服务器之间的沟通(inter-servercommunication) .ZK被设计的尽可能的简单, 它只针对表示层(presentation tier) .他并不要求和暗示任何后端技术, 所有你喜欢的中间件就像以前一样工作, 如JDBC,Hibernate, JavaMail, EJB或JMSZk并没有为开发人员提供(tunnel) , RMI或其他的API用来在客户端与服务器端通信,因为所有的代码都运行在同一服务器的同一Java虚拟机(JVM) 上。ZK并没有强迫开发人员使用MVC或其他设计模式, 是否使用它们由开发人员选择.ZK并不是旨在把XUL带入Web应用的框架。它的目标是把桌面编程模式引入Web应用, 目前, 它只支持XUL和XHTML, 将来它或许会支持XAML, Xquery及其它,ZK将AJAX嵌入到了现今的应用中(implementation) , 但它并没有止步于AJAX结束的地方。在即将来临的ZK Mobile中, 您的应用程序可以到达支持J2ME的任何设备, 例如PDA, 手机和游戏平台, 此外, 您根本不用修改您的应用程序Z。四根据莹幕大小有时需要做调整.