引言

你所了解的计算正面临着变革：你的应用程序和文件将会从桌面转移到云中。

我正在谈论云计算，在这一计算模式中，应用程序和文件存放在一个由数千台计算机和服务器组成的“云”中，这些计算机和服务器都联接在一起，并且可以通过因特网进行访问。利用云计算，你现在所做的一切事情都是基于web的而不是基于桌面的。你可以利用任何一台连接到因特网的计算机来访问你所有的应用程序和文件。

云计算将会对你的工作方式带来哪些影响呢？首先，你再也不必被绑定到一台唯一的计算机上。由于云总是可以通过web访问，因而你可以随时随地的工作。其次，云计算有利于群组协作，这是因为无论身在何处，所有的小组成员都可以使用相同的应用程序和文件。

尽管云计算听起来似乎遥不可及，但极有可能你已经使用了云应用。如果你正在使用Gmail或Hotmail一类的基于web的电子邮件程序，那么你就是在使用云计算。如果你正在使用谷歌日历或苹果MobileMe一类的基于web的应用程序，那么你也是在使用云计算。如果你正在使用Flickr或Picasa网络相册一类的文件或照片共享网站，那么你也是在使用云计算。云计算是属于未来的技术，然而从现在开始已经可供人们使用。

云计算如何工作？对于计算机的使用方式，云计算究竟意味着什么？哪些应用是最顶级的云计算应用？所有这些都是很好的问题，我将在本书——《云计算：改变在线工作和协作方式的基于Web的应用》——中给出答案。虽然我不打算回答你心中可能存有的每一个疑问（尤其是那些过于技术性的问题），但我会尽量给云计算现象一个足够坚实的概括性说明并向你介绍一些广受人们欢迎的云应用程序——特别是那些有利于群组协作的程序。

这是云计算真正光芒四射的领域。无论你是要与家庭成员分享照片，还是协调社区组织中的志愿者，或者管理大型组织中一个涉及诸多方面的项目，云计算都可以帮助你与其他群组成员进行协作和沟通。当你读过这本书之后，你将会对云计算的工作方式有一个更为全面的了解。此外，请相信我的这一观点——如果你需要进行协作，那么云计算是正确的选择。

本书是如何组织的

云计算实际上是一个相当简单的概念，但它也是一个有着很多变种和分支的概念。为了帮助你更好地了解云计算是什么，云计算能做什么，我把这本书分为了四个主要部分：

? 第一部分，“认识云计算”，是你开始学习云计算的地方。我将解释云计算是如何工作的，同时指出哪些类型的用户能够从这种新技术中获得最好的受益。

? 第二部分，“云计算为人人”，通过三个不同的场景讨论了云计算能够为用户所带来的实际的好处：家庭，社区和大型组织。

? 第三部分，“使用云服务”，概括介绍了各种不同类型的基于web的应用。你将会了解到用于日程安排，联系人管理，项目管理，文字处理，演示文稿以及其他一些关键应用的云服务。

? 第四部分，“云计算范畴以外的在线协作”，将跳出严格的云计算来观察其他以因特网为基础的群组协作工具，这些工具包括web电子邮件，即时消息，社会网络，在线群件，博客和维基（wikis）。

总而言之，本书的20个章节为云计算提供了一个极好的综述。如果你现在还不确定云计算是什么，那么当你读完这本书的时候，你就会明白。

译者前言

计算技术已经深刻的改变了我们的工作，学习和生活，成为继理论和实验之后人类认识世界和改造世界的第三大利器，电子和通信技术的飞速发展和进一步融合以及体系结构的进步更是将其提升到前所未有的高度。

云计算的最终目标是将计算作为一种公共设施(utility)提供给广大用户，使人们能够像使用水、电、煤气和电话那样使用计算资源。实际上，早在云计算出现之前人们就开始了这方面的实践。在过去的数年间，人们所提出的计算范型(paradigm)包括网格(grid)计算、服务(service)计算、对等(P2P)计算等。在云计算中，我们都能看到这些技术的影子。例如，云服务提供商可能使用网格或对等技术来将大量的服务器或个人计算机互联到一起对外提供服务，而服务的提供也许要用到服务技术。然而，云计算并不是对现有技术的简单整合，与已有的实践相比，云计算引入了全新的以用户为中心的理念，具有节省成本、高可用、易扩展等众多优点，因此有望最终为人们所接受。

今天，尽管云计算技术尚处在早期阶段，面临诸多重大挑战，但谷歌、微软、IBM、惠普等IT巨头纷纷表明了自己的意愿或推出了相应的计划。著名的市场调查公司IDC预计，到2012年，用于云服务的花费将从2008年的160亿美元增加到420亿美元。其他机构，如美林证券、摩根史坦利等也发表了类似的预测。考虑到上述因素以及当前严峻的经济形式，《云计算：改变在线工作和协作方式的基于Web的应用》一书的引入与翻译无疑是非常及时而又有意义的。我们很荣幸能够参与到这一工作中，为云计算在中国的研究与推广贡献自己的一份微薄之力。

就我们所知，《云计算：改变在线工作和协作方式的基于Web的应用》是国际上第一本系统阐述云计算的书籍。尽管并没有涉及云计算的很多技术细节，但它对云计算的来龙去脉、当前的实践做了全面而又精辟的概括。更为重要的是，它将人们的注意力吸引到协作支持层面，而这一点在众多讨论云计算的文章中是缺失的。本书言简意赅，实例丰富，我们相信，无论是想要从事云计算研究/开发的初学者/IT人员还是云服务的最终用户，他们都能从本书中找到自己想要的东西。

本书的翻译工作分工如下：史美林负责组织全书的翻译工作，审校全书翻译稿并参与了第10章的部分翻译。姜进磊负责第1-11章及引言等内容的翻译，孙瑞志负责第12-17章的翻译，向勇负责第18-20章的翻译。

在翻译过程中，我们力求正确贴切，但限于水平和时间限制，疏漏和错误之处在所难免，敬请批评指正。

第一章 超越桌面：云计算导论（1）

本章导读

? 云计算：是什么和不是什么

? 从协作到云：云计算简史

? 网络就是计算机：云计算如何工作

? 云中的公司：云计算现状

? 云计算为什么重要

在一个几乎每天都能看到新技术涌现和消失的世界中，有一种新趋势有望长久存在下去。这一趋势就是所谓的云计算，它将改变你使用电脑和因特网的方式。

云计算预示着我们储存信息和运行应用程序的方式将发生重大变化。程序和数据不再运行和存放在个人台式计算机上，相反，一切都托管到“云”中——一个云状的、可通过因特网访问的、由个人计算机和服务器构成的集合。云计算能够让你从世界上的任何地方访问你所有的应用程序和文件，你不再受到桌面的限制，因而使得异地群组成员之间的协作变得更加容易。

从计算方式来说，云计算的出现相当于一个世纪以前的电力革命。在电力公用设施出现之前，每个农场和企业都利用各自的发电机单独发电。电网建成之后，农场和企业关闭了自己的发电机，改为从公用企业购买电力，其价格比他们自己生产更低（可靠性更高）。

随着云计算成为主流，相同类型的革命也将出现。当我们开始期待云计算所承诺的通用访问，24/7 的可靠性和无处不在的协作，今日主流的、以台式机为中心的计算方式注定会走向没落。

这是未来的方式。

云计算：是什么和不是什么

利用传统的桌面计算，你需要在自己所拥有的每台电脑上都运行一份软件程序。你所创建的文档存放在创建他们的电脑上。虽然该文档可以被同一网络上的其他计算机访问，但是这些文档不能被该网络之外的其他计算机访问。

整个舞台以PC为中心。

利用云计算，你所使用的软件程序并不是运行在你的个人电脑上，而是存放在能够通过因特网访问的服务器上。即使你的计算机崩溃了，该软件仍然可以供其他人使用。对于你所创建的文档同样如此，他们存放在能够通过因特网访问的一组服务器中。任何具有权限的人不仅可以访问这些文档，而且可以对这些文档进行实时编辑和协作。与传统的计算模式以PC为中心不同，云计算模式是以文件为中心的。至于你使用哪一台电脑来访问文档，这一点都不重要。

以上只是一个简单的说明。让我们更详细地看一下云计算究竟是什么，与之同样重要的一个问题是，云计算不是什么。

云计算不是什么

首先，云计算不是网络计算。在网络计算中，应用/文档存放在公司的一个单独的服务器上，通过公司的网络进行访问。云计算要比上述内容宽泛得多。它涉及多个公司，多台服务器和多个网络。此外，与网络计算不同，云服务和存储可以从世界上的任何地方通过因特网连接进行访问，而网络计算只能通过公司的网络进行访问。

云计算也不是传统的外包，即一个公司将自己的计算服务委托（分包）给一家外部的公司。虽然外包公司可能会存放一个公司的数据或应用程序，但那些文档和应用程序仅供该公司的员工通过公司内部的网络进行访问，而不是面向整个世界，通过因特网进行访问。

因此，尽管表面上看起来很类似，网络计算和外包不是云计算。

云计算是什么

云计算定义的关键在于“云”这个词本身。对我们而言，云是一组数量众多的、互连到一起的计算机。这些计算机可以是个人电脑或网络服务器，它们可以是公共的或私有的。

例如，谷歌提供的云由微型的个人电脑和大型的服务器组成。谷歌的云是私有的（即谷歌拥有它），但它可公开访问（对谷歌的用户） 。

这种计算机云能延伸到单独的公司或企业之外。云所提供的应用和数据可广泛的用于许多用户，跨企业和跨平台。对云的访问是通过因特网完成的。任何授权用户都可以从任何一台计算机上、通过任一因特网连接访问这些文档和应用。更进一步讲，对用户而言，云背后的技术和基础设施是不可见的。至于云服务是基于HTTP、HTML、XML、JavaScript还是其他特定的技术，从表面上看并不明显（而且在大多数情况下也不重要）。

让我们仔细研究一下云计算先锋之一的谷歌是如何看待云计算的，这将会对我们认识云计算有所帮助。从谷歌的角度来看，云计算有6个关键的特性：

? 云计算是以用户为中心的。作为一个使用者，一旦你连接到云中，那么那里存放的任何东西——文件、消息、图片、应用等等——都将变成你的。此外，不仅数据是你的，而且你还可以与他人共享。实际上，在云中访问你的数据的任何设备也都成为你的。

? 云计算是以任务为中心的。问题的焦点不再是应用程序和应用程序能做什么，而是你需要做什么和应用程序如何完成你的任务。传统的应用程序——文字处理，电子表格，电子邮件等等——与他们所创建的文件相比，已经变得越来越不重要。

? 云计算是强大的。?中数百或数千台电脑连接在一起所形成的巨大的计算能力是远非一台单独的台式机所能比拟的。

? 云计算是易于访问的。由于数据存储在云里，用户可以即时的从多个库中检索更多的信息。与使用台式机不同，你不再受到单一数据源的限制。

? 云计算是智能的。随着各种数据都被存储到云中的计算机上，为了更智能的访问这些信息，数据挖掘和分析是必不可少的。

? 云计算是可编程的。大量需要利用云计算的任务都必须是自动化的。例如，为了保护数据的完整性，存储在云中某台计算机上的信息必须被复制到云中的其他计算机上。这样，当那台计算机离线时，云程序就会自动将那台计算机的数据重新分配到云中的一台新的计算机上。

了解了所有这些定义，那么在现实世界中，云计算是由什么构成的呢？

正如你将通过本书所了解到的，目前已经有大量web托管的、可通过因特网访问的、支持群组协作的应用可供人们使用，而且更多的应用还在不断出现。现在最好和最流行的云计算应用的范例也许是谷歌应用家族——谷歌文档和电子表格，谷歌日历，Gmail，Picasa等。所有这些应用都运行在谷歌的服务器上，可供任何具有因特网连接的用户访问，可用来支持来自世界任何角落的群组协作。

总之，云计算实现了从计算机到使用者，从应用到任务，从孤立的数据到可以随处访问、可与任何人共享的数据的转变。使用者可以不再从事数据管理的任务；他甚至无须记住数据的位置。所有这些情形都是因为数据在云里，因而可以立即被该用户和其他授权用户使用。

注意

对于云计算的定义，开发者和信息技术人员与最终用户可能存在些许不同。对那些开发和管理计算机系统的人来说，云计算意味着服务器能力在水平方向上的可扩展性；技术层面面临的挑战是：开发操作系统和应用程序来管理运行过程中的规模变化，同时保持相应的机制对最终用户不可见。

第一章 超越桌面：云计算导论（2）

从协作到云：云计算简史

云计算的前身是客户机/服务器计算和对等的分布式计算。他们所关心的共同问题都是集中的存储如何促进协作和多台电脑如何一起工作从而提高计算能力。

客户机/服务器计算：集中式的应用和存储

在计算的初期阶段（大约1980年之前），一切都按照客户机/服务器模式运转。所有的应用软件，所有的数据，所有的控制都位于大型的电脑主机上，这些电脑主机通常被称为服务器。如果用户想访问特定的数据或运行特定的程序，他必须连接到主机上，获得适当的权限，然后才能执行他的业务。从根本上说，用户是从服务器“租用”程序或数据。

用户通过计算机终端（有时也称为工作站或客户端）连接到服务器。这台计算机有时也被称为哑终端，因为它并不具有大量的（如果有的话！）内存，存储空间或处理能力。它仅仅是一个用来把用户连接到主机，使得用户能够使用主机的装置。

用户只有被授予相应的权限之后才能访问主机。通常信息技术（IT）人员没有随意分发访问权限的习惯。即便是在主机上，处理能力也是非常有限的，而IT人员则是这些能力的保护者。访问不是即时的，两个用户也不能在同一时间访问相同的数据。

除此之外，无论IT人员提供给他们什么东西，用户都必须接受而不能有任何变化。想要定制一份只显示部分正常信息的报告吗？办不到。想要创建一份使用新数据的新报告吗？同样办不到。虽然IT人员可以做到，但根据他们的日程安排，这可能需要等待数周的时间。

事实是，当多人共用一台计算机，即使该计算机是一个巨大的主机，你也不得不等待你的次序。需要重新生成财务报告吗？没问题——如果你不介意等到下午或明天早晨。在客户机/服务器环境中，即时访问并非总是可行的，人们的需求很少能够马上得到满足。

因此，尽管客户机/服务器模式也提供了类似的集中存储，但它不是云计算，因为它不是以用户为中心的。使用客户机/服务器计算，所有的控制都位于主机上，受单一主机的管理。这不是一个有利于用户的环境。

对等计算：资源共享

如你所想，使用客户机/服务器系统是一种“紧急与等待”的体验。客户机/服务器系统的服务器部分会产生一个巨大的瓶颈。所有计算机之间的通信不得不首先通过服务器，然而这种做法效率可能是低下的。

无须经由服务器，将一台计算机连接到另一台计算机，这一显而易见的需求导致了对等（P2P）计算的发展。P2P计算定义了这样一种网络结构，其中的每台电脑都有相等的能力和责任。这同传统的客户机/服务器的网络架构形成了鲜明的对比，在后一种架构中，一台或多台计算机专门用来为其他计算机提供服务。（这种关系有时也被称为主/从关系，中央服务器是“主”，而客户计算机是“从”。）

P2P是一个平等的概念。在P2P环境中，每台计算机既是客户机又是服务器，没有主从之分。P2P把网络上的所有计算机都看作是对等的，因而使得直接的资源和服务交换成为可能。无需中央服务器的存在，因为任何一台电脑在需要的时候都能充当这一角色。

P2P也是一个分散的概念。控制是分散的，所有电脑平等运行。内容也分散在不同的电脑上。没有集中的服务器用来承载可用的资源和服务。

也许最著名的P2P实现就是因特网。今天，许多用户都已经忘记（或根本未曾知道），根据最早的阿帕网（ARPAnet）的想法，因特网最初被设计为一个对等的系统，用来共享分布在美国各地的计算资源。不同的阿帕网站点——总数并不是很多——不是作为客户端和服务器，而是作为对等方连接在一起。

早期因特网的P2P特性可以通过新闻组（Usenet）网络来做最好的说明。新闻组，创建于1979年，是一个由计算机构成的网络（通过因特网访问），每台计算机都提供整个网络的内容。信息在对等的计算机之间进行传播，无论用户连接到哪一台新闻组服务器上，都可以获得张贴到每个单独的服务器上的所有（或几乎所有）的信息。虽然用户到新闻组服务器的连接具有传统的客户机/服务器特性，但新闻组服务器之间的关系肯定是P2P的，这就是今日云计算的雏形。

当然，并非因特网的每一部分都具有P2P特性。随着万维网的发展，计算模式由P2P重新回到客户机/服务器模式。在web上，每个网站都由一组计算机提供服务，网站的访问者使用客户端软件（web浏览器）来访问它。几乎所有的内容都是集中的，所有的控制也是集中的，在此过程中，客户没有任何自主权或控制能力。

分布式计算：提供更多的计算能力

P2P模式的一个最重要的方面就是分布式计算，某个网络甚至整个因特网上的空闲个人电脑被组织起来，用来为大规模的、处理器密集型的项目提供计算能力。这是一个简单的概念，所有的?切都围绕着计算能力在多台计算机之间的共享。

一台每天运行24小时，每周运行7天的个人电脑能产生巨大的计算能力。然而，大多数人并不会以24/7的方式使用自己的计算机，因而计算机资源的很大一部分都未得到有效利用。分布式计算能够使用这些资源。

当一台计算机用于分布式计算项目时，为了在电脑空闲期间执行各种处理任务，需要在机器上安装软件。空闲时间处理的结果定期上传到分布式计算网络中，与来自项目中其他计算机的类似结果进行合并。只要有足够的计算机参与，上述做法的效果足以比拟更大的主机和超级计算机的处理能力——对于某些非常庞大和复杂的计算项目而言，这是必需的。

例如，基因研究需要大量的计算能力。采用传统的手段，可能需要数年时间才能解决基本的数学问题。通过将数千（或百万）台个人电脑连接在一起，将更多的计算能力用于同样的问题，很快就能得到结果。

分布式计算的历史可以追溯到1973年，当时施乐公司帕洛阿尔托研究中心（Xerox PARC）将实验室里的多台计算机连接到一起并开发了蠕虫软件来漫游网络，寻找闲置的资源。一个更为实用的分布式计算应用出现在1988年，当时DEC（数字设备公司）系统研究中心的研究人员开发了一款软件，用来向实验室内的工作站分发大数分解任务。到了1990年，一个约100个用户的小组利用这一软件，完成了一个100位数的因数分解。到1995年，该应用已扩展到web，用于130位数的因数分解。

分布式计算与因特网相结合的时间并没有多久。第一个主要以因特网为基础的分布式计算项目是发起于1997年的distributed.net，它利用数千台个人计算机来破解密码。更大型的项目是发起于1999年5月的搜寻地外文明的SETI@home计划，它连接了数百万台个人计算机，用来搜寻太空智能生命。

第一章 超越桌面：云计算导论（3）

许多分布式计算项目是在大型企业内部进行的，利用传统的网络连接形成分布式计算网络。其他更大的项目利用日常因特网用户的计算机，计算通常离线进行，然后通过传统的因特网连接每天上传一次。

协同计算：作为一个群组工作

从早期的客户机/服务器计算再到P2P的发展，始终存在这样的需求——让多个用户一起从事同一个基于计算机的项目。这种类型的协同计算就是云计算背后的驱动力，它已经存在超过10年了。

早期的群组协作综合利用几种不同的P2P技术，目的是让多个用户能够实时的、在线合作完成小组项目。

要在项目上合作，用户必须首先能够相互交谈。在今天，这指的是即时消息系统，除用于文本交流外，通常还具有可选的音频/电话和视频能力，用来进行基于语音和图像的交流。大多数协作系统为全功能的多用户视频会议提供了一系列的音频/视频选项，。

此外，用户必须能够共享文件并让多个用户同时在相同的文档上开展工作。白板也很常见，在企业和教育环境中更是如此。

注意

白板提供了一个对所有群组成员可见的虚拟写字板，允许一个或多个用户在上面“画画”。

早期的群组协作系统既有相对简单的（如Lotus Notes和微软的NetMeeting），也有极其复杂的（如Groove Networks系统中的积木结构）。多数系统是针对大型企业的，只能在公司专用的网络上运行。

云计算：协作的下一个步骤

随着因特网的发展，群组协作没有必要限制在单一的企业网络环境。来自公司内多个地点或来自多个组织的用户需要进行跨公司和跨地域界限的项目合作。要做到这一点，项目必须被安置在因特网“云”中，从任何能够上网的地点访问。

以云为基础的文档和服务的概念随着大型服务器农场（如谷歌和其他搜索公司拥有的）的发展而迅速发展。谷歌已经有了一组服务器，用于支持大量的搜索引擎。为什么不能使用相同的计算能力来驱动一组基于web的应用，并支持新的基于因特网的群组协作呢？

这就是已经发生的，尽管谷歌并不是唯一的提供云计算解决方案的公司。在基础设施方面， IBM，Sun系统公司和其他大的供应商正在提供建设云网络的必要硬件。在软件方面，许多公司正在开发基于云的应用和存储服务。

今天，人们使用云服务和云存储来创建，共享，查找和组织各种不同类型的信息。明天，这一功能不仅仅对计算机用户，而且对任何连接到因特网的设备——移动电话，便携式音乐播放器，甚至汽车和家用电视机——的用户可用。

注意

云计算是一个相对较新的术语，在2007年为人们所熟知，用于描述基于因特网的分布式计算及其相关应用。

网络就是计算机：云计算如何工作

Sun微系统公司的口号是“网络就是计算机”，这一口号很好的描述了云计算的工作方式。从本质上讲，计算机网络的职能类似一###立的计算机，主要用来在因特网上向用户提供数据和应用程序服务。该网络存在于由IP地址构成的“云”——也就是我们所知道的因特网中，对外提供大规模的计算能力和存储能力，从而使得广域范围内的群组协作成为可能。

以上只是一个简单的解释。接下来让我们仔细看一下云计算是如何工作的。

认识云架构

云计算的关键是“云”——一个大规模的、由服务器甚至是个人计算机构成的网络，这些服务器和个人计算机在网格环境中互联在一起。这些计算机并行运行，各自的资源结合起来形成足可比拟超级计算机的计算能力。

注意

云计算的一个主要好处就是从成本相对较低的个人电脑和服务器中获得大量的计算能力。当你利用云的能力时，只需支付PC的价格就能获得超级计算的能力。

那么，究竟什么是“云”呢？简而言之，云就是一组可以通过因特网公开访问的计算机和服务器。这些硬件通常归第三方所有，放在一个或多个数据中心里联合运营。这些机器能够运行各种操作系统，重要的是机器的处理能力而不是桌面的样子。

如图1.1所示，个人用户利用自己的个人电脑或便携设备，经由因特网连接到云中。对这些个人用户而言，云是一个独立的应用、设备或文件。云中的硬件（以及管理这些硬件连接的操作系统）是不可见的。

图1.1 用户如何连接到云中

Cloud Servers：云服务器

尽管云架构确实需要一些智能化管理来连接所有这些电脑并处理众多用户的任务，但它看上去非常简单。如同你在图1.2中看到的，所有的一切均始于个人用户见到的前端界面。首先，用户通过界面选择一个任务或服务（启动一个应用程序或打开一个文件）。而后，用户的请求被发送给系统管理，系统管理找出正确的资源并调用合适的系统服务。这些服务从云中划分出必要的资源，加载相应的web应用程序，创建或打开所要求的文件。web应用启动之后，系统的监测和计量功能跟踪云的使用，确保资源分配和归属于合适的用户。

图1.2 云计算系统的幕后架构

User：用户；User Interface：用户接口；System Management：系统管理

Provisioning Services: 对外服务；Cloud Servers：云服务器；

Web Application：网络应用

正如你所看到的，云计算这一概念的关键就是许多管理任务的自动化。如果一个系统需要人来管理资源分配的过程，那么它就不是云。这方面的一个例子就是二十一世纪版的老式数据中心为基础的客户机/服务器计算。要使它变成云，手动管理必须被自动化流程所取代。

认识云存储

云计算的一个主要用途就是存储数据。利用云存储，数据被存放到多个第三方的服务器上，而不是像传统的网络数据存储那样存放在专用的服务器上。

存储数据时，用户看到的是一个虚拟的服务器，也就是说，看起来数据好像是以特定的名称存放在某一特殊的地方，但在现实中，那个地方并不存在。这只是一个假名，用来指示云中划分出来的虚拟空间。实际上，用户的数据可以存储在构成云的任何一台或多台电脑上。因为云动态的管理可用的存储空间，实际的存储位置可能每天甚至每分钟都不相同。但是，尽管位置是虚拟的，用户所看到的数据位置是“固定的”，事实上，他可以管理自己的存储空间，就好像它是连接到自己的电脑一样。

云存储同时具有经济和安全方面的优势。从经济上说，虚拟的云资源通常比那些连接到个人电脑或网络的专用物质资源更便宜。至于安全，由于数据被复制到多台物理机器上，存储在云里的数据不受意外删除或硬件崩溃的困扰。由于始终保留数据的多个副本，即使一台或多台机器进入脱机状态，云仍然能够继续正常运行。如果一台机器崩溃了，数据就会被复制到云中的其他机器上。

第一章 超越桌面：云计算导论（4）

认识云服务

通过云计算提供的任何基于web的应用或服务都称之为云服务。云服务可包括从日历和联系人应用到文字处理和演示的任何东西。几乎今天所有从事大型计算的公司，从谷歌到亚马逊到微软，都在开发各种类型的云服务。

利用云服务，应用程序本身就处在云中。个人用户在因特网上运行应用，通常是通过web浏览器。浏览器访问云服务，在浏览器的窗口中打开一个应用实例。一旦启动，基于web的应用操控和运行就像一个标准的桌面应用程序。唯一不同的是，应用程序和工作文档驻留相应的云服务器上。

云服务具有诸多优势。如果用户的电脑崩溃了，它既不会影响到宿主应用程序，也不会影响到打开的文件。此外，个人用户可以从任何地点使用任何PC访问他的应用程序和文件。当他从办公室回到家或更偏远的地方，他不必随身携带每个应用程序和文件的副本。最后，因为文件都放在云里，用户可以利用任何可用的因特网连接在同一文件上进行实时协作。文档不再以机器为中心。相反，他们对于授权的用户总是可用。

云中的公司：云计算现状

目前，我们正处在云计算革命的初期阶段。尽管已经有许多可用的云服务，更多的有趣的应用仍在开发之中。也就是说，今天的云计算正在吸引着整个计算行业最优秀、最大的企业，他们都希望建立基于云来赢利的商业模式。

正如本章前面讨论过的，也许目前正在拥抱云计算模式的最引人注目的公司是谷歌。正如你将通过本书所看到的，谷歌提供了一组功能强大的基于web的应用，他们都通过其云架构对外服务。无论你是需要基于云的文字处理（谷歌文档）、演示软件（谷歌演示文稿）、电子邮件（Gmail），还是日历/日程安排功能（谷歌日历），谷歌都有提供。而且最重要的是，谷歌为它的所有基于web的应用都提供了相互之间的接口，为了用户的利益，这些云服务相互关联。

其他大公司也参与了云服务的开发。例如，微软提供了Windows Live web应用套件以及Live Mesh计划，该计划承诺将各种类型的设备，数据和应用连接到一个公共的基于云的平台。亚马逊推出了弹性计算云（EC2）服务，用来为应用开发人员提供以云为基础的可调整的计算能力。IBM已经成立了一个云计算中心，用来向客户提供云服务和研究。许多较小的公司也都推出了自己的基于web的应用，他们主要（但不完全）利用云服务的协作特性。

正如我们通过这本书，我们会研究其中的许多公司和他们的产品。你现在需要知道的所有东西就是：云计算具有远大的前途，每个人都在追赶这一潮流。

云计算为什么重要

云计算为什么重要？无论是对开发者还是对最终用户，云技术都意味着很多东西。

对于开发人员来说，云计算提供了更多的存储和处理能力来运行他们开发的应用。云计算也带来了信息获取，数据处理和分析以及从世界上任何地方、任何地点连接人和资源的新方法。从根本上说，它消除了开发的局限，利用云计算，开发者再也不用忍受有限物理资源的约束。

对于最终用户来说，云计算提供的好处更多。一个使用网络应用的人再也不会被完全绑定到一台PC，一个地点或一个网络。无论他在何处，只要他想，他就能访问应用程序和文件。再也不必害怕计算机崩溃的时候丢失数据。无论用户的机器出现什么状况，放在云中的文件始终存在。其次还有利于群组协作。来自世界各地的用户能够实时的在相同的文件，应用和项目上进行协作。这是一个由云计算启动的全新的协同计算的世界。

云计算完成这一切的成本更低，因为与传统的网络计算相比，云能更有效地共享资源。使用云计算，硬件不必在物理上紧邻公司的办公室或数据中心。云基础设施可以位于任何地方，包括而且尤其是那些房地产和电力成本更低的地区。此外， IT部门不必关心高峰负荷能力，因为高峰负荷可分散到云里的外部设备中。而且，由于额外的云资源总是可用，企业不再需要购买设备用于不常见的计算密集任务。如果你需要更多的处理能力，云总能提供，而且价格更划算。

云计算和Web 2.0：独立发展？

如果你已经十分熟知云计算的概念，那么你大概也听说过一类乍听起来同云计算类似，但是称之为Web 2.0的事物。事实上，云计算同Web 2.0类似。从许多方面来讲，其中的一个是另外一个的子集。

究竟什么是Web 2.0？在我看来，这是一个有点时髦的词，不同的人有不同的理解。蒂姆?奥莱理，所谓的Web 2.0教父，将其定义为“网络作为平台，贯穿所有连接的设备”。其他有些人将Web 2.0看作从信息孤岛（Web 1.0）到互联计算平台的一个转型，从用户的感觉来看，该平台如同本地可用的软件一样运行。还有其他一些人利用协作术语来定义Web 2.0，因为所有的网站都从用户的行动中获?其价值。

Web 2.0的这些定义听起来很像没有技术支撑的云计算。也就是说，云计算是通过其架构和基础设施（互联的计算机/服务器构成的作为一个整体运行的网格）来定义的，而Web 2.0是通过使用者如何看待系统/使用系统提供的服务来定义的。换言之，云计算是关于计算机的，而Web 2.0是关于人的。

或者，如蒂姆?奥莱理所说的那样：

云计算专指将因特网作为一个计算平台使用，而Web 2.0，如同我所定义的，试图探究和解释该平台的业务规则。

也许云计算和Web 2.0只是看待相同现象的两种不同的方式。或者，同样可能，也许云计算是一种特定的Web 2.0技术。无论如何都要记住，这两个词大概兴起在计算演化表上的同一点，这两个概念对最终用户承诺类似的结果。

最后，将谷歌文档或微软Live Mesh之类的事物看作是云服务还是Web 2.0应用抑或两者兼而有之并不重要，重要的是技术如何影响用户。在这方面，云计算和Web 2.0都为相关人员带来了实实在在的好处。

第三章 开发云服务（1）

本章导读

? 为什么开发基于网络的应用？

? 云服务开发的正反两面

? 云服务开发的类型

? 了解云服务开发服务和工具

我们中的大多数人从用户的角度考虑云计算，关注那些因云而存在的基于web的应用。但云计算也给软件开发者提供了很多东西。开发者现在可以利用云计算的能力和影响开发基于web的应用。

从这方面来说，许多著名的公司，包括亚马逊和谷歌都在云服务开发工具方面投入了大量的资源。继续读下去，来更多的了解什么可用以及什么将要可用。

为什么开发基于web的应用？

一个典型IT部门的需求令人胆怯：他们必须为公司内的所有用户提供足够的计算能力和数据存储。当然，这些必须在规定的预算内完成。存在的困难是，满足峰值需求或为新用户增加容量通常会导致IT预算猛增。

对多数公司而言，增加那些只在少数时间用到的能力在财务上是不明智的。IT部门需要的是一种方法来增加能力或添加性能而无需投资新服务器、互连设备或许可新的软件。云计算正是应这一需求而生。

以集中式基于web的应用形式出现的云服务对IT专业人员也有吸引力。云应用的实例与安装在每个用户台式机上的类似软件的单个拷贝相比更便宜更易于管理。升级一个云应用只需要做一次，而升级传统的软件需要针对每一台安装该软件的个人电脑进行。另外，我们还具有云带来的协作能力，而利用传统的桌面应用，这很难做到。

云服务开发的优势对那些没有预算或资源开发大规模应用的小企业尤为明显。通过将本地开发的web应用部署到云中，小企业无需花钱来购买昂贵的硬件设备来运行同样的软件。

让我们面对这一点，大多数小公司没有员工、资源、硬件或预算来开发和维护他们自己的应用，或来处理维护安全环境所面临的种种困难。尽管他们可以外包软件开发和运行，将这些应用转移到云中，公司不再需要投资本地宿主系统，解放了员工和资源以专注于自己业务的日常运行。

总之，投资云服务开发所带来的收益多多。一个开发自己的基于web的应用的公司在得到功能的同时还降低了业务费用。云的聚合能力伴随着更低的软件购买和管理费用。

云服务开发的正反面

为什么选择利用云服务模型来开发新应用？有几条充分的理由这样做，同时也有几个理由也许需要当心。

云开发的优势

云开发的优势之一就是规模经济。利用云计算供应商提供的基础设施，同在单一的企业内开发相比，开发者能够提供更好，更便宜和更可靠的应用。如果需要，应用能够利用云的全部资源而无需要求公司投资类似的物理资源。

说到成本，由于云服务遵循一对多的模型，与单独的桌面程序部署相比，成本极大的降低了。云应用通常是“租用的”，以每用户为基础计价，而不是购买或许可软件程序（每个桌面一个）的物理拷贝。它更像是订阅模型而不是资产购买（和随之而来的贬值）模型，这意味着更少的前期投资和一个更可预知的月度业务费用流。

IT部门喜欢云应用是因为所有的管理活动都经由一个中央位置而不是从单独的站点或工作站来管理。这使得IT员工能够通过web来远程访问应用。其他的好处包括用需要的软件快速装备用户（称为“快速供应”），当更多的用户导致系统重负时添加更多计算资源（自动扩展）。当你需要更多的存储空间或带宽时，公司只需要从云中添加另外一个虚拟服务器。这比在自己的数据中心购买，安装和配置一个新的服务器容易的多。

第三章 开发云服务（2）

对开发者而言，升级一个云应用比传统的桌面软件更容易。只需要升级集中的应用程序，应用特征就能快速顺利的得到更新，而不必手工升级组织内每台台式机上的单独应用。有了云服务，一个改变就能影响运行应用的每一个用户，这大大的降低了开发者的工作量。

云开发的不足

也许人们所意识到的云开发最大的不足就是给所有基于web的应用带来麻烦的问题：它安全吗？基于web的应用长时间以来就被认为具有潜在的安全风险。由于这一原因，许多公司宁愿将应用，数据和IT操作保持在自己的掌控之下。

也就是说，利用云托管的应用和存储在少数情况下会产生数据丢失。尽管可以说，一个大的云托管操作可能比一般的企业有更好的数据安全和冗余的工具。然而，在任何情况下，即便是感知到的来自关键数据和服务异地托管的安全威胁也可能阻止一些公司这么做。

另外一个潜在的不足就是云计算宿主离线所导致的事件。尽管多数公司说这是不可能的，但它确实发生了，亚马逊的EC2业务在2008年2月15日经受了一次大规模的服务中止，并抹去了一些客户应用数据。（该次业务中止由一个软件部署所引起，它错误的终止了数量未知的用户实例。）对那些需要可靠和安全平台的客户来说，平台故障和数据消失就像被粗鲁的唤醒一样。更进一步讲，如果一个公司依赖于第三方的云平台来存放数据而没有其他的物理备份，该数据可能处于危险之中。

注意

亚马逊声称，通过将应用的实例放在多个地方并指派专为云计算设计的弹性IP地址，他们已经解决了导致系统故障的原因。

云服务开发的类型

云服务开发这一概念包含几种不同的开发类型。让我们来看一下一个公司能够利用云计算来开发自己的业务应用的不同方法。

软件即服务

软件即服务（SaaS）可能是最普遍的云服务开发类型。有了SaaS，一个独立的应用通过供应商的服务器交付给成千上万的使用者。客户不必为拥有软件而支付费用，确切的说，他们支付使用费。用户通过web可以访问的API使用应用。

注意

一个API（应用开发接口）是一个接口，它使得一个远程程序能够与另外一个程序或服务进行通信或使用其资源。

供应商所服务的每一个组织都称之为一个租户，这种类型的安排称为多租户架构。供应商的服务器被虚拟的划分成多个部分从而使得每个组织都可以利用定制的应用实例进行工作。

对客户而言，SaaS无需前期的服务器或软件许可投资。对应用开发者而言，只需要为多个客户端维护一个应用。

许多不同类型的公司都在利用SaaS模型开发应用。也许最为著名的SaaS应用就是谷歌为自己的客户群所提供的应用。

平台即服务

平台即服务（PaaS）是SaaS的一个变种，整个开发环境作为一个服务而提供。开发者利用供应商开发环境中的“结构单元”来创建自己的客户应用。这在某种程度上就像利用Legos构造应用，尽管最终应用在一定程度上受到可用代码块的限制，但利用这些预定义的代码块，应用的构建变得更容易。

Web服务

一个Web服务就是一个在网络上，通常是因特网上运行的应用。更典型的说法是，一个Web服务就是一个能够通过因特网访问的API。用户所请求的服务运行在远端系统上，后者充当服务的宿主。

第三章 开发云服务（3）

这种类型的Web API使得用户能够利用因特网上共享的功能，而不是提供自己的完整的应用程序。这种做法的最终结果是一个定制的、基于web的应用程序，该程序的大部分由第三方提供，因而减轻了传统应用程序在开发和带宽方面的需求。

一个不错的web服务的例子就是谷歌地图API用户所创造的“整合应用”。利用这些定制的应用程序，供应给地图的数据由开发者提供，而创造地图本身的引擎则由谷歌提供。开发者无需编写代码或提供地图应用，他所要做的一切就是连接到谷歌的Web API。

正如你可能猜测的那样，Web服务的优点包括更快的（和更低成本的）应用开发，更精简的应用和较少的存储和带宽需求。

实际上，web服务使得开发者每次开发新应用的时候不必重复开发相同的功能。利用来自web服务提供商的代码，他们在开发自己的应用的时候更容易成功。

按需计算

顾名思义，按需（on-demand）计算将计算机资源（处理能力，存储等）打包成类似公共设施的可计量的服务。在这一模式中，客户只需为他们所需的处理能力和存储支付费用。

注意

按需计算也称为效用（utility）计算。

那些具有很大的需求高峰并伴有低得多的正常使用期的公司特别受益于效用计算。当然，该公司需要为高峰使用支付更多，但是，当高峰结束，正常使用模式恢复时，他们的帐单会迅速下降。

按需计算服务的客户端基本上将这些服务作为异地虚拟服务器来使用。无需投资自己的物理基础设施，公司与云服务提供商之间执行现用现付的方案。

按需计算本身并不是一个新概念，但它因云计算而获得新的生命。在过去的岁月里，按需计算由一台服务器通过某种分时方式而提供。今天，服务基于大型的计算机网格，它作为一个独立的云运行。

注意

现今提供按需计算和存储的公司包括亚马逊，IBM，Sun和其他公司。

了解云服务开发服务和工具

正如你所知，云计算还处在发展的早期阶段。通过观察大量的小型和新兴的提供云开发工具的公司就能够看到这一点。在一个更加成熟的产业中，随着更大的企业登上舞台的中心，规模较小的厂商最终会倒在路边。

也就是说，许多公司，有大有小，都提供云服务的开发服务和工具。最基本的产品面向从零开发的应用程序，为其提供基于云的托管服务。功能更为齐全的产品包括开发工具和预先建立的应用程序，开发人员可以将其用作构造单元来构建自己独特的基于web的应用。

让我们回来从云服务开发的角度看一看谁在提供哪些服务。这是一个有趣的公司和服务的组合。

亚马逊

这是正确的，亚马逊，因特网上最大的零售商之一，也是一个主要的云开发服务供应商。按照如下的方式来考虑：亚马逊已经花了大量的时间和金钱设立了众多的服务器来服务其广受欢迎的网站，它正在将这些海量的硬件资源提供给所有开发者使用。

我们讨论中的这项服务称之为弹性计算云，亦称为EC2。这是一个商业web服务，它允许开发人员和公司租用亚马逊公司拥有的服务器云的能力，这一服务器云正是世界上最大的服务器农场之一。通过让客户请求指定数目的虚拟机，并在其上加载他们选择的任何应用，EC2使得可扩展的应用部署成为可能。因此，客户可以按需创建，启动和终止服务器实例，从而形成真正的“弹性”操作。

第三章 开发云服务（4）

亚马逊的服务提供了三种配置的虚拟服务器让客户选择：

? 小型的，它相当于一个具有1.7GB内存，160GB存储空间和一个32位内核处理器的系统

? 大型的，它相当于一个具有7.5GB内存，850GB存储空间和两个64位内核处理器的系统

? 超大型，它相当于一个具有15GB内存，1.7TB存储空间和四个64位内核处理器的系统

换句话说，你只需要选择想要的虚拟服务器的配置和计算能力，而剩下的事情由亚马逊来完成。

EC2仅仅是亚马逊web服务产品集的一部分，它使得开发人员能够直接访问亚马逊的软件和机器。通过充分利用亚马逊已经建成的计算能力，开发人员能够建立可靠的，强大的，低成本的基于web的应用。亚马逊提供了云（以及对它的访问），开发人员提供了其余部分。他们只需要为他们所使用的计算能力支付相应的费用。

AWS也许是目前最流行的云计算服务。亚马逊声称有超过330， 000的客户，这里面既有开发者，初创企业，也有已建成的公司。

注意

关于亚马逊Web服务的更多信息，请访问aws.amazon.com。

谷歌应用引擎

谷歌是web应用的领导者，因此它提供云开发服务一点也不奇怪。这些服务以谷歌应用引擎的形式提供，它使得开发者能够利用谷歌强大的应用所依赖的相同的基础设施来构建他们自己的web应用。

谷歌应用引擎提供了一个完全集成的应用环境。利用谷歌的开发工具和计算云，应用引擎应用易于构建，易于维护，易于扩展。所有你需要做的就是开发你的应用（使用谷歌的API和Python编程语言）并把它上传到应用引擎云里，从那里，它准备服务于用户。

如同你所推测的那样，谷歌提供了一个健壮的云开发环境。它具有以下特征：

? 动态Web服务

? 通用web技术的全方位支持

? 具有查询、分类和事务功能的持久存储

? 自动扩展和负载均衡

? 用于用户认证和利用谷歌账户发送电子邮件的API

此外，谷歌还提供了一个全功能的本地开发环境，能够在任何桌面计算机上模拟谷歌应用引擎。

关于谷歌产品的一件最好的事情就是：与其他大多数云托管解决方案不同，谷歌应用引擎是完全免费使用——不管怎么说，至少在基本层面如此。一个免费的应用引擎账户可以使用多达500MB的存储和每个月足够支持500万页面浏览量的CPU强度和带宽。如果你需要更多的存储，计算能力或容量，谷歌打算在不久的将来提供额外的资源（收费）。

注意

关于谷歌应用引擎的更多信息，请访问code.google.com/appengine/。

IBM

考虑到IBM在企业级计算机硬件方面的实力，它推出云计算解决方案并不奇怪。通过蓝云计划，IBM推出了一整套面向中小企业的基于云的按需服务。

蓝云是一系列的云计算产品，使得企业能够将他们的计算需求分散到可全球访问的资源网格中。其中的一个产品是快速优势（Express Advantage）套件，其中包括数据备份和恢复，电子邮件的连续性和归档以及数据安全功能，他们都是一个典型的IT部门所处理的数据密集型过程的一部分。

为管理它的云硬件，IBM提供了一个名为Hadoop的开源负载调度软件，该软件基于谷歌在自己的产品中所使用的MapReduce软件。其他软件还包括PowerVM和Xen虚拟化工具以及IBM的Tivoli数据中心管理软件。

第三章 开发云服务（5）

注意

关于IBM蓝云计划的更多信息，请访问www.ibm.com。

Salesforce.com

Salesforce.com也许是以它的销售管理SaaS而闻名，然而它也是云计算开发的一个领导者。该公司的云计算架构被称为Force.com。该平台作为一个服务运行在因特网上，是完全即时请求的。Salesforce提供自己的Force.com API和开发工具包。收费是以每登录为基础的。

作为Force.com的补充，AppExchange是一个以web为基础的应用的目录。开发人员可以使用AppExchange中他人上载的应用，可以在目录中共享自己的应用或发布只有获得授权的公司或客户才能使用的私有应用。AppExchange库中的许多应用是免费的，其他应用可以从原始开发者那里购买或获得授权。

毫不意外的是，大多数现有的AppExchange应用都是销售相关的——销售分析工具、电子邮件营销系统、财务分析应用等等。但是，公司可以使用Force.com平台开发任何类型的应用。事实上，许多小企业已经跳上了Force.com的潮流。

例如，2008年4月《微电脑世界》杂志的文章援引了乔纳森?斯奈德，Dreambuilder（一个位于纽约的10人的抵押贷款投资公司）首席技术官的话。“我们是一家小公司”，斯奈德说， “我们没有资源来专注于购买服务器和从零开始开发。对于我们来说，Force.com是一个真正的助推器。”

注意

要了解Force.com和AppExchange的更多信息，请访问www.salesforce.com。

其他云服务开发工具

亚马逊，谷歌，IBM和Salesforce.com并不是唯一向云服务开发者提供工具的公司。还有若干开发者应该予以评估、最终用户也许最后会熟悉的小一些的公司在从事这方面的工作。这些公司包括以下的这些：

? 3tera （www.3tera.com）提供了AppLogic网格操作系统和用于按需计算的云件（Cloudware） 架构。

? 10gen （www.10gen.com）提供了一个平台供开发者构建可扩展的基于web的应用。

? Cohesive Flexible Technologies （www.cohesiveft.com）提供了一个名为按需弹性服务器（Elastic Server On-Demand）的虚拟服务器平台。

? Joyent （www.joyent.com）为web应用开发者提供了一个名为加速器（Accelerator）的可扩展的按需的基础设施以及面向小企业的名为连接器（Connector）的使用简单的web应用套件。

? Mosso （www.mosso.com）提供了一个企业级的、可自动扩展的云宿主服务。

? Nirvanix （www.nirvanix.com）为开发者提供了一个云存储平台和Nirvanix Web服务， 后者通过标准的API提供了文件管理和其他公共操作。

? Skytap （www.skytap.com）提供了一个名为虚拟实验室（Virtual Lab）的按需web自动化解决方案， 它使得开发者能够利用预配置的虚拟机构建和配置实验室环境。

? StrikeIron （www.strikeiron.com）提供了基于云的平台IronCloud，用来提供Web服务以及开发者可以集成到自己的应用中的各类实时数据服务。

此外，Sun微系统公司有一个研发计划，称之为卡罗琳计划（www.projectcaroline.net），它为开发和交付基于web的应用提供了一个开源宿主平台。普通大众访问卡罗琳计划的网格是免费的。

云服务的成熟度

为了了解我们称之为云服务的那些基于web的应用在计算机软件托管进程中所处的位置，我们求助于我们在微软的好朋友们，他们给出了四个主要的成熟级别。

第一级的成熟就是传统应用服务提供商（ASP）的软件交付模式，可以追溯到20世纪90年代。在这个级别，每个用户都有自己的个性化版本的托管应用，在宿主服务器上运行自己的应用实例。

第二级的成熟出现在供应商为每个客户提供一个单独的应用实例时。在这个级别，所有的实例都使用相同的实现。如同级别1的应用，代码不是为每个用户定制的。相反，用户的个性化是通过在应用程序中提供详细的配置选项实现的。

第三级的成熟标志着应用托管方式的一个重大变化。在这个级别，供应商为每个用户运行一个单独的应用实例。通过可配置的元数据，系统提供了独特的用户体验，授权和安全策略确保每个用户的数据都与其他用户的分开。

在第四级也是最后一级的成熟水平中，供应商在负载均衡的同源实例的农场上服务多个用户。由于服务器（和实例）的数目可以根据需要增加或减少，这种类型的系统可扩展到大量的用户。此外，补丁和升级可以像面对一个单一的用户那样轻松的推广到整个用户群。这个级别就是云服务大有作为的地方。

第十一章 在文字处理上协作（1）

本章导读

? 基于web的文字处理如何工作

? 探究基于web的文字处理程序

几乎使用计算机的每一个人都使用文字处理程序。你使用你的文字处理器——极有可能是微软Word的某个版本——撰写备忘录、信件、感谢函、传真封面、报告、通讯以及其他你能想到的材料。文字处理器是我们计算生活的一个必不可少的组成部分。

但是，当你手边没有文字处理器时，你怎么办？也许你在父母家度假时需要继续撰写备忘录，但你的父母家中没有计算机——或者他们有计算机，但它没有安装Word。或者也许你正在短期出差，没有携带你所信赖的笔记本电脑，但你需要立即寄出一封工作短信。又或者也许你是一名正在校园内的学生，你的作业马上就要到期了，但你却将自己的计算机落在了宿舍。

总之，当你手边没有微软Word时，你应该如何做？无论你相信与否，解决方案位于云中——以基于web的文字处理器的形式出现。

没错，有许多基于web的文字处理程序可以替代微软的可敬的Word程序。所有这些程序都允许你使用任何一台计算机撰写你的信件，备忘录和报告，不需要安装软件，只要该计算机具有到因特网的连接。你所创建的每一个文档都存放在web上，因此你再也无需为随身携带工作而担心。这是云计算最为有用的地方，今天它已经来到了我们面前。

基于web的文字处理如何工作

微软Word是一个安装到你的计算机硬盘中的软件程序。相反，基于web的文字处理器位于云里，而不是在你的硬盘上——利用这些应用创建的文档同样如此。这些基于web的应用程序具有与微软Word酷似的主要功能，因此从功能角度而言，你不会失去很多。请继续阅读以了解更多的信息。

基于web的文字处理器的好处

正如你现在非常清楚的，使用云服务最明显的好处就是，无论你身在何处，你都可以从任何一台个人电脑访问你的文件。使用基于web的文字处理应用，当你在家里或外出时，你将永远不会发现自己所需的文件位于你办公室的电脑上。

同样不错的是，采用基于web的方式，你可以轻松地将你的文件与他人共享。这使得实时的工作组协作成为可能，无论他们位于全球的什么地方，这是你使用微软Word和其他类似桌面程序所无法做到的。

基于web的另一个好处就是你不会丢失你的工作——至少在理论上如此。当你命名了你所处理的文档，基于web的文字处理软件将其保存到它的服务器云里。此后，你对文档所做的每一个改动都会被自动保存到云服务器里。即使你关闭了你的web浏览器，浏览到另一个网站，甚至关闭了你的计算机，都不会丢失任何东西。你所做的一切都保存在web上。

最好的是，大多数基于web的应用程序都是免费的。与日益昂贵的微软Office套件不同，他们是免费的，你无需支付任何费用。

免费便于更多的人进行试用，从而使得它更容易被添加到你的应用包中。许多试用过这些基于web的应用的早期用户都曾经表示过，他们很可能不再使用微软Word。这些云服务几乎可以执行所有的Word的基本功能，这使得它们非常适合公司和小企业环境。

你应该使用基于web的文字处理器吗?

在你趟入基于web的文字处理这片水域之前，你需要自问，云服务是否适合你的特殊需要。答案当然是视情形而定。

第十一章 在文字处理上协作（2）

下面列出了一些用户，对他们而言，基于web的文字处理具有发展前途：

? 初学者。如果你刚刚来到文字处理的世界，那么没有比使用基于web的应用更好的方式了。功能稍微有限的这些云应用服务确实能够满足初学者的要求。首先，你不会因为微软Word菜单中零乱的高级选项而不知所措。此外，大多数基于web的文字处理器非常易于使用；你所需要的一切都在外层菜单中，而不是隐藏在菜单内层和对话框中。实话实说——我期望自己20年前就有一款类似谷歌文档的文字处理器，当时我正在学习如何使用基于个人电脑的文字处理程序。

? 临时用户。如果你对文字处理的需求不大，那么基于web的文字处理器也是一个不错的选择。如果你所从事的所有事情就是撰写备忘录和信件，那么基于web的应用足够胜任这项工作。

? 任何需要从多个位置访问其文档的人。如果你在上班时和在家里（或在道路上）处理同样的数据，你一定知道，将你的数据从一台计算机带到另一台计算机并保持他们之间的同步是多么麻烦的一件事。基于web的文字处理器能够解决这个问题。不论你身在何处（家中、办公室、路上），你总是使用存储在云里的文件的同一版本。不存在同步的问题；无论你去什么地方，你总是处理同一个文件。

? 任何需要同其他人共享其文档的人。有些时候你需要其他人查看你正在从事的工作。也许你有一份家庭预算，你和你的配偶都需要过目。也许你有一份足球队的日程安排，其他家长也需要查看。无论具体的需求是什么，基于web的文字处理器都允许你通过因特网将文档与你希望的任何人共享。

? 任何需要在协作环境中编辑其文档的人。共享是一件事情，而协同编辑则是另外一件事情。如果你需要多个用户能够同时访问和编辑文档中的数据，那么基于web的文字处理器允许你完成微软Word所不能完成的事情。例如，我认识一位企业家，他的小型电话推销公司采用了谷歌文档。他的五名员工同时从家中打电话进行推销。这五名员工处理同一份文档；他们不仅使用相同的呼叫数据，他们还通过因特网实时的将他们的成果添加到文档中。

总而言之，基于web的文字处理器并不适合每一个人。那么，哪些人不应该使用这些应用呢？

? 高级用户。如果你已经用微软Word创建了自己的自定义文件或模板，尤其是那些带有高级宏之类的文档，那么基于web的文字处理器并不适合你。大多数这些云应用缺乏Word的最高级的功能，因而完不成你的工作。

? 任何想要创建复杂的打印输出的人。今天的大多数基于web的文字处理器缺乏一些Word用户认为理所当然的某些更复杂的格式化选项。使用基于word的文字处理器，无论好坏，你在屏幕上看到和打印输出的一模一样。如果你需要精美的打印输出，那么基于web的应用程序可能会令你失望。

? 任何处理敏感文件的人。如果你的公司有很多商业秘密需要保护，那么基于web的应用程序（以及存储在web上的文件）也不是好的工具。事实上，一些组织可能会阻止他们的员工在他们自己的安全服务器之外处理文件，这就完全排除了使用以web为基础的文字处理器的可能性。

? 任何在没有连接到因特网时仍然需要工作的人。这是明摆着的事情，如果你不能连接到因特网，那么你就无法连接和使用基于web的应用程序。要脱机工作，你需要微软Word。

第十一章 在文字处理上协作（3）

因此，如果你是一个初学者或临时用户，不需要精美的打印输出，或者你需要与其他用户共享文档或进行在线协作，那么基于web的文字处理器值得一试。

探究基于web的文字处理器

大约有半打真正优秀的基于web的文字处理应用，领头羊就是非常流行的谷歌文档。我们将从谷歌文档开始来看一下这些应用，其他应用将按字母顺序进行介绍。

谷歌文档

谷歌文档（docs.google.com）是目前可用的最为流行的基于web的文字处理器。它实际上是一套应用，还包括谷歌电子表格以及谷歌演示文稿。文档套件的文档部分才是真正的文字处理应用。

如同谷歌所有的东西，谷歌文档的界面简洁美观，而且更为重要的是，不需要花费很多时间进行专门的学习，它就能工作得很好。基本的格式化很容易做到，用于你的文档的存储空间是大量的，而且共享/协作版本控制也可以轻而易举的做到。

注意

谷歌文档的基础是基于web的文字处理器Writely，最初由软件公司Upstartle开发。2006年3月，谷歌收购了Upstartle公司，随后将它自己开发的谷歌电子表格应用集成在了一起。

当你使用自己的谷歌账户登录到谷歌文档是，你会看到如图11.1所示的页面。这是所有文档应用（文字处理，电子表格和演示文稿）的主页；你以前创建的所有文档都在这一页面中列出。

图11.1. 谷歌文档主页——这里列出了你所有的文档。

最左边的面板帮你组织你的文档。你可以将文件存放到文件夹中，按照类型（文字处理文档或电子表格）查看文档，以及显示与特定人员共享的文档。

选定文件夹或过滤器中的文件显示在窗口的主要部分。正如你所看到的，文字处理文件用文档图标标识，电子表格文件用电子表格图标标识，而演示文稿文件则用演示文稿图标标识。要打开任何一个文档，只需要单击该文档的标题。文档将会在新窗口中打开。要删除某个条目，请先选中它，然后点击删除按钮。

要创建一个新的文字处理文档，请点击新建按钮并选择文档。新文档在一个新的浏览器窗口中打开，如图11.2所示。在这个新的浏览器窗口中，你的文档看上去就是一大块空白，下拉菜单和工具栏位于其顶部。你使用工具栏按钮和下拉菜单中的功能来编辑和格式化你的文档。

图11.2. 一个新的谷歌文档文件。

注意

你还可以使用谷歌文档来处理你以前使用常规的文字处理程序，包括微软Word创建的文件。只需要点击上传按钮打开上传文件页面。找到你想要上传的文件，然后点击上传文件按钮即可。

如同使用所有的基于web的文字处理器，当你创建一个谷歌文档文件时，你实际上是在创建一个HTML文件——跟网页没有什么两样。通过谷歌文档界面，所有HTML类型的格式都可用于你的文件。尽管你可以按照许多其他格式，包括微软Word DOC格式和Adobe PDF格式导出（下载）你的文件，你的文件也可以使用HTML格式进行保存。

当然，谷歌文档最实用的功能之一就是与其他谷歌文档用户共享文件的能力，其目的可以是查看或者协同编辑。要共享一个文档或电子表格用于查看或进行协作，请点击共享按钮并选择与其他人共享。这样就会打开如图11.3所示的共享该文档页面。

图11.3. 准备共享一个谷歌文档文件。

第十一章 在文字处理上协作（4）

在邀请人员框中，输入你要与之共享文档的人的电子邮件地址（多个电子邮件地址用逗号进行分隔）。如果你希望别人只能查看文档而无法进行编辑，请选中作为查看者选项。如果你希望别人能够编辑文档，请选择作为合作者的选项。点击邀请查看者或邀请合作者按钮发送邀请函。

现在你的收件人通过电子邮件收到了你的邀请。邀请包含一个到文档的链接；点击此链接就会在一个新的浏览器窗口中打开文件。受邀请的查看者可以浏览整个文件，也可以将该文件保存到他们个人的谷歌文档在线存储区域，或作为一个文件存到自己的个人电脑中。任何受邀作为合作者的人都可以对文件进行实时的编辑；事实上，多个用户可以同时编辑文件。这就如同你们所有的人都紧挨着坐在一起，所有的人同时敲击同一个键盘。

最后，谷歌文档有一项相对较新的功能，某些用户可能会觉得有用：无需因特网连接，脱机处理文档的能力。该项功能称之为谷歌脱机文档，要使用它，请点击脱机链接下载并安装谷歌齿轮——一个能够将谷歌在线应用转换成传统桌面应用的软件工具。虽然这种方式丧失了云计算的一些特征，但它确实允许你在任何地方处理你的文件——即使在没有因特网可用的时候。

警告

当你离线处理谷歌文件时，你无法使用该应用的某些本地格式——更为重要的是，你会失去那些对于小组协作而言十分重要的修订标记。

总而言之，谷歌文档是一款优秀的、功能齐全的、基于web的文字处理器。协作很容易进行，如果你愿意的话，你也可以选择离线处理你的文档。此外，尽管有一些与之竞争的程序可能提供了更多的格式化选项，但是从用户基数的角度来说，没有应用能够接近谷歌文档。

Adobe Buzzword

Buzzword（buzzword.acrobat.com）是Adobe在基于web的文字处理器市场上推出的产品。不同于谷歌文档，Buzzword在Flash中运行，对于那些使用老式个人电脑或因特网连接缓慢的人来说，这可能是个问题。不管怎么说，利用Flash实现使得Buzzword具有华丽的界面和某些高级编辑和格式化功能。

注意

Buzzword最初由名为Virtual Ubiquity的公司开发，2007年9月Adobe将其收购。

正如你从图11.4中可以看到的，Buzzword的界面与谷歌文档实用的界面相比棒的多。此外，Buzzword支持全文和段落格式化、页眉和页脚、页码编排、尾注以及键盘快捷键，他们都是现有的谷歌文档所不具备的。你还可以使用当前字数统计、在输入的同时进行拼写检查、插入评论以及获得对文件的修订历史。这些特点使得Buzzword成为专业作家的一个伟大的工具。

图11.4. Adobe Buzzword的基于Flash的精美的界面。

Buzzword在图片处理方面可谓多才多艺。你可以在任何Buzzword文档中导入JPG、GIF和PNG格式的文件，然后按照你的喜好设置图像的大小和位置。Buzzword在导入的图像周围浮动文字的功能甚至比Word做的更好。

当与其他用户协作时，你可以对协作者进行不同粒度的控制，他们分别是共享（读者级别），发表意见（评论者），以及向文件中填写内容（合著者）。面向协作的评论结构特别好；你需要做的所有就是突出了一段文字，然后在页面空白处插入一个虚拟的注解。

第十一章 在文字处理上协作（5）

ajaxWrite

与其他大多数基于web的文字处理器不同，ajaxWrite（www.ajaxwrite.com）并不支持IE浏览器。作为替代，你必须使用火狐（Firefox）web浏览器。先不论这一限制性条款是否重要，ajaxWrite简单的界面和简洁美观的工作空间令许多用户非常喜欢。

正如你可以从图11.5中看到的，ajaxWrite看起来很像微软Word，这使得人们可以立即轻松地开始使用该程序。新的文件在他们自己的窗户中打开，下拉菜单和工具栏与Word完全类似。尽管它并不包括Word（或Adobe Buzzword，仅就这一点而言）具有的所有的段落和文件格式化功能，但它确实给人们熟悉的使用体验。

图11.5.与Word类似的ajaxWrite界面。

最后需要指出的是ajaxWrite所缺乏的另一项功能：群组协作。与本章中讨论的其他基于web的文字处理器不同，ajaxWrite没有提供共享或协作功能。它是一个纯粹的单用户应用。

Docly

Docly（www.docly.com）是一个非常有趣的应用程序，专为专业作家设计。Docly有别于其他基于web的文字处理器的地方是它对的版权管理的重点支持，包括在文件中附加知识共享授权或传统的“版权所有”授权。这意味着，你不仅可以共享和发布你的Docly文件，你还可以将他们出售。

注意

知识共享是一个非盈利组织，它已经发布了几种不同的版权许可，普通民众可以用来约束他人使用其劳动的方式。欲了解更多内容，请访问www.creativecommons.org。

正如你可以从图11.6中看到的那样，Docly只提供了最基本的编辑和格式化方式。编辑窗口本身相当局促，部分原因是为了为顶层工具栏上那些令人无所适从的格式化按钮腾出空间。尽管它的界面并不是那么精美，但它确实能够完成基本的工作。

图11.6. Docly狭小而又令人困惑的文本编辑界面。

Glide书写器

Glide书写器（www.glidedigital.com）是Glide基于web的业务应用套件的一部分。Glide书写器本身就是一个精美的文字处理器，它恰好与其他Glide应用，包括电子邮件和聊天无缝集成在了一起。此外，Glide文档可以在许多智能手机上进行查看，包括iPhone手机、T-Mobile的SideKick以及一小撮奇奥（Treo）和黑莓机型。

正如你在图11.7中所看到的那样，Glide书写器在新窗口中打开一个文档。常用的编辑和格式化工具栏位于上方，文档位于其下。侧面有三个标签：电子邮件，共享和交谈。单击共享选项卡，Glide就会打开一个窗口，让你指定需要与之共享的联系人。然后这些联系人就会收到一封电子邮件，其中包含一个链接，指向web文件的网络地址，在那里他们可以根据需要随意查看或修改文件。

图11.7. 利用Glide书写器编辑一个可共享的文档。

iNetWord

iNetWord（www.inetword.com）是一个全功能的基于web的文字处理器应用。正如你可以从图11.8中看到的那样，iNetWord采用了标签式界面，每一个打开的文档都出现在自己的标签页中。你能够使用的功能包括页面背景、边界、页码编排、表格、图像等。它甚至配备了许多常见文件类型的预先设计的模板。

图11.8. iNetWord的标签式界面。

至于群组协作，iNetWord允许你共享单个文档或整个文件夹。其他用户所做的修改突出显示在屏幕上，并且可以很容易地恢复到以前的版本。

第十一章 在文字处理上协作（6）

KBdocs

如图11.9所显示的那样，KBdocs（www.kbdocs.com）是一个简单朴素的在线文字处理器。它只提供有限的格式化选项，而且不具有共享或协作功能。据说，它可能是最易于使用的基于web的文字处理器，对新手尤其如此；只需要选择一个用户名和密码，按下回车键，一切就准备好了。

图11.9. KBDocs简单自然的界面。

Peepel Web写字板

Peepel Web写字板（www.peepel.com）是一个基于web的多应用办公套件的一部分。正如你可以在图11.10中看到的，Peepel的界面稍微有些与众不同：你所编辑的文件显示在自己的窗口中，位于较大的主窗口之上，主窗口中有你用来编辑和格式化文件的工具栏和标签。如果你能超越这个小转变，Peepel提供了一些有趣的功能，包括当你没有因特网连接时能够离线编辑你的文件的能力。

图11.10. Peepel Web写字板与众不同的界面。

群组协作对是Peepel Web写字板来说是小菜一碟。在你保存了文件之后，点击共享选项卡就可看到所有的Peepel共享选项。你可以将读取和写入权限指派给不同的用户；你需要提供的所有内容就是每一个协作者的电子邮件地址。

ThinkFree书写器

ThinkFree书写器（www.thinkfree.com）是一个基于Java的在线文字处理器。如同你自己可以从图11.11中看到的，ThinkFree模仿了Word 2003的界面。每个新文件都在自己的窗口中打开，每个窗口都有一个类似Word的下拉菜单和工具栏。编辑和格式化功能与Word也相当一样，具有样式、编辑标志、域、自动校正等完整的功能。

图11.11. ThinkFree书写器——一个与Word非常类似的文字处理器。

书写板

如果协作就是你的活动，那么可以考虑书写板（WriteBoard，www.writeboard.com），一个基于web的设计过程中牢记群组协作的文字处理器。书写板并不是web上功能最为齐全的文字处理软件，但它确实使多个用户之间的协作变得异常容易。

正如你可以在图11.12中看到的那样，书写板的界面对条目的定义极其简单。事实上，它是如此的简单以至于你必须在文本中输入格式编码，这有点像25年前文字之星的工作方式。（但是又有谁愿意这样做呢？）

图11.12. 书写板简陋的令人难以置信的界面。

然而，创建漂亮的文档并不是书写板所关心的。书写板的实质是一个维基样式的群组文本编辑器。当你创建了一个文件并与他人共享之后，可以很容易地比较文档的不同版本；每一次你或其他人保存了所做的修改，系统就会创建文档的一个新版本并将其连接到边栏中。你甚至可以订阅文档的RSS源，这样系统会自动通知你所做的修改。

Zoho写字板

Zoho的基于web的应用程序在本书中总是最后一个被讨论，原因在于该公司的名字是字母表中的最后一个。尽管如此，在我评价云服务时，Zoho很少是最后一家公司。在大多数情况下，从功能和特点方面而言，Zoho与谷歌的排名十分接近。

Zoho写字板（writer.zoho.com）就是一个典型的例子，在基于web的文字处理器竞争中，如果非要说它没有超过谷歌文档，那么它也可以轻松保住自己的位置。正如你可以在图11.13中看到的，多个文档显示在同一个窗口中，这归功于Zoho写字板的标签式界面。你可以使用所有标准的编辑和格式化功能，以及页面编号、页眉和页脚、脚注和尾注、内容目录和其他一些高级功能，这些功能在其他所有的基于web的文字处理器中是找不到的。

第十一章 在文字处理上协作（7）

图11.13. Zoho写字板——一个全功能的基于web的文字处理器。

自然，Zoho写字板提供了强大的共享和协作功能。你可以将文件以只读或读/写的的方式共享给个人或群组。共享就是点击共享选项卡那么简单；这会显示一个如图11.14所示的窗口。输入每个人的电子邮件地址（或预先定义的群组名称），选择权限级别，然后点击共享按钮。选中的协作者将收到一封电子邮件，邀请他们访问web上的共享文件。

图11.14. 利用Zoho写字板共享一个文档。

云中的办公套件

本章中所描述的许多基于web的文字处理器是更大的基于web的办公套件的一部分。这些应用套件的设计目标是与微软Office及其内含的应用——Word、Excel和PowerPoint进行竞争，但他们具有web托管的应用和文档的所有好处。

许多专家认为，基于web的办公套件将最终取代传统的桌面软件套件，理由是在固定桌面上工作的用户正变得越来越少。随着用户变得更加流动，基于云的应用的优势也变得更加引人注目。只要上网方便，基于web的文档就几乎可以从任何地方访问。

此外，公司和组织（以及个人）也开始对微软桌面应用程序无休止的成本不满。公司支付200美元到500美元购买Office套件，然后每隔几年被迫升级。大多数基于web的套件是免费的或成本非常低的，而且会不停的进行升级（也是免费的）。与微软的Office相比，基于web的应用成本更低——那么当你在一个组织中拥有成百上千的用户时，这种成本节省是不能被忽略的。

尽管如此，许多组织仍然需要相当长的一段时间才能完全从Office切换到基于web的替代品。这是统治着那些较大组织的一个惯性问题；即使能够获得相当多的成本节省，切换平台也总是会遇到很多麻烦。（与组织外部那些仍然使用Word的人共享文档也引入挑战。）但变化确实在发生，尽管进展缓慢，却已有明显的徵兆。Office应用环境不可能拥有与今天同样的10年时光。

那么公司们会切换到哪一个基于web的应用程序呢？在本章中，你已经探究了其中的一些，或者至少是套件的某些部分。今天，最为流行的基于web的办公套件列举如下：

? Glide业务套装（www.glidedigital.com）

? 谷歌文档（docs.google.com）

? Peepel在线办公软件（www.peepel.com）

? ThinkFree我的办公软件（www.thinkfree.com）

? WebEx Web办公软件（www.weboffice.com）

? Zoho办公软件（office.zoho.com）

在这些套件中，谷歌文档拥有目前最大的安装基数；许多公司，组织和教育机构已经从微软Office切换到了谷歌免费的基于web的应用程序。但是请勿排除任何相竞争的套件，也不要期望微软会永远置身云服务革命之外。

这可能需要一段时间才能得到证实，但它必将获得证实。最终，几乎所有的办公计算都会在云里完成。