
前 言
本书会介绍如何从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版本,下面给出了它的下载位置:
http://msdn.microsoft.com/vstudio/express/default.aspx
当然了,可以使用任何支持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托管供应商。
源代码下载
在读者学习本书中的示例时,可以手工输入所有的代码,也可以使用本书附带的源代码文件。本书中的所有源代码都可以从本书合作站点http://www.wrox.com/或www.tupwk.com.cn/downpage上下载。登录到站点http://www.wrox.com/,使用Search工具或使用书名列表就可以找到本书。接着单击本书信息页面上的Download Code链接,就可以获得所有的源代码。
注释:
许多图书的书名都很相似,所以通过ISBN查找本书是最简单的,本书的ISBN是978-0-470-09777-9。
在下载了代码后,只需用自己喜欢的解压缩软件对它进行解压缩即可。另外,也可以进入http://www.wrox.com/dynamic/books/download.aspx上的Wrox代码下载主页,查看本书和其他Wrox图书的所有代码。
勘误表
尽管我们已经尽了各种努力来保证文章或代码中不出现错误,但是错误总是难免的,如果您在本书中找到了错误,例如拼写错误或代码错误,请告诉我们,我们将非常感激。通过勘误表,可以让其他读者避免受挫,当然,这还有助于提供更高质量的信息。
请给wkservice@tup.tsinghua.edu.cn发电子邮件,我们就会检查您的信息,如果是正确的,我们将在本书的后续版本中采用。
要在网站上找到本书的勘误表,可以登录http://www.wrox.com,通过Search工具或书名列表查找本书,然后在本书的信息页面上,单击Book Errata链接。在这个页面上可以查看到Wrox编辑已提交和粘贴的所有勘误项。完整的图书列表还包括每本书的勘误表,网址是www.wrox.com/misc-pages/booklist.shtml。
p2p.wrox.com
P2P邮件列表是为作者和读者之间的讨论而设立的。读者可以在p2p.wrox.com上加入P2P论坛。该论坛是一个基于Web的系统,用于传送与Wrox图书相关的信息和相关技术,与其他读者和技术用户交流。该论坛提供了订阅功能,当论坛上有新贴子时,会给您发送您选择的主题。Wrox作者、编辑和其他业界专家和读者都会在这个论坛上进行讨论。
在http://p2p.wrox.com上有许多不同的论坛,帮助读者阅读本书,在读者开发自己的应用程序时,也可以从这个论坛中获益。要加入这个论坛,需执行下面的步骤:
(1) 进入p2p.wrox.com,单击Register链接。
(2) 阅读其内容,单击Agree按钮。
(3) 提供加入论坛所需的信息及愿意提供的可选信息,单击Submit按钮。
然后就可以收到一封电子邮件,其中的信息描述了如何验证账户,完成加入过程。
提示:
不加入P2P也可以阅读论坛上的信息,但只有加入论坛后,才能发送自己的信息。
加入论坛后,就可以发送新信息,回复其他用户的贴子。可以随时在Web上阅读信息。如果希望某个论坛给自己发送新信息,可以在论坛列表中单击该论坛相应的Subscribe to this Forum图标。
对于如何使用Wrox P2P的更多信息,可阅读P2P FAQ,其中列出了论坛软件的工作原理,以及许多针对P2P和Wrox图书的常见问题解答。要阅读FAQ,可以单击任意P2P页面上的FAQ链接。
??
Mashups Web 2.0开发技术——基于Amazon.com
前 言
IV
VII
目 录
第Ⅰ部分 热门的新型Web技术
第1章 Web 2.0 3
1.1 什么是Web 2.0 3
1.1.1 传统思维 3
1.1.2 Folksonomy 4
1.1.3 如何将Folksonomy应用到
Web 2.0 4
1.2 作为服务的软件 5
1.3 数据就是一切 5
1.4 融合 6
1.5 迭代开发 6
1.6 富浏览器端应用 7
1.7 多交付通道 7
1.8 社交网络 7
1.9 个体开发人员的提升 8
1.10 Amazon和Web 2.0 9
1.10.1 Amazon和消费者 9
1.10.2 Amazon和开发人员 10
1.11 本章小结 11
第2章 Amazon Web服务平台 13
2.1 Amazon开发人员计划 13
2.2 电子商务服务 14
2.2.1 核心数据类型 14
2.2.2 接口类型 14
2.2.3 本地化语言 15
2.2.4 ECS核心操作 15
2.2.5 ASIN 17
2.2.6 BrowseNode 18
2.2.7 必需的参数 19
2.2.8 ResponseGroup 20
2.2.9 参加Amazon联盟 21
2.2.10 ECS带来的商机 22
2.3 Amazon开发人员网站 22
2.3.1 Amazon Mechanical Turk 23
2.3.2 Amazon简单队列服务 24
2.3.3 Amazon Elastic
Compute Cloud 24
2.3.4 Amazon历史价格 25
2.3.5 Amazon简单存储服务 25
2.3.6 Alexa 26
2.4 本章小结 28
第3章 其他Mashup服务 29
3.1 Yahoo 29
3.1.1 Yahoo Maps 29
3.1.2 Yahoo搜索 30
3.1.3 Yahoo交通提醒 31
3.1.4 Yahoo购物 31
3.2 del.icio.us 32
3.3 Technorati 33
3.4 Flickr 34
3.5 Google 35
3.5.1 AdSense API 35
3.5.2 博客API 35
3.5.3 Google小工具API 35
3.5.4 Google Maps API 36
3.5.5 Google工具栏API 36
3.5.6 Google网络搜索API 37
3.6 eBay 37
3.7 MSN搜索 38
3.8 411Sync 38
3.9 BBC 39
3.10 YouTube 39
3.11 美国TerraServer 40
3.12 MSN Messenger活动 41
3.13 Rhapsody 42
3.14 Second Life 42
3.15 本章小结 44
第Ⅱ部分 准 备 混 合
第4章 开发工具 49
4.1 Microsoft Express Editions 49
4.1.1 Web开发 49
4.1.2 数据库开发 50
4.1.3 Windows开发 50
4.2 一个简单的网站 51
4.3 主控页 55
4.4 展示XML 数据 58
4.5 ASP.NET站点地图 60
4.6 导航控件 61
4.7 使用CSS添加样式 62
4.8 主题和皮肤 64
4.9 本章小结 66
4.10 本章练习 67
第5章 通用技术 69
5.1 URI 69
5.2 HTTP 69
5.3 XML 70
5.3.1 一个XML文档样例 70
5.3.2 XML的关键点 71
5.4 XHTML 71
5.5 XPath 72
5.6 XSL和XSLT 73
5.7 Web服务 75
5.8 WSDL 75
5.9 SOAP 76
5.10 REST 77
5.11 Remix 78
5.12 Mashup 78
5.13 RSS 78
5.14 OPML 79
5.15 Atom 80
5.16 GeoRSS 80
5.17 Ajax 81
5.18 JSON 81
5.19 序列化PHP 82
5.20 POX 82
5.21 RDF 82
5.22 FOAF 82
5.23 WML 83
5.24 Microformats 85
5.25 XML-RPC 85
5.26 本章小结 86
5.27 本章练习 86
第6章 Mashup技术 87
6.1 Web服务器混合 87
6.1.1 理解体系结构 88
6.1.2 工作流程 88
6.1.3 优缺点 88
6.1.4 使用时机 89
6.2 使用Ajax多功能用户接口 89
6.2.1 理解体系结构 89
6.2.2 工作流程 90
6.2.3 优缺点 91
6.2.4 什么时候可以使用Ajax 92
6.2.5 什么时候不可以使用Ajax 92
6.3 使用JSON混合 92
6.3.1 理解体系结构 92
6.3.2 工作流程 93
6.3.3 优缺点 94
6.3.4 什么时候可以使用JSON 94
6.3.5 什么时候不可以使用JSON 94
6.4 警告 94
6.5 本章小结 95
6.6 本章练习 95
第7章 创建第一个Remix 97
7.1 作战计划 97
7.1.1 理解体系结构 97
7.1.2 用户界面 98
7.1.3 服务器端代码 102
7.1.4 使用SOAP获取Amazon
数据 103
7.1.5 使用代理 105
7.1.6 工作流程 106
7.2 创建一个RSS生成器 109
7.3 RSS 2.0结构 114
7.3.1 使用RSS数据 121
7.3.2 其他尝试 122
7.3.3 验证RSS 123
7.3.4 使用不同语言搜索 123
7.4 进一步尝试 124
7.5 本章小结 125
7.6 本章练习 125
第Ⅲ部分 Mashup
第8章 构建第一个Mashup 129
8.1 作战计划:Yahoo加上
Amazon 129
8.1.1 理解体系结构 129
8.2.2 工作流程 130
8.2 工作方式 130
8.3 Yahoo搜索用户界面 131
8.4 通过REST查询Yahoo 133
8.4.1 Yahoo REST URI样例 133
8.4.2 Yahoo旁置代码 137
8.4.3 把XML文档转换为
DataSet 139
8.5 Amazon用户接口 141
8.5.1 XSL转换 142
8.5.2 Amazon XSL样式表 144
8.5.3 在C#中应用XSL样式表 148
8.6 混合结果 149
8.7 本章小结 152
8.8 本章练习 153
第9章 推动浏览器工作 155
9.1 作战计划 155
9.1.1 理解体系结构 156
9.1.2 工作流程 157
9.1.3 工作示例 158
9.2 设置工程 159
9.2.1 数据提供者 160
9.2.2 验证Amazon REST URI 162
9.2.3 处理网络代理 164
9.3 更多XSL工具 164
9.3.1 XSL If-Then-Else 165
9.3.2 匹配一个模板到多个元素 165
9.3.3 转换YouTube响应 165
9.3.4 XmlHttpRequest对象 168
9.3.5 发出请求 169
9.3.6 处理响应 170
9.3.7 处理Amazon错误 172
9.3.8 解析Amazon BrowseNode
结构 173
9.3.9 递归XSL模板 175
9.4 运行应用程序 176
9.5 这种方法的好处 176
9.6 本章小结 177
9.7 本章练习 177
第10章 Ajax驱动的愿望清单 179
10.1 作战计划:eBay和
Amazon 179
10.1.1 什么是AJAX? 179
10.1.2 理解体系结构 179
10.1.3 和第9章示例的
不同之处 181
10.1.4 Ajax的优缺点 181
10.2 设置工程 182
10.2.1 搜索Amazon愿望清单 183
10.2.2 修改数据提供者 186
10.2.3 从getdata.aspx发送
XML 186
10.2.4 修改BuildAmazonURI
函数 187
10.3 eBay API 189
10.3.1 eBay注册过程 189
10.3.2 eBay REST接口 190
10.4 在浏览器中转换XML 190
10.4.1 JavaScript请求函数 194
10.4.2 设置XSL数组 195
10.4.3 响应处理函数 196
10.4.4 转换函数 196
10.4.5 清单XML结构的转换 197
10.5 使用远程购物车 198
10.5.1 购物车操作 198
10.5.2 存储HMAC和CartId 202
10.5.3 中断浏览器缓存 204
10.5.4 显示过程 205
10.5.5 调试技巧 205
10.5.6 其他应用 206
10.5.7 安全性考虑 206
10.5.8 浏览器支持 207
10.5.9 其他创意和技巧 207
10.6 本章小结 208
10.7 本章练习 209
第11章 餐馆浏览器 211
11.1 作战计划:Yahoo Maps加
Amazon 211
11.1.1 理解体系结构 212
11.1.2 工作流程 212
11.2 Yahoo Map API 213
11.2.1 Yahoo地图类型 214
11.2.2 Yahoo Map缩放等级 215
11.2.3 标记事件 217
11.2.4 YLog实用工具 218
11.2.5 添加边界 218
11.3 构建餐馆浏览器 221
11.4 数据访问选择 222
11.5 使用Amazon查找餐馆
信息 223
11.6 Yahoo地理编码API 224
11.7 使用GeoRSS创建重叠 225
11.7.1 什么是重叠? 225
11.7.2 什么是GeoRSS? 226
11.7.3 GeoRSS转换 227
11.7.4 将Amazon数据转换
为GeoRSS 229
11.7.5 构建更通用的
getdata.aspx 230
11.8 部署解决方案 231
11.8.1 GeoRSS的问题 232
11.8.2 使用iFrame 233
11.9 其他建议 235
11.9.1 其他地图API 235
11.9.2 添加动画 236
11.10 本章小结 236
11.11 本章练习 237
第12章 使用JSON 239
12.1 作战计划:使用JSON和REST
连结Yahoo与Amazon 239
12.1.1 理解体系结构 240
12.1.2 工作流程 240
12.1.3 动态脚本 242
12.1.4 什么是JSON? 244
12.1.5 JSON表示法 245
12.2 可公开访问的JSON API 246
12.2.1 JSON的优势 247
12.2.2 如何从Amazon得到
JSON? 247
12.2.3 搜索Amazon客户 249
12.2.4 JSON XSL文件 251
12.2.5 处理JSON对象 255
12.2.6 测试完成的应用程序 256
12.3 其他建议 257
12.4 本章小结 258
12.5 本章练习 258
第13章 性能改善 259
13.1 作战计划:Google加
Amazon 259
13.1.1 理解体系结构 260
13.1.2 工作流程 260
13.2 异步技术 262
13.2.1 理解委托 262
13.2.2 使用MethodAsync 264
13.3 Google API 271
13.4 构建Amazon Google数据
概要 273
13.5 使用PageAsyncTask 274
13.5.1 注册一个
PageAsyncTask 275
13.5.2 SOAP代理开始和结束 275
13.5.3 Google Begin任务 276
13.5.4 Google End任务 276
13.5.5 Amazon Begin和End
任务 278
13.5.6 在PreRenderComplete
事件中混合结果 279
13.5.7 Google和Amazon结果
分页显示 281
13.5.8 测试应用程序 282
13.5.9 注册A9.com 283
13.6 本章小结 284
13.7 本章练习 285
第14章 移动Amazon 287
14.1 作战计划:在BlackBerry中
使用REST查询Amazon 287
14.1.1 理解体系结构 287
14.1.2 工作流程 288
14.2 安装模拟器 289
14.3 WML概述 290
14.3.1 WML格式的网页 291
14.3.2 WML表单 291
14.4 转换Amazon数据为WML 293
14.5 搜索范例 293
14.5.1 构建搜索页 294
14.5.2 构建列表页 297
14.5.3 构建细节页 300
14.6 其他想法 303
14.7 本章小结 304
14.8 本章练习 305
第15章 通用存储解决方案:
Amazon S3 307
15.1 作战计划:通用在线存储 308
15.1.1 理解体系结构 308
15.1.2 工作流程 308
15.1.3 注册S3的访问 309
15.1.4 主要概念 309
15.2 所需参数 311
15.2.1 S3身份验证 311
15.2.2 时间戳 311
15.2.3 计算时间戳 311
15.2.4 计算签名 312
15.2.5 什么是摘要? 313
15.3 桶的使用 314
15.3.1 创建一个桶 314
15.3.2 桶列表 315
15.3.3 删除一个桶 315
15.3.4 上载对象 316
15.3.5 权限 318
15.3.6 列出桶中内容 319
15.3.7 删除对象 321
15.4 跟踪使用 321
15.5 其他创意 322
15.5.1 Mechanical Turk 322
15.5.2 Elastic Computing
Cloud 323
15.6 本章小结 323
15.7 标准练习 323
第16章 其他应用介绍 325
16.1 TagLines 325
16.1.1 理解体系结构 326
16.1.2 Yahoo Term
Extraction API 327
16.1.3 额外增强 328
16.2 Zollage 329
16.3 Amazon Zuggest 333
16.3.1 理解体系结构 334
16.3.2 Zuggest的功能 334
16.4 Robocast 335
16.5 BaeBo 336
16.6 其他创意 337
16.6.1 使用Amazon图像进行
图灵测试 337
16.6.2 什么是图灵测试? 337
16.7 使用Microsoft Atlas 338
16.8 和Microsoft门户集成 338
16.8.1 Microsoft Gadget 339
16.8.2 Gadget设计指导 339
16.9 使用S3管理邮件附件 340
16.10 通过Windows Media Center
访问Amazon 340
16.11 本章小结 340
附录A ECS FAQ 343
附录B 练习答案 353
??
Mashups Web 2.0开发技术——基于Amazon.com
目 录
X
XI