使用开放 API 和工具快速开发情景式 mashup 应用

 

情景式应用是快速开发的满足用户特定需求的“足够好”的应用。mashup 作为快速整合数据的一种应用开发模式,能够非常快速的把与某个主题相关的信息整合在一起,以满足情景式应用的需求。情景式 mashup 应用要求能够比较快速的构建,利用开放 API 和工具就成为最佳的选择。本文围绕一个示例 mashup 应用,详细介绍了 Google 地图、屏幕抓取、微软必应、雅虎 Pipes、Delicious、Flickr 和 Identi.ca 等开放 API 和工具。

在 Web 2.0 的时代,每个人的热情和创造性都被释放出来,张扬自己的个性。一方面,用户不再满足于大而全的复杂应用,而是有很多个性化的需求;另外一方面,开放 API 和工具的流行,使得具备一定编程基础的普通用户也能进行应用开发。海量的个性化需求已经无法由一般的企业应用来满足,情景式应用和 mashup 就成为满足用户个性化需求的最佳工具。下面首先介绍情景式 mashup 应用的相关背景。

情景式 mashup 应用

在介绍情景式 mashup 应用之前,首先介绍一下一般意义上的情景式应用。

情景式应用

情景式应用(situational application)不同于一般的企业应用。一般的企业应用是用来解决一系列复杂的业务问题。开发企业应用需要比较长的时间周期,需要详细的项目计划,也需要较多的人力资源。而情景式应用则通常只用来满足某个特定的需求,因此开发时间较短,所需的人力也较少。通常少数几个开发人员用几天的时间就可以完成一个情景式应用。企业应用的使用和维护时间都比较长,后期的维护成本比较高;而情景式应用的生命周期较短,是用完就可以丢弃的。

与企业应用相比,情景式应用目前受到越来越多的关注,其中的原因主要有下面几个方面:

  • 更快的满足用户的需求。情景式应用的开发周期短,可以从用户最核心的需求出发,快速的搭建出可以运行的版本,从而更早的获取用户反馈并不断改进。
  • “长尾”的需求。每个用户对于应用的具体需求是不同的。一般的企业应用功能较多,并且比较通用,属于“大头”应用;而情景式应用着眼于解决每个用户具体的独特的需求,属于“长尾”应用。目前越来越多的普通人投入到软件开发的行列中来,他们只需要了解不多的技术知识,就可以利用现有的 API 和工具来创建属于自己的情景式应用。
  • “足够好”的应用。与企业应用开发中严谨的需求分析、开发和测试的流程不同,情景式应用追求的是“足够好”的目标。也就是情景式应用只需要在大部分情况下能够工作就可以了。这使得开发人员可以更快的完成并发布自己的应用。

mashup 是一类典型的情景式应用,也是本文的主题。下面对 mashup 做简要的介绍。

 

mashup

mashup 一般翻译成“混搭”。这个词来源于流行音乐中的一种编曲方法。这种方法把来自不同曲目的各个部分组合起来,形成新的歌曲。这个词被应用到计算机领域中之后,不同的人对它有不同的见解。维基百科上对于 mashup 的解释是:mashup 是将来自多个数据源的数据组合成一个集成的工具的 Web 应用,这个工具能提供原来的数据源所不能提供的新的 Web 服务。mashup 的精髓在于提供新的服务,这就是所谓的“1+1>2”,从组合中获取新的价值。用两个或多个数据源作为输入,能产生的输出却不仅仅是这些输入的简单相加。

典型的 mashup 会使用企业内容或是 Web 上的数据,并围绕一个特定的主题来组织。在创建 mashup 的过程中,可以使用 Web 上的开放 API 和工具。本文将根据一个主题来创建 mashup 应用,并介绍相关的开放 API 与工具。下面简要介绍此主题。

示例 mashup 应用 - 甲型 H1N1 流感最新动态 mashup

甲型 H1N1 流感自流行以来,一直是大家关注的焦点。大家都比较关心流感的最新状态,包括相关新闻、疫情动态和防治知识等。如果要了解甲型 H1N1 流感的动态,可以查看的信息类型有很多,包括新闻、博客、图片、视频和微博客等。本文的示例 mashup 应用将把与甲型 H1N1 流感相关的各类信息都整合起来,在一个 Web 应用中呈现出来。

该 mashup 应用使用了一系列 Web 上的开放 API 与工具来完成。这些 API 和工具包括 Google 地图、屏幕抓取、微软必应、雅虎 Pipes、Delicious、Flickr 和 Identi.ca 等,具体见 表 1。示例 mashup 应用使用的 JavaScript 框架是 Dojo 1.3.1。


表 1. 示例 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 应用。

最终完成的示例 mashup 的运行效果见 图 1


图 1. 甲型 H1N1 流感最新动态 mashup

在介绍具体的 API 和工具之前,下面先介绍开放 API 的相关话题。





回页首

开放 API

开放 API 指的是服务提供商将其服务暴露成编程接口。开放 API 是目前应用最广,功能最强大的 mashup 组件。目前已经有很多公司提供内容丰富的开放 API,这些公司包括 Google、雅虎、eBay、亚马逊等。从 Programmable Web 网站上面可以找到非常多的开放 API。这些 API 所使用的协议也有所不同,典型的协议有 Atom/RSS 订阅源、REST、SOAP、JSON 和 XML-RPC 等。要使用某个开放 API,需要根据它的协议要求编写对应的代码。不同协议的复杂度也不相同,SOAP 和 XML-RPC 比较复杂,而 Atom/RSS 订阅源和 REST 使用起来比较简单,JSON 则非常适合在浏览器端使用。一般来说,开放 API 都提供多种可选的协议,可以根据需要选择适合的协议来使用。

在本文的示例 mashup 应用中,主要使用的是 JSON 协议。使用 JSON 协议的好处是在浏览器中可以直接使用,不需要额外的解析过程。另外一个好处是 HTML 中的

你可能感兴趣的:(使用开放 API 和工具快速开发情景式 mashup 应用)