Home 文章 Jakarta Common 书评:《Ajax模式与最佳实践》

feedsky
抓虾
google reader
my yahoo
书评:《Ajax模式与最佳实践》 E-mail
Jakarta Common
作者是 Administrator   
2007-12-02 07:44:19
《Ajax模式与最佳实践》一书向我们展示了将Ajax和REST结合为一种独立解决方案的动态web应用。REST的首要优势就是能够和现存技术结合在一起使用。无论你是否已经采用Ajax应用,它都是一本理想的技术图书。因为书中列举了多种模式和最佳实践,你可以快速检查和验证自己正在建造的Ajax应用是否高效。
书评:《Ajax模式与最佳实践》

评论者:cleverpig


图书简介:

image

        Ajax正在将我们领入下一代Web应用中。通过将客户端从服务端解耦,它打破了客户端-服务端的壁垒,当然Ajax应用仍然需要能够从中提取内容数据的服务端。利用Ajax和服务端的最有效方式就是理解并使用REST这种定义Web服务的架构风格。

        《Ajax模式与最佳实践》一书向我们展示了将Ajax和REST结合为一种独立解决方案的动态web应用。REST的首要优势就是能够和现存技术结合在一起使用。无论你是否已经采用Ajax应用,它都是一本理想的技术图书。因为书中列举了多种模式和最佳实践,你可以快速检查和验证自己正在建造的Ajax应用是否高效。

        书中提到的多种模式主要回答了以下问题:
        • 什么是Ajax、REST,为什么要关心它们?我是否应该关心那些利用Ajax和REST的高效实例?
        • Ajax和REST的基本原理有哪些?我应该使用这些基本原理中的那几部分?
        • 如何优雅地处理海量数据?我应该缓存数据吗?应该获得数据块吗?(相关模式:缓存控制器和无限数据)
        • Session和Cookies真的像人们所说的那样糟糕吗?我应该做些什么?如何生成用于其它设备的内容?(置换模式)
        • 我想要修复HTML浏览器上的回退按钮问题。(状态导航模式)
        • 建立mashup的最佳方式是什么?(基于MVC模式的REST)
        • 我的页面拥有如此众多的使用JavaScript管理的链接,而我正在对此失去控制,谁能帮我使它们更加有组织?!(解耦导航模式)
        • 我了解发送到服务端的HTTP数据的含义,但服务端如何在无请求时发送给我数据?(持久通讯模式)
        • 我的服务端代码看似到处都是混乱的tag和代码块,如何将它们组织为我的HTML页面,就像SOA客户端和使用基于web服务的REST那样?(内容分块模式)

读后感受:

        本书对于那些正准备扩展技术视野的中、高级Ajax程序员来讲是一本高级参考。当你翻开在前三章,你会发现它的作者Gross没有为初学者详尽地介绍Ajax,而是潜心钻研针对Ajax不同问题的模式。虽然在校订和一些关键技术评论上存在一点瑕疵,但总体来讲,它出色地完成了覆盖Ajax模式和实践的任务。作者Gross也是一位REST和XML粉丝,因此你对此书的看法可能依赖于对他的技术选择的认同。

        书中第一二章涵盖了XHR对象的基本原理以及使用工厂模式来抽象对象以去除浏览器的差异;第三章主要讲“内容分块”,作者阐述了他所认同的Ajax核心——事件导致异步请求,将按照一定顺序的内容注入到document中;第四章阐述“缓存实践”,而第五章则涵盖了“置换”模式,尤其是将URL资源从表象中分离;第六章讲述“解耦导航”,尤其是从业务逻辑中分离事件触发/处理;第七章主要讨论在状态之间的无缝切换,第八章涵盖了“持久通讯”(polling)模式,可能其中一些你曾经在WWDC中见识过;第九章讲述了使用“状态导航”模式的Ajax工作流,第十章则涉及“无限数据”,最后一章涵盖了如何将远程服务看作通过REST的MVC模式。

        以上是本书的一些内容,而其中的大多数示例都具有编写良好的代码。在书中的代码将在后期整理到一个框架中,因此它们与那些类似玩具的代码相比更具实用性。服务端示例使用Java或者C#编写,并且附上了所有的XML序列化代码。JavaScript代码看似遵循了一些奇怪的约定——类似Java风格的函数名开头字母大写。需要提的一点是这里没有涉及任何第三方框架。

        针对序列化,Gross将XML与其它的序列化方式做了比较:“一些人认为XML存在问题并且使用其它被提议的协议将更好。坦白地讲,我认为那是很明显的错误…因此当你编写Ajax和REST应用时,忠于XML是最好的选择。”

        我确实认同Gross对于在web服务中使用XML的交互性优势,但他没有提到像Yahoo和del.icio.us这样的站点使用JSON提供数据。如果你的应用只与del.icio.us交互,那么就没有必要使用XML。而且目前存在着一些你可以完全控制服务的示例:一个内网应用、使用对开发者友好的JSON或者YAML。我认为至少应该在示例应用中讨论序列化。

        本书对于那些希望了解建立大型Ajax应用的隐性危机和排解它们方法的开发者来讲可称得上是伟大的著作。文章总体语言简洁、易于用来导学。其中涵盖的模式非常具有实用价值,尤其是缓存模式和处理转换和转换状态的不同方式。如果你正在进行一些REST/XML和多重web服务的工作,我将此书推荐给你。如果你只能拥有一本Ajax图书的话,我推荐你《Ajax实战》,如果可以有能力购买两本的话,这本书将是你的第二选择。

作者简介:

        Christian Gross是一位咨询顾问、培训师和技术指导,在互联网领域有着非常丰富的经验。他为很多公司做过软件开发和其他的解决方案,包括Altova、戴姆勒-奔驰、微软和NatWest。Gross写过好几本书,当然包括本书:
        《Ajax Patterns and Best Practices (Expert's Voice)
        《Ajax and REST Recipes: A Problem-Solution Approach
        《Applied Software Engineering Using Apache Jakarta Commons
        《Open Source for Windows Administrators
        《A Programmer's Introduction to Windows DNA
        《Foundations of Object-Oriented ProgrammingUsing.NET 2.0 Patterns
        他经常在很多的研讨会上做演讲,包括Software Development、JAX和BASTA,他也是很多研讨会的跟踪主席。
最近更新 ( 2007-12-02 07:44:19 )
 
Java家,