mashup 作为快速整合数据的一种应用开发模式,能够非常快速的把与某个主题相关的信息整合在一起,以满足情景式应用的需求。情景式 mashup 应用要求能够比较快速的构建,利用开放 API 和工具就成为最佳的选择。
1. Mashup的架构
相对于一般的B/S、C/S架构来说,Mashup的应用采用了一种新的架构方式,用一个词可以概括:三足鼎立。
Mashup采用了"数据提供者──Mashup服务提供者──用户"的三层应用,如图所示。
从图中可以看到,Mashup的架构由三者构成:Web服务、Mashup服务以及用户。这三者在逻辑上与物理上都是相互隔离的。Web服务提供源数据,比如地图信息、新闻数据、天气信息等;Mashup服务将这些源数据进行了重新包装与组装;用户使用浏览器访问Mashup的服务,而不是Web服务的源服务。
2. Web协议--Mashup的数据传输
跨平台的、轻量级的、结构化的、面向内容的Web协议促进了Web服务以及Mashup技术的发展,简化了Web服务与Mashup服务之间的沟通成本,提高了沟通效率。在这些协议中,最典型的就是XMP-RPC、SOAP与REST。
XML-RPC属于第一代的XML协议,XML-RPC使用HTTP协议,通过XML封装调用函数然后进行远端过程调用,它为服务端和客户端的信息交换提供了一种简单方法。XML-RPC是跨平台的Web协议。
SOAP(Simple Object Access Protocol,简单对象访问协议)是用于在Web服务与用户电脑之间传输结构化的信息,SOAP消息依赖于XML,这样使得跨平台的电脑可以通过HTTP交换XML信息。SOAP属于第二代的Web协议。
在REST(Representational State Transfer,表象化状态改变)的实现方案中,该模式与Web服务的交互相比XML-RPC与SOAP来说,更加的简洁。需要注意的是,REST是一个设计风格,而不是一个网络标准,现在已经得到了广泛的应用。
3. RSS与Atom--Mashup的数据存储
RSS(Really Simple Syndication)是一种消息格式规范,RSS基于XML,使用结构化的方式组织消息内容。RSS多用于资料更新型的网站,例如Blog、新闻、音频或视频的网站。RSS文件包含了发布的文章全文或是节录的文字以及RSS发布者添加的其他信息,这样别人可以方便的订阅或者聚合不同的RSS源。在Mashup应用中,RSS是一种重要的也是非常常见的数据来源格式,比如,将新浪新闻的RSS来源根据新闻地的Tag分类,显示在电子地图上。RSS的结构化、轻量级等特性,使得它深受Web开发人员的喜爱。
Atom借鉴了各种版本RSS的使用经验,被许多的聚合工具广泛使用在发布和使用上,Atom的出现是为了解决RSS目前的部分问题,降低Web聚合应用的开发难度。Atom对RSS的内容模型、数据格式、模块化等方面做出了优化,因此可以将Atom看成是类似于RSS的优化版本,同样受到Web开发人员的青睐。
4、mashup 中使用的 API 和工具列表
API工具 作用
Google 地图 在地图上展示全球各个国家和地区的甲型 H1N1 流感的确认病例和死亡人数。
屏幕抓取 从 HTML 页面中抓取数据,提供给 Google 地图使用。
微软必应 搜索甲型 H1N1 流感相关的视频。
雅虎 Pipes 将甲型 H1N1 流感相关的新闻和博客的多个订阅源进行整合。
Google AJAX供稿API 将 RSS/Atom 订阅源转换成 JSON 格式。
Delicious搜索甲型 H1N1流感相关的网址。
Flickr 搜索甲型H1N1 流感相关的图片。
Identi.ca 搜索甲型H1N1 流感相关的微博客内容。
Google App Engine 部署示例 mashup 应用。