程序员开发指南( ZK 程序员开发指南(一) 收藏
第一章 简介 欢迎使用 ZK,用最简单的方法使你的 Web 应用程序变得有趣! ZK 开发人员指南描述了 ZK 的相关概念和特性。如果你要将 ZK 安装到系统上, 请参考《ZK 快速入门指南》。如果你想对 ZK 中的组件的属性及其方法有充分的 了解,请参考《ZK 程序员参考手册》。 本章描述的是 Web 程序开发的一些历史背景,AJAX 技术以及 ZK 这个项目本身。 如果你希望直接了解 ZK 的相关特性,你可以直接跳过这一章。 传统的 Web 应用 为了使
文档交换变得简单而有效,Web 技术(以 HTTP 和 HTML 为基础)发源于一 种基于静态页面和无状态通讯的模型。在这个模型中,一个页面是自包含的,同 时也是服务器和客户端通信的一个最小单位。 当 Web 逐渐发展成为应用
软件的缺省开发平台时, 这种传统的模型就面临下述的 挑战,即其无法将现今应用系统的复杂程度清晰的表现出来。比如说, 为了给 一个在线用户分配额度,你可能不得不打开另一个页面去
搜索他的过往交易记 录,同时需要另一个页面查询最近的价格表,除此之外,还需要一个独立的页面
查询当前的库存情况。用户不得不离开当前工作的页面,通过在不同的页面间不 停切换来达到分配适当额度的目的。用户很容易迷失于众多的页面中,结果是用 户会 对系统很不满意,可能会失去销售订单,同时造成
工作效率的低下。 在上述的模型下开发一个现代的应用系统同样是一个挑战。在这样的模型中,服 务器上运行的应用程序不得不处理客户端传过来的所有信息,包括处理客 户端 的请求,渲染响应的结果,处理用户在页面链接之间跳转的路由,同时还需要处 理用户造成的各种各样的错误。市面上已经有了为数众多的系统框架,包括 Struct, Tapestry 和 JSF,它们均用于简化这样的系统的开发流程。但是由于 基于页面的模式和现代应用程序的需求之间的巨大鸿沟, 学习和使用这些客户端
系统框架并非易事,而 且过程并不轻松,更不要期望
学习过程会简单而惬意了。 既有的 AJAX 应用系统 经过近十年来的发展, 应用从静态 HTML 页面, Web 发展到动态 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 应用在处理请求的方式上没有任何不 同。 开发人员仍然不得不自己去填平基于页面的模式和无状态模型