7/22/2008 1:39:49 AM | [转帖]Mashups:Web 应用程序新成员
一种新型的基于 Web 的数据集成应用程序正在 Internet 上逐渐兴起。通常用术语 mashup 表示,它们的流行萌芽于对交互式用户参与和集成第三方数据的类似于科学怪人方式的重视。我们使用萌芽一词是有一定原因的;mashup Web 站点的特点就表现为它正在 Web 上扎根发芽,它们利用了从组织边界之外的数据源获取的内容和功能。
mashup 这种隐晦的数据集成定义当然不是非常严格。要深入了解什么是 mashup,就应该了解一下这个单词的起源:它源于流行音乐,mashup 是从两首不同的歌曲(通常属于不同的流派)中混合演唱和乐器的音轨而构成的一首新歌。与那些 “bastard pop” 歌曲类似,mashup 也是内容的一种不常见的创新组合(通常都源自于无关的数据源),这都是人工进行合成的(而不是通过计算机来合成的)。
那么,mashup 看起来到底是什么样子呢?ChicagoCrime.org 的 Web 站点上有非常直观的例子,它解释了地图 mashup 到底是什么。最初广泛流行起来的 mashup 之一是一个 Web 站点,它将芝加哥警局在线数据库中的犯罪记录与 Google Maps 上的地图复合在一起。用户可以与 mashup 站点进行交互,例如告诉它在图形界面上显示一个包含图钉的地图,图钉展示南加州最近所有入室抢劫案件的详细信息。这种概念和呈现方式非常简单,犯罪和地图数据复合之后提供的可视化的功能非常强大。
在 Mashup 流派 中,我们探索了流行的 mashup,包括地图 mashup。相关技术 简要介绍了与 mashup 的构建和操作有关的技术前景。技术挑战 和 社会挑战 分别介绍了影响 mashup 的主要技术挑战和社会挑战。
Mashup 类型
在本节中,我们将简要介绍对出名的 mashup 类型进行的一些调查。
地图 mashup
在这个阶段的信息技术中,人们搜集大量有关事物和行为的数据,二者都常常具有位置注释信息。所有这些包含位置数据的不同数据集均可利用地图通过令人惊奇的图形化方式呈现出来。mashup 蓬勃发展的一种主要动力就是 Google 公开了自己的 Google Maps API。这仿佛打开了一道大门,让 Web 开发人员(包括爱好者、修补程序开发人员和其他一些人)可以在地图中包含所有类型的数据(从原子弹灾难到波士顿的 CowParade 奶牛都可以)。为了不落于人后,Microsoft(Virtual Earth)、Yahoo(Yahoo Maps)和 AOL(MapQuest)也很快相继公开了自己的 API。
视频和图像 mashup
图像主机和社交网络站点(例如 Flickr 使用自己的 API 来共享图像)的兴起导致出现了很多有趣的 mashup。由于内容提供者拥有与其保存的图像相关的元数据(例如谁拍的照片,照片的内容是什么,在何时何地拍摄的等等),mashup 的设计者可以将这些照片和其他与元数据相关的信息放到一起。例如,mashup 可以对歌曲或诗词进行分析,从而将相关照片拼接在一起,或者基于相同的照片元数据(标题、时间戳或其他元数据)显示社交网络图。另外一个例子可能以一个 Web 站点(例如 CNN 之类的新闻站点)作为输入,并在新闻中通过照片匹配而将照片中的内容以文字的形式呈现出来。
搜索和购物 mashup
搜索和购物 mashup 在 mashup 这个术语出现之前就已经存在很长时间了。在 Web API 出现之前,有相当多的购物工具,例如 BizRate、PriceGrabber、MySimon 和 Google 的 Froogle,都使用了 B2B 技术或屏幕抓取的方式来累计相关的价格数据。为了促进 mashup 和其他有趣的 Web 应用程序的发展,诸如 eBay 和 Amazon 之类的消费网站已经为通过编程访问自己的内容而发布了自己的 API。
新闻 mashup
新闻源(例如纽约时报、BBC 或路透社)已从 2002 年起使用 RSS 和 Atom 之类的联合技术来发布各个主题的新闻提要。以联合技术为基础的 mashup 可以聚集一名用户的提要,并将其通过 Web 呈现出来,创建个性化的报纸,从而满足读者独特的兴趣。Diggdot.us 正是这样的一个例子,它合并了 Digg.com、Slashdot.org 和 Del.icio.us 上与技术有关的内容。
相关技术
本节概要介绍了可以促进 mashup 发展的技术。有关这些技术的更多信息,请参阅本文最后的 参考资料。
架构
mashup 程序从架构上是由 3 个不同的部分组成的,它们在逻辑上和物理上都是相互脱离的(可能由网络和组织边界分隔):API/内容提供者、mashup 站点和客户机的 Web 浏览器。
- API/内容提供者。它们是(有时是未知的)正在进行融合的内容的提供者。在 ChicagoCrime.org mashup 的例子中,提供者是 Google 和芝加哥警察局。为了方便数据的检索,提供者通常会将自己的内容通过 Web 协议对外提供(例如 REST、Web 服务和 RSS/Atom,稍后将加以介绍)。然而,很多有趣的潜在数据源可能并没有方便地对外提供 API。从诸如 Wikipedia、TV Guide 和所有政府和公共领域的 Web 站点上提取内容的 mashup 都是通过一种称为屏幕抓取(screen scraping) 的技术实现的。 在这种情况中,屏幕抓取就意味着使用一种工具从内容提供者那里提取信息的过程,这个工具会尝试对提供者的专为阅读而设计的页面进行分析。
- mashup 站点。即 mashup 所在的地方。非常有趣的是,这不过是因为这里是 mashup 逻辑所在的地方,而不是执行这些逻辑的地方。从一方面来说,mashup 可以直接使用服务器端动态内容生成技术(例如 Java servlets、CGI、PHP 或 ASP)实现为类似传统 Web 应用程序。
另外,合并内容可以直接在客户机的浏览器中通过客户机端脚本(即 JavaScript)或 applet 生成。这种客户机端的逻辑通常都是直接在 mashup 的 Web 页面中嵌入的代码与这些 Web 页面引用的脚本 API 库或 applet(由内容提供者提供)的组合。mashup 使用的这种方法可以称为胖 Internet 应用程序(RIA),这意味着它们是以交互式用户体验为导向的。(胖 Internet 应用程序具有 “Web 2.0” 的一个特点,Web 2.0 是 WWW 的新一代服务。)客户机端进行数据集成的优点包括:对 mashup 服务器的所产生的负载较轻(数据可以直接从内容提供者那里传送过来)、具有更好无缝用户体验(页面可以请求对内容的一部分进行更新,而不用刷新整个页面)。Google Maps API 的设计就是为了通过浏览器端的 JavaScript 进行访问,这是客户机端技术的一个例子。
通常,mashup 都使用服务器和客户机端逻辑的组合来实现自己的数据集成。很多 mashup 应用程序都使用了直接由用户提供的数据,(至少)使一个数据集是本地的。另外,对多数据源的数据执行复杂查询(例如 “请显示在 Kevin Bacon 的电影中出演角色的男演员所购买的房产的平均价格”)所需要的计算是不可能在客户机的 Web 浏览器中执行的。 - 客户机的 Web 浏览器。这是以图形化的方式呈现应用程序的地方,也是用户交互发生的地方。正如上面介绍的一样,mashup 通常都使用客户机端的逻辑来构建合成内容。
Ajax
关于 Ajax 究竟是否是一个缩写词(有人认为它表示 “Asynchronous JavaScript + XML”)还存在争论。不论如何,Ajax 都是一个 Web 应用模型,而不是一种特定的技术。它包括几种关注内容的异步加载和呈现的技术:
- XHTML 和用于确定呈现风格的 CSS
- 浏览器为动态显示和交互所提供的文档对象模型(DOM)API
- 异步数据交换,通常是 XML 数据
- 浏览器端的脚本,主要是 JavaScript
将这些技术结合在一起使用时,它们的目标是通过与内容服务器交换少量的数据为用户创造平滑、良好的 Web 体验,而不用在用户执行某些操作之后重新加载并重新呈现整个页面。我们可以使用各种 Ajax 工具包和库(例如 Sajax 或 Zimbra)为 mashup 构建 Ajax 引擎,这通常是使用 JavaScript 实现的。Google Maps API 包括一个专用的 Ajax 引擎,它对用户体验的影响着实强大:它的工作方式类似于一个真正的本地应用程序,其中没有滚动条可以操作,也没有移动按钮强制页面重新加载。


评论
发布者 dillyking
7/22/2008 10:53:09 AM
对的。。mashup就是利用webservice等技术建立的web应用程序。。
发布者 小工
7/22/2008 11:22:20 AM
发布者 虫的传人
9/8/2008 8:14:39 PM