可以将 Web 2.0 描述为一组核心的模式,在属于 web 2.0 范畴的应用程序中,可以观察到这些核心模式。这些模式分别是服务、简单性和社区(请参见图 1 中对它们的表示)。本文在介绍这些模式之后,还探讨了一些支持它们的技术。
图 1. web 2.0 应用程序展示了这三个模式
服务
要想真正地为 web 社区(这也是 web 使用和应用程序开发的新阶段的基础承租者)授权,社区首先必须能够共享对给定应用程序的公共访问方法。为促进这项工作的完成,应用程序正逐步过渡一种服务模型,其中所有的用户都可以对一个实例进行访问。而不是每个用户必须分别下载并安装应用程序。此外,这个共享的服务模型提供了单一沙箱,以保证社区机制的有效性。
简单性
面向开发人员的简单性:对于某些应用程序来说,软件变得越来越容易使用和开发,这得益于开放的行业标准和功能强大的技术的门槛降低。从而增加了开发人员的数量以及可用的 web 应用程序。从创建社区 的角度而言,这个方面单独就可以发挥很大的作用。
面向用户的简单性:您还可能注意到,现在的 web 应用程序提供了丰富的内容和用户体验,并且随着 Asynchronous JavaScript + XML (Ajax) 的出现,传统的独立客户端或者瘦客户端与 web 应用程序之间的界线现在已经变得模糊不清,甚至完全消失了。当前的 web 应用程序不再需要像 web 1.0 那样重新加载页面以浏览新的内容,就可以提供丰富的、交互式的用户体验。
由于 feed 相关技术的成功(将在本文后面的内容中对其进行描述),用户现在可以订阅聚合的内容,这些内容提供了他们希望通过行业标准技术和协议得到的特定信息。现在,feed 允许采用特定的格式来包装并交付信息,这使得可以很容易地对信息进行使用和重新混合。有时,软件需要独立于信息而存在,以便信息能够实现它的最大价值,而上述的功能正好可以满足这种趋势(因此,我们将重点关注于信息,而不是功能)。其结果是,服务所有者将会发现,他们所提供的信息正以完全出乎他们预料的方式被高效地使用。
社区机制
对于我们组织、访问和使用信息的方式,web 已经创造了巨大的社会变革。Wikipedia(有关其链接,请参见参考资料)就是其中的一个例子,它允许人们一起工作、以协同的方式捕获并管理信息,并且速度远远超过单个个体完成同一任务所能达到的速度。它允许快速地添加信息,但是会大大地增加可用信息的总量,所以这一点既有好的一面,也有不好的一面。这使得您在查找所需的信息时非常困难,因而需要使用附加的社区机制来帮助筛选相关的信息,以便用户能够使用有意义的、易于搜索的元数据对信息进行标记。del.icio.us(有关其链接,请参见参考资料)就是其中的一个例子,它允许用户联机存储并标记他们的书签。这允许其他用户通过标记来搜索书签列表,从而提供一种在已经由该社区进行了书签标记的(经过筛选的)数据中查找相关结果的方式。
社区数据的完整性:另一个紧迫的问题是,需要检查社区所提供的数据的完整性。可以使用同一个社区来提供有价值的信息。用户可以添加、编辑相关的注释以及建议,并且可以对这些注释和建议进行聚合,以便为给定的资源提供社区的集体观点,从而真实地创建一个既可以读取、又可以写入的 web。这种模型还可以用于在提供者和使用者之间创建紧密的反馈环节;例如 eBay(有关其链接,请参见参考资料)上买家和卖家的等级系统。您可以利用社区的这种紧密反馈环节来改进软件的开发过程。现在,用户社区可以参与到软件的开发工作中,从而将软件作为一种不断更新的服务(随着越来越多的使用,不断地进行改进)来提供。
实现人与人之间的连接:可以更进一步利用社会网络的特性,以定位和管理不同种类的资源,即相关的人员。对于定位共享公共主题的人员来说,社会网络是一种功能很强大的方式。例如,这些网络允许参加了某个特定中学的人或者属于某个特定行业社团的人,在他们自己的 web“空间”中实现共享、联网、甚至协作。此外,在这些网络中可以实现相当程度的自治,网络中的用户可以添加并邀请其他用户登录到该网络中,从而不断增加它的价值。这与 web 1.0 是完全不同的,web 1.0 重点关注计算机之间的连接,而不是人与人之间的连接。
长尾和更宽松的许可协议:关于 web 2.0 应用程序,还有其他一些值得注意的方面,它们更关注于提供长尾 (The Long Tail)(有关更多的信息,请参见参考资料)而不仅仅只是服务于受众,它们通过使用相关的技术服务更多的受众,并为他们提供高度个性化的产品或服务。此外,因为 web 1.0 重点关注于可下载的应用程序,所以对于如何使用该应用程序,其许可协议是非常严格的(即“保留所有权利”);而对于 web 2.0,它们通常鼓励与其他技术、内容和应用程序进行集成(即“保留某些权利”)。
我们可以在一些常见的 web 2.0 旗舰网站中看到这些模式,如 Digg,它使用社区机制对信息进行添加、分类和注释;YouTube,它允许用户采用对他们来说有意义的,并且其他用户可以很容易地进行搜索的方式,对多媒体信息进行标记;Facebook,它允许用户构建社会网络,并在其中进行交互。(有关这些站点的链接,请参见参考资料。)
是什么技术促进了 web 2.0 的模式和概念呢?
向基于服务的模型的过渡,暗示了 web 2.0 应用程序现在的发展程度。现在,web 基础设施被看作应用程序开发堆栈的最底层(相对于可下载应用程序的服务器)。然后,利用可编程的 web 作为用于构建 web 2.0 应用程序的 API。这些 API 的示例都是公开可访问的 web 服务,如 Flickr、Google Maps 和 Digg。
对于创建 web 应用程序来说,Linux®、Apache、MySQL 和 PHP (LAMP) 应用程序开发堆栈是一种流行的、免费的、快速的并且容易的方法。该方法有助于降低创建有价值的 web 应用程序的门槛,从而为 web 开发人员提供了一个更广阔的基础。LAMP 堆栈是当前的新一代技术,它始终运行于大部分 Internet 中。
web 就是您的新平台,这个概念建立在一个前提条件的基础之上,即大部分基础设施已经建立,并且当前存在于 web 中。新的 web 2.0 应用程序仅需要利用现有的可用宿主,而无需使用传统的 API 层,如 Java™ 平台、Enterprise Edition (Java EE) 或者 Microsoft® .NET,您现在可以使用由现有 web 应用程序(如 Flickr 和 Google Map)公开的基于 web 的 API(或者 web 服务)来构建应用程序。这些 web API 的流行使您避免了创建某些特性的工作,从而减轻了您的工作负担,所以您可以更快地构建您的应用程序。
此外,您可以集成两个或者更多的 web API,以创建某种新的或者独特的特性,这被称为 mashup。例如,您可以使用 www.housingmap.com 在地图(由 Google Maps 提供的)中显示房地产信息(由 Craigslist 提供的)的方式,以便进行可视化导航,并筛选给定位置的房地产信息。
图 2 和图 3 对 web 2.0 的基础设施进行了分解。
图 2. web 2.0 堆栈中的关键技术
图 3. 传统的应用程序开发堆栈与可编程 web 的对比
然后,可以使用某些技术(如 Ajax)来调用这些基于 web 的 API,这些技术为浏览器客户端通过 JavaScript(包括同步方式或者异步方式)与服务器进行通信提供了相应的方法。这意味着,应用程序并不需要在客户端每次与服务器通信的时候都重新加载整个页面。
您可以使用 JavaScript Object Notation (JSON) 实现对象的序列化和反序列化,使得能够在浏览器客户端和服务器之间,通过 Ajax 来发送它们。与 Ajax 非常相似,您还可以使用 SOAP 规范和代表性状态传输(Representational State Transfer,REST)方法来提供在应用程序之间传输数据的行业标准方式。经常可以看到,现有的服务提供了 SOAP、Ajax 和 REST 接口。
REST 是一种设计服务的风格,它使用了针对 URL 可编址实体的简单 HTTP 操作。
一些其他的技术,如 Dojo(它是一个可以节约时间的、开放源代码的、跨浏览器的动态 HTML (DHTML) 工具包)和浏览器扩展,如 Greasemonkey 和 Firebug(允许您编写扩展浏览器、定制 web 页面外观或功能的脚本),现在都可以利用 Ajax,并提供丰富的用户界面。例如,您可以为 Facebook 安装一个 Greasemonkey 脚本,当您将鼠标指针移动到缩略图上时,完整的图片将自动地出现在浏览器窗口的左侧。这使得查看图像既快速又方便,并且丰富了用户的体验。
Microformat 允许您使用 XHTML 在 (X)HTML、Atom、RSS 或者任意 XML 文档中表达语义信息。microformat 是一种机器和人类都可读的应用程序,比如,浏览器可以自动地发现它们,并对它们所描述的信息进行操作。例如,如果您希望在文档中嵌入一张名片,那么您可以使用 hcard microformat(有关更多的信息,请参见参考资料),它将使用 XHTML 来描述您的名片(请参见图 4)。
图 4. hcard microformat 的示例
最后,RSS 和 Atom feed 现在已经不仅仅用于订阅 Blog 和新闻 feed,我们还将其作为一种潜在的方法,用以简化特定的、以内容为中心的应用程序体系结构。Atom 规范是一种最新的发展(其思想最初来自于 RSS),并且提供了一些有价值的特性,如 Atom Publishing Protocol (APP),它允许您发布要添加到 feed 的信息。如果事件驱动的体系结构现在是 SOA 框架中的组成部分,那么可以将 feed 看作是服务范例中的部分,并对其进行充分利用。
在本文中,您了解了 web 2.0 应用程序中包含的核心模式、概念和关键技术。在第 2 部分中,您将了解企业中的 IT,并研究 mashup 生态系统如何允许您构建环境应用程序,以改进当前技术水平。