前 言 本书会介绍如何从Web上的各种离散数据源中获取数据,并介绍如何集成这些数据来构建崭新的应用程序(这种应用程序被称为Mashup)。Internet正处于变革阶段,在整个Web中,越来越多的站点通过Web服务和扩展标记语言(eXtensible Markup Language,简写为XML)提供它们自己的数据,使之可以公开访问。 这是个很好的消息,因为它意味着开发人员可以开发更复杂的应用程序。而这在以前要么不可能完成,要么就需要数百名开发人员共同工作才可以实现。 本书演示了如何充分利用这些数据源,并且把这些数据集成在一起来形成新的、前所未有的应用程序。是不是认为我在开玩笑?下面列出的是一些已经构建好的应用程序的示例,其中大部分都只是一个开发人员完成的: ● Craig s List + Google Maps——交互式地图,显示了公寓出售的位置。 ● Google Maps + 911呼叫信息——可视化显示罪案发生的地方,且是实时的! ● Amazon + RSS——产品评论概要,可以用来关注自己喜欢的产品,并发现什么时候有人发布了新的评论,或者什么时候一个产品在打折。 有两个因素影响着Mashup成为一个实用的开发方式:展示能力和提供的Web服务。诸如异步JavaScript和XML(Asynchronous JavaScript and XML,简写Ajax)等技术重新激发了开发人员对浏览器应用程序的想象力。另一个影响因素是宽带连接,随着Internet联网速度的加快以及WiFi使得无处不在的网络连接成为可能,浏览器所提供的功能得到很大的扩展。 Web服务及其功能在很大程度上影响了Mashup作为开发技术的发展方向,毕竟,如果没有Web服务,就没有什么内容可以混搭。 目前,我会说Mashup还处于起始阶段,虽然提供给开发人员的Web服务还很有限,但是它的未来是光明的。大公司会逐渐采纳面向服务的体系结构,并且一旦这变成了现实,那么会开始涌现更多的新服务。随着Web服务的快速繁衍,还有可能出现新的和更有趣的方法来集成这些服务。 Miscrosoft正在逐步地开发新方法来增强这种在线体验,这包括新的平台和产品。例如Avalon, eXtensible Application Markup Language (扩展应用程序标记语言,简写XAML),和Windows Vista。这就为改善用户体验提供了更多的可能性。 让我们关注这些新的开发技术,正如前面提到过的,Mashup在不久的将来会得到快速发展。它就像是一种文化驱动的趋势,要跟上这种发展,我们需要快速融入Mashup的开发团体。在Internet上有无数的资源,因此我鼓励大家勇于尝试,并找到自己喜欢的内容。 请尝试这种新的通过Mashup技术创建的应用程序,并试着找到它们的构建方式。如果想要知道某些程序是如何实现的,那么最好是查看它的源代码。所以说好的开发人员也是好的侦探,我们永远都不要放弃我们探索的潜能。 Mashup天生就是一种创造性的体现,它代表了人们对一种新的信息形式的需求。本书将带领开发人员开始在这条新的道路上前进,并开始对Web服务和XML的探索。如果您已经开始工作了,那么此书不仅提供了新的方向,还可以让您从中了解如何使用这些工具。从某种意义上来说,现在正是Internet革新换代的时候,本书将会成为开发人员在这新的旅程中很好的伴侣。 本书读者对象 本书是面向开发人员的,不只是针对服务器端或者用户界面的开发人员,而是针对所有的开发人员。我们在以后会看到,对于任何Mashup来说,在消息、展示、服务器端脚本等之间有许多互相连接的传输部分。 希望读者对Web和服务器技术有一定的了解。如果您对XML、Web服务、动态超文本标记语言(Dynamic Hypertext Markup Language,简写DHTML)、JavaScript、和ASP.NET很熟悉,那么您阅读此书应该没有问题。如果对其不熟悉,也不用担心,本书对所有内容的解释都很详细,并且提供了源代码,因此要充分理解这些内容并不难,而不管以前的经验如何。 本书内容结构 作为一个软件架构师(但在内心深处我更愿意称自己是一个程序员),我很不喜欢阅读手册,但此书是很容易阅读的,我保证!另外,我还精心设计了此书的结构,这样可以简单地从任意章节开始学习,并尝试编写代码,而且其中旁注和插图也提供了一些帮助和技巧。 本书共有16章,这16章被分为了3个部分,下面分别介绍各部分和各章的内容。 第Ⅰ部分 热门的新型Web技术。下面列出的是本部分包括的各章及其介绍: ● 第1章 Web 2.0——本章从一个程序员的角度介绍了当前Internet的发展状态。 ● 第2章 Amazon Web服务平台——本章继续介绍和探讨Amazon使用的Web 2.0技术,不仅介绍了Commce API(这是本书的重点),还介绍了其他API,例如Mechnical Turk和S3平台。 ● 第3章 其他Mashup服务——本章拓宽了开发人员的视野,描述了很多流行的Web服务,而且这些服务都是开发人员可以免费使用的。免费的技术是很关键的,这样可以降低入门的门槛,因为没有人愿意仅为自己的一些尝试而购买昂贵的软件。 第Ⅱ部分 准备混合。下面列出的是本部分包括的各章及其介绍: ● 第4章 开发工具——本章介绍的是推荐的编程工具和开发环境,这些工具和环境同样都是免费的。 ● 第5章 通用技术——本章介绍的是和Web 2.0有关的各种技术。这些技术及其涉及的首字母缩略词会贯穿本书。 ● 第6章 Mashup技术——本章介绍的是构建Web Mashup应用程序的各种技术和理论的概述。 ● 第7章 创建第一个Remix——本章会深入介绍如何创建第一个Remix。其中的示例是相对简单的,但说明了一些核心概念的使用,例如SOAP API调用和使用XML。 第Ⅲ部分 Mashup。下面列出的是本部分包括的各章及其介绍: ● 第8章 构建第一个Mashup——在本章中,我们会构建一个搜索应用程序,此搜索应用程序会结合从Yahoo和Amazon返回的数据,数据的结合是在服务器中进行的,而不是在浏览器中。 ● 第9章 推动浏览器工作——本章会介绍如何把第8章中的工作放到用户的浏览器中去处理。还会介绍一些JavaScript的基本技术,并使用REST风格的API构建一个应用程序,此应用程序可以从Amazon或YouTube中获取数据。 ● 第10章 Ajax驱动的愿望清单——本章介绍了Ajax的所有内容,其中的示例应用程序可以从Amazon中查询客户的愿望清单信息,并且可以把它和eBay上的实时拍卖信息相结合。 ● 第11章 餐馆浏览器——本章是构建在Yahoo Maps平台上的,实施了一个简单的地图实用工具,此工具可以在自己的区域内显示餐馆位置。这些餐馆的数据都是Amazon的Web服务提供的。 ● 第12章 使用JSON——本章说明了如何使用JSON表示法和动态脚本来从Amazon上获取数据,而不用使用代理。 ● 第13章 性能改善——本章介绍的是和性能有关的所有重要话题,本章还会介绍如何并行执行多个调用,这样可以在较少时间内完成更多的工作。 ● 第14章 移动Amazon——本章介绍了如何把台式电脑中的应用程序应用到移动设备。我们会构建一个在手机或BlackBerry设备上访问Amazon的界面。 ● 第15章 Amazon S3——本章介绍的是Amazon的相对较新的存储服务。我们会学习如何为此服务进行身份验证,以及如何在Amazon的服务器上存储最大尺寸为5GB的文件。 ● 第16章 其他应用介绍——本章介绍了作者构建的一些已有的应用程序,这些应用程序都是使用本书介绍的技术创建的,希望本章介绍的各种示例可以激发大家创建应用程序的热情。 另外,本书还包括下面两个附录: ● 附录A ECS FAQ——本附录列出的是有关Amazon Associates项目和在开发人员团体中常见的问题和解答。 ● 附录B 练习答案——本附录列出的是每章后面的练习答案。 使用本书的要求 为了不使本书涉及太多的内容,我在大多数示例中使用了Microsoft的技术。然而,我们所阐述的概念在大多数情况下是通用的,并且很容易移植到其他技术平台上,例如J2EE、Python、Ruby等。 C#、.NET 2.0,和ASP.NET 2.0已成为目前的流行趋势,幸运的是,Microsoft已免费提供了这些开发工具。我使用的是Visual Web Developer 2005 Express Edition版本,下面给出了它的下载位置: 当然了,可以使用任何支持Web服务的Visual Studio(例如,Visual Studio 2003)软件,但本书中的示例代码是在Visual Studio 2005中编辑的。 本书中的示例代码都是通过Visual C#提供的,其中包括很多注释,且书中也做了详细的解释。其中,没有添加有关出错检查和异常处理的代码,这是为了尽可能清楚地说明每种技术。其中的配套的代码只是一个起始点,我鼓励大家在此代码的基础上构建自己的应用程序。 Visual Basic .NET(VB.NET)开发人员也不必灰心,因为有几种工具可以用来把C#的代码转换为VB.NET的代码。可以考虑使用一些免费的开放源代码的工具,例如Fidalgo,它可以自动把代码从C#转换为VB.NET。 配套代码并不需要大量的计算能力,一个典型的开发电脑只要有512MB内存就足够了。但是,Internet连接是必需的,而且越快越好。 一些示例需要创建一些诸如XML或XSL的文件,并且要使得这些文件可以在Internet上公开访问。因此,一个好的站点托管供应商被证明是很有帮助的。站点托管是一个商品资源,可以在网上找到很多价格便宜的Web托管供应商。 源代码下载 在读者学习本书中的示例时,可以手工输入所有的代码,也可以使用本书附带的源代码文件。本书中的所有源代码都可以从本书合作站点/或www.tupwk.com.cn/downpage上下载。登录到站点/,使用Search工具或使用书名列表就可以找到本书。接着单击本书信息页面上的Download Code链接,就可以获得所有的源代码。 注释: 许多图书的书名都很相似,所以通过ISBN查找本书是最简单的,本书的ISBN是978-0-470-09777-9。 在下载了代码后,只需用自己喜欢的解压缩软件对它进行解压缩即可。另外,也可以进入/dynamic/books/download.aspx上的Wrox代码下载主页,查看本书和其他Wrox图书的所有代码。 勘误表 尽管我们已经尽了各种努力来保证文章或代码中不出现错误,但是错误总是难免的,如果您在本书中找到了错误,例如拼写错误或代码错误,请告诉我们,我们将非常感激。通过勘误表,可以让其他读者避免受挫,当然,这还有助于提供更高质量的信息。 请给wkservice@tup.tsinghua.edu.cn发电子邮件,我们就会检查您的信息,如果是正确的,我们将在本书的后续版本中采用。 要在网站上找到本书的勘误表,可以登录,通过Search工具或书名列表查找本书,然后在本书的信息页面上,单击Book Errata链接。在这个页面上可以查看到Wrox编辑已提交和粘贴的所有勘误项。完整的图书列表还包括每本书的勘误表,网址是/misc-pages/booklist.shtml。 P2P邮件列表是为作者和读者之间的讨论而设立的。读者可以在上加入P2P论坛。该论坛是一个基于Web的系统,用于传送与Wrox图书相关的信息和相关技术,与其他读者和技术用户交流。该论坛提供了订阅功能,当论坛上有新贴子时,会给您发送您选择的主题。Wrox作者、编辑和其他业界专家和读者都会在这个论坛上进行讨论。 在上有许多不同的论坛,帮助读者阅读本书,在读者开发自己的应用程序时,也可以从这个论坛中获益。要加入这个论坛,需执行下面的步骤: (1) 进入,单击Register链接。 (2) 阅读其内容,单击Agree按钮。 (3) 提供加入论坛所需的信息及愿意提供的可选信息,单击Submit按钮。 然后就可以收到一封电子邮件,其中的信息描述了如何验证账户,完成加入过程。 提示: 不加入P2P也可以阅读论坛上的信息,但只有加入论坛后,才能发送自己的信息。 加入论坛后,就可以发送新信息,回复其他用户的贴子。可以随时在Web上阅读信息。如果希望某个论坛给自己发送新信息,可以在论坛列表中单击该论坛相应的Subscribe to this Forum图标。 对于如何使用Wrox P2P的更多信息,可阅读P2P FAQ,其中列出了论坛软件的工作原理,以及许多针对P2P和Wrox图书的常见问题解答。要阅读FAQ,可以单击任意P2P页面上的FAQ链接。 ?? Mashups Web 2.0开发技术——基于 前 言 IV VII