使用Google App Engine、Google Closure库和Clojure编写HTML5应用程序

Stefan Richter 在 Google 开发者日的演讲总结

Stefan Richter,Freiheit.com 的首席技术官,本周在慕尼黑的 Google 开发者日上分享了他关于使用 HTML5 和 Google App Engine 开发富互联网应用(RIA)的愿景。他特别指出,与基于服务器的页面渲染相比,构建基于客户端组件的 HTML5 应用会稍微复杂一些。

传统客户端应用模型的问题

在 Web 之前,厚客户端应用模型基于小部件、事件和事件处理器,这通常会导致复杂的事件链,给维护带来困难。在两层客户端应用模型中,人们甚至直接从事件处理器访问数据库。而基于服务器的页面渲染则通常是一次请求和响应生成整个页面。

HTML5 的挑战与解决方案

Stefan 解释说,使用 HTML5 时,开发者将不得不在客户端生成越来越多的 HTML 代码。他们尝试的一种方法是使用 Google Closure Templates,这是一个客户端和服务器端的模板系统,帮助动态构建可重用的 HTML 和 UI 元素。Closure Templates 同时支持 JavaScript 和 Java,因此可以在服务器和客户端使用相同的模板。

事件处理与数据传递的建议

Stefan 建议将事件处理集中化,并仅在需要时将状态封装到自定义小部件中。从后端角度来看,他质疑是否需要使用类和对象来传递数据。他们使用 Clojure 宏在服务器上生成数据存储访问代码,客户端和服务器使用相同的数据结构,即键值对。他认为这是应用开发的未来,不再有阻抗不匹配、对象关系映射器和转换步骤。

下一代 RIA 的一般原则

Stefan 在演讲中阐述了一系列下一代 RIA 的一般原则:

  • 代码应易于理解
  • 不要试图在浏览器中编写 Windows 风格的桌面应用
  • 准备好主要在客户端渲染 HTML 代码
  • 不要以 Java 的风格编写 JavaScript 代码
  • 提前规划离线功能(和同步陈旧数据)
  • 需要应对并发修改的策略
  • 需要推送通知
  • 将客户端异常记录到服务器

实例与应用

The Deadline 应用 是遵循这些原则创建的。

结论与问题

HTML5 和云是否正在改变 RIA 的架构和编程模型?开发者和架构师是否准备好迎接这一转变?这是 Stefan Richter 提出的问题,也是值得业界深思的议题。

阅读 14
0 条评论