ZK程序员开发指南(一)

 
第一章    简介
欢迎使用ZK,用最简单的方法使你的Web应用程序变得有趣!
ZK开发人员指南描述了ZK的相关概念和特性。如果你要将ZK安装到系统上,请参考《ZK快速入门指南》。如果你想对ZK中的组件的属性及其方法有充分的了解,请参考《ZK程序员参考手册》。
本章描述的是Web程序开发的一些历史背景,AJAX技术以及ZK这个项目本身。如果你希望直接了解ZK的相关特性,你可以直接跳过这一章。
传统的Web 应用
为了使文档交换变得简单而有效,Web技术(以HTTP和HTML为基础)发源于一种基于静态页面和无状态通讯的模型。在这个模型中,一个页面是自包含的,同时也是服务器和客户端通信的一个最小单位。
当Web逐渐发展成为应用软件的缺省开发平台时,这种传统的模型就面临下述的挑战,即其无法将现今应用系统的复杂程度清晰的表现出来。比如说,为了给一个在线用户分配额度,你可能不得不打开另一个页面去搜索他的过往交易记录,同时需要另一个页面查询最近的价格表,除此之外,还需要一个独立的页面查询当前的库存情况。用户不得不离开当前工作的页面,通过在不同的页面间不停切换来达到分配适当额度的目的。用户很容易迷失于众多的页面中,结果是用户会对系统很不满意,可能会失去销售订单,同时造成工作效率的低下。
在上述的模型下开发一个现代的应用系统同样是一个挑战。在这样的模型中,服务器上运行的应用程序不得不处理客户端传过来的所有信息,包括处理客户端的请求,渲染响应的结果,处理用户在页面链接之间跳转的路由,同时还需要处理用户造成的各种各样的错误。市面上已经有了为数众多的系统框架,包括Struct, Tapestry 和JSF,它们均用于简化这样的系统的开发流程。但是由于基于页面的模式和现代应用程序的需求之间的巨大鸿沟,学习和使用这些客户端系统框架并非易事,而且过程并不轻松,更不要期望学习过程会简单而惬意了。
既有的AJAX 应用系统
经过近十年来的发展,Web应用从静态HTML页面,发展到动态HTML(DHTML)页面,后来又有applets和Flash,最终,AJAX技术得以产生(Asynchronous JavaScript and XML)。由于Google Maps和Suggest 的成功应用,AJAX在Web应用开发中获得了重视,究其原应在于其提供了与桌面应用同一层次的用户互动和响应体验。与applets和Flash不同,AJAX是基于标准浏览器和JavaScript的,它不需要浏览器加载附加的插件。
AJAX是新一代的DHTML。与DHTML类似,其在很大程度上依赖于JavaScript来捕获用户活动产生的事件,然后将页面(通过DOM)在浏览器中动态的展现出来给用户。而且更进一步的是,客户端以一种异步的方式与服务器通信,所获取的页面不需要整个的进行渲染或更新。通过在客户端和服务器中引入这种轻量级的通信机制,AJAX解决了原有的基于页面的模式的弊端。只要设计得当,AJAX可以给Web应用带来与桌面应用同样丰富的组件,而且所有这些组件的内容在应用程序的控制下可以得到动态的更新。
通过提供用户需要的互动体验,AJAX使得本来就已经耗时耗力的Web应用开发更加困难,程序员需要解决的问题更为复杂,所需的技能也更多。开发人员不得不在浏览器中操作DOM,同时使用与服务器不兼容的甚至是很容易产生Bug的JavaScript API来通信。为了获得更好的用户体验,程序员常常需要在浏览器中保存应用数据的部分拷贝以及部分业务逻辑。这无疑增加了系统维护的成本,同时在客户端和服务器两端保持数据的一致性也是一个挑战。
问题在于,现有的AJAX应用与传统的Web应用在处理请求的方式上没有任何不同。开发人员仍然不得不自己去填平基于页面的模式和无状态模型与现代应用程序需求之间的鸿沟。
 
ZK 是什么?
ZK是一个事件驱动的,基于组件的应用程序框架,用于开发基于Web的富客户端应用。ZK包括了一个基于AJAX的事件驱动处理引擎,一个丰富的XUL和XHTML的组件集,以及一套标签语言ZUML(ZK User Interface Markup Language)。
使用ZK,你可以将你的应用程序通过特性丰富的XUL和XHTML组件展示出来,同时可以通过用户活动引起的事件来操纵各个组件,正如你多年来在桌面应用中所作的一样。与其他的框架不同,ZK中的AJAX是一个透明的技术。组件的数据的同步和事件流程的处理是ZK引擎在幕后自动处理的。
用户获得的是与桌面应用同样的互动和响应体验,而程序员的开发同样是如同开发桌面应用程序一样简单。
除了模型简单和组件丰富外,ZK同样支持标签语言,ZUML。ZUML与XHTML一样,使开发人员可以不需要编程即可设计用户界面。利用XML名字空间技术,ZUML可以在同一个Web页面中无缝的与不同的标签集集成。当前,ZUML支持两种标签集,XUL和HTML。
为了支持快速原型开发和客户化开发,ZUML允许开发人员在页面中嵌入EL表达式,同时可以嵌入你喜欢的编程语言编写的脚本代码,包括单不限于Java,JavaScript,Ruby和Groovy。如果开发人员喜欢更严谨的编程规范,当然他们也可以选择不嵌入相关的脚本代码。与HTML中嵌入的JavaScript不同,ZK将所有的脚本代码都放在服务器端执行。
一个值得注意的地方是,我们所说的在服务器端执行是从应用程序开发人员的角度来谈的。对于组件开发人员,他们就不得不在互动需求和简单性中寻找平衡。他们需要判断哪些任务要在浏览器中执行,而哪些任务需要在服务器上运行。
ZK 不支持什么?
ZK不考虑数据的持久化或者服务器之间的通信。设计ZK的一个设计目标是尽量使其单薄。它仅关注于系统的表示层。ZK不需要或是建议使用其它的后台技术。你以前喜欢使用的中间件仍然可以继续使用,如JDBC,Hibernate,JavaMail,EJB或JMS。
ZK也不提供这样的渠道,如RMI或其它API,使得开发人员可以在客户端和服务器端之间通信,因为所有的代码都是在同一台服务器的同一个JVM中运行。
ZK不要求开发人员一定使用MVC或其它的设计模式。使用与否完全看开发人员自己的意愿。
ZK同样也不是一个期望把XUL带到Web应用中的框架。它的目标在于将桌面应用的模型带到Web应用中。目前,ZK只支持XUL和XHTML。将来,还可能会支持XAML,XQuery或是其它的标记语言。
ZK当前的实现嵌入了AJAX,但其不限于AJAX。即将推出的ZK for Mobile,将使得支持J2ME的设备上能够运行你的ZK应用程序。这些设备包括了PDA,手机和游戏终端。而且你并不需要对你的ZK应用作任何的修改。
ZK 的局限性
ZK并不支持那些需要在客户端运行大多数任务的应用,如3D动作类游戏。
除非你编写特定的组件, ZK 目前提供的组件不支持提升客户端的计算性能 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值