[zk框架] 关于zk

sunflowers 2009-09-15

 

欢迎使用ZK---- 一种丰富Web应用程序的最简单方式。

此开发手册买描述了ZK的概念和功能。关于如何安装配置ZK的环境,请参阅Quick Start Guide。如果想得到的各个组件(components)的属性和方法的详细描述,请参阅Developer's Reference。

这章描述了Web程序,AJAX技术和ZK项目的历史背景。如果你想马上了解ZK的功能,可以跳过这一章。

传统的Web应用程序

以简单高效交换文档为目的的Web技术,例如超文本传输协议(HTTP)和超文本标记语言(HTML),都来源于单页性(page-based )和无状态(stateless-communication)的模式。在这种模式中,一个页面是自给自足(self-contained)的,并且是沟通客户端与服务器端的最小单位。

随着网络俨然成为应用开发的默认平台,这种模式面临着巨大的挑战:对于表现当今应用程序中复杂性的无能为力。举个例子,为了给客户报价,你或许必须打开另一个页面来查询此客户的交易记录,再打开一个页面来显示当前的价格,还得开一个页面来存储当前信息。用户被迫离开他正在工作的页面,并且在几个页面间来回浏览。这很容易迷失,混淆,结果是把客户弄得不愉快,销售机会的损失和低生产力。

在这种单页性(page-based )的模式上开发一个现代的应用程序也是一个极大的挑战。在这种模式中,运行在服务器上的应用程序必须处理来自从语法上分析请求,送出回应 ,连接用户从一个页面到另一个页面路由的一切,并且处理用户的各种错误。 数十种框架,例如Struct,Tapestry和JSF,随即出现用来简化开发过程。由于单页性(page-based)模式与现代模式之间的

 

点对点(Ad-hoc)AJAX应用

经过数十年的演变,Web应用已经从静态HTML发展到DHTML,applets,Flash,最后发展到了AJAX[1] (Asynchronous JavaScript and XML ,非同步的JavaScript和XML )。通过谷歌地图及推荐(Google Maps and Suggest)的说明,AJAX技术通过提供与桌面应用程序同等水平的互动性和反应能力给Web应用带来了新生命。不同于applets或Flash,AJAX基于标准的浏览器和JavaScript,并且不需要专门的插件。

AJAX是新一代的DHTML,就像DHTML,它在很大程度上依赖于JavaScript监听用户活动产生的事件,然后动态的操纵浏览器中一个页面(亦称 DOM)的视觉表现。此外,它更近一步,能够使与服务器的沟通异步进行,即不需要离开或提交整个页面。它通过引入客户与服务器间轻量级的通信(light-weight communication )打破了基于页面的模式。妥善设计,AJAX可以给Web应用带来丰富的桌面通用组件,而且在Web应用程序的活动周期内可以动态更新这些组件并通过应用程序获得对组件的更多控制。

当提供给用户需要的交互性的同时,AJAX给已经很昂贵的Web应用程序开发增加了复杂性和技术先决条件。开发者不得不在浏览器中操纵DOM,并且使用不兼容甚至是错误的JavaScript与服务器通信,为了更好的交互性,开发者必须重复复制应用数据和业务逻辑以便于浏览。这样就增加了维护成本且面临在服务端与客户端同步数据的挑战。

底线是在关于处理请求方面,点对点(Ad-hoc)的AJAX应用与传统的Web应用没有区别。开发者仍然必须解决由单页性(page-based)和无状态(stateless-communication)模式造成的隔阂。



ZK: 它是什么

ZK是一个事件驱动(event-driven)的,基于组件(component-based)的,用以丰富网络程序中用户界面的框架。ZK包括一个基于AJAX事件驱动的引擎(engine),一套丰富的XUL和XHTML,以及一种被称为ZUML(ZK User Interface Markup Language,ZK用户界面标记语言)的标记语言。

有了ZK,您可以利用XUL和XHTML的丰富特性来呈现您的Web应用,操纵它们来处理因用户活动而引发的事件,就像在桌面应用程序中那样。不同于大多数其它框架,就ZK而言,AJAX是一种幕后(behind-the-scene)技术,组件内容的同步和流水线事件(pipelining of events)都由ZK引擎自动完成。

您的用户获得了如同桌面程序的互动性和反应能力,而您的开发仍然像开发桌面应用程序那样简单。

除了简单的模型和丰富的组件,ZK也支持一种文本标记语言,称为ZUML。ZUML,如同HTML,可以让开发人员设计界面而无需编程。通过XML的命名空间,ZUML无缝的集成了一套不同的标签[2]到同一页面。目前,ZUML支持两套标签,即XUL和HTML。

为了方便快速模型开发(prototyping)和定制,ZK允许开发人员嵌入EL表达式,以及您喜欢的脚本语言,包括但不限于 Java[3], JavaScript[4], Ruby[5] and Groovy[6]. 开发人员可以选择不嵌入任何脚本语言,如果他们喜欢更严格的要求(discipline)。不同于JavaScript嵌入在HTML,ZK在服务器端执行所有的嵌入脚本。

注意一切运行在服务器端是从应用程序开发者的角度出发的。组件开发人员必须平衡互动性与简单性来决定什么任务由浏览器来完成,而什么任务由服务器来完成。

 

 

 

ZK: 它不是什么

ZK并没有关注持久化(persistence)或伺服务器之间的沟通(inter-server communication)。ZK被设计的尽可能的简单,它只针对表示层(presentation tier)。他并不要求和暗示任何后端技术,所有你喜欢的中间件就像以前一样工作,如JDBC, Hibernate, Java Mail,EJB 或 JMS。

Zk并没有为开发人员提供(tunnel),RMI或其他的API用来在客户端与服务器端通信,因为所有的代码都运行在同一服务器的同一Java虚拟机(JVM)上。

ZK并没有强迫开发人员使用MVC或其他设计模式。是否使用它们由开发人员选择。

ZK并不是旨在把XUL带入Web应用的框架。它的目标是把桌面编程模式引入Web应用。目前,它只支持XUL和XHTML。将来它或许会支持XAML, Xquery及其它。

ZK将AJAX嵌入到了现今的应用中(implementation),但它并没有止步于AJAX结束的地方。在ZK Mobile中,您的应用程序可以到达支持J2ME的任何设备,例如PDA,手机和游戏平台。此外,您根本不用修改您的应用程序[7]

 

Global site tag (gtag.js) - Google Analytics