Web Intents:Google的内部WebApp互联机制
Google Chrome团队近期发布了Web Intents,这是一个API,它允许Web应用集成第三方服务而不需要使用每一个第三方服务自有的API。Web Intents等于是Android intents的Web版,它的实现原理是使用了后期运行时绑定机制,这就使得应用程序和服务之间的关系式松耦合。Web Intents还提供了十分用户友好的机制来控制服务集成以及简化开发过程,这样就将用户置于主导位置。
在Intents系统中,服务将会显式地注册为使用intents,后者只是一些泛型动作,例如编辑,查看,分享等,以及使用这些动作的数据。在运行过程中,用户需要在注册为同一个动作的多个服务中进行选择。这样被选择的应用以后就会专门负责这个动作。在现实世界中类似的情况便是使用自己的Web应用来发布照片,开发者与其自己编写一个集成各种各样的照片分享服务(例如Flickr或者Picasa)的API,还不如引入Web Intents系统,让自己的Web应用在几行代码便能完全使用浏览器的功能,这样可以将Flickr或者Picasa注册为分享服务,并且可以在之后询问用户选择默认的分享服务。不过现在没有任何一个浏览器能够完全支持这个特性,于是Web Intents项目使用了一个JavaScript插件来让Web Intents应用能够在IE 8和9、Firefox 3以及更高版本,Chrome 5及更高版本和Safari浏览器上运行。
Google软件工程师James Hawkins在Chromium博客上提供了一个详细的JavaScript例子来阐述API功能。
想象一下这样一个创业项目,开发者们要做一个在线照片存储站点,但是却资金不足:开发者不会有足够的资源向它们的应用中加入照片编辑能力,但是他们认为如果不加入这个功能的话,站点就毫无竞争力可言。Web Intents系统仅仅以很小的代价就能够帮助他们做到这些。
var intent = new Intent(Intent.EDIT, ‘image/png’, getImageDataURI());
window.navigator.startActivity(intent, loadEditedImage);
// 这个回调函数将会在服务返回编辑好的照片数据时候调用。
function loadEditedImage(data) {
var image = document.getElementById(‘image’);
setImageData(image, data);
}
当用户访问了她最喜欢的memegen服务,这个站点将会使用这样的声明请求注册对”image/*”类型文件的编辑意图:
<intent
action=”http://webintents.org/edit”
type=”image/*”
/>
当用户初始化编辑动作的时候,这个服务将会调用已注册的图片编辑器。一旦用户选择了Meme Generator,引用的站点将会在新的运行时环境中打开,并且能够加载图片数据:
var intent = window.intent;
memeImg.src = intent.data;
memegenForm.onsubmit = function() {
// 转换图片
addMemeTaglines(memeImg, memeTopText, memeBottomText);
// 将生成完毕的图片返回给客户端
intent.postResult(getImageData(memeImg));
};
一旦postResult()被调用,Meme Generator运行时环境将会关闭,输出的数据会使用传递给startActicity()的回调函数返回给客户端。
一些默认的意图(intent)已经写入了文档:
发现:发现意图是设计为让开发者能够寻找外部服务中的API或者服务。
分享:分享意图是设计为让应用能够提供一个简单的机制能够分享当前页面的数据。用户可以注册任何分享的动作,包括且不限于社交网络和Email服务。“分享”协议可以作为一个轻量级的分享工具。
编辑:编辑意图是为了让应用能够提供一个简单的机制编辑当前页面的数据。用户可以注册任何编辑的动作,包括且不限于图片操作工具和文本编辑器。“编辑”协议可以作为一个轻量级的编辑工具。
查看:查看意图是为了让应用能够提供一个简单的机制查看应用程序中的数据。用户可以注册任何查看的动作,包括且不限于特殊的图片工具或者音频播放器。“查看”协议可以作为一个轻量级的查看工具。
挑选:挑选意图是为了让服务能够允许用户从中选出文件以供客户端应用使用。用户可以注册任何挑选的动作,包括且不限于图片画廊例如Picasa或者Flickr。客户端应用可以是任何一个Email客户端,例如Gmail或者Email。“挑选”协议可以作为一个轻量级的云文件挑选工具。
Google正在和Mozilla协作以统一解决方案。Mozilla也对这个问题非常感兴趣,并且在上个月早些时候通过它们的Open Web App Addon 0.3引入了Web Activities。Open Web App生态系统包括应用程序机器的可读表单,用户的应用存储库,加载的应用程序的表盘以及支持的交互行为。这里面的表单很类似于Web Intents系统里面的意图。
现在还不清楚用户能否广泛的采用,但是看起来它的确是一个不错的应用程序集成以及服务提供者,你怎么想呢?
查看英文原文:Web Intents: Google's Mechanism for Inter WebApp Linking
转自:InfoQ - http://www.infoq.com/cn/news/2011/08/web-intents-chrome