Google Chrome团队近期发布了Web Intents,这是一个API,它允许Web应用集成第三方服务而不需要使用每一个第三方服务自有的API。Web Intents等于是Android intents的Web版,它的实现原理是使用了后期运行时绑定机制,这就使得应用程序和服务之间的关系式松耦合。Web Intents还提供了十分用户友好的机制来控制服务集成以及简化开发过程,这样就将用户置于主导位置。

如果你看到这段文字,说明您正使用RSS阅读或转自《一棵树-博客园》,原文地址:Web Intents:Google的内部WebApp互联机制

在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

Web Intents:Google的内部WebApp互联机制相关推荐

  1. WEB请求过程(http解析,浏览器缓存机制,域名解析,cdn分发)

    WEB请求过程(http解析,浏览器缓存机制,域名解析,cdn分发) 目录 WEB请求过程(http解析,浏览器缓存机制,域名解析,cdn分发) 概述 HTTP解析 HTTP请求头 HTTP响应头 H ...

  2. web.xml文件中的web-app元素

    [转载]web.xml文件中的web-app元素 (2012-05-24 13:35:57) 转载▼ 标签: 转载 分类: java 挺全 的 呵呵呵 转了 原文地址:web.xml文件中的web-a ...

  3. web.xml文件中的web-app元素 部署

    [转载]web.xml文件中的web-app元素 (2012-05-24 13:35:57) 转载▼ 标签: 转载 分类: java 挺全 的 呵呵呵 转了 原文地址:web.xml文件中的web-a ...

  4. google play商店应用过滤机制,设备应用不兼容的说明及解决办法

    Google Play会过滤出那些对用户可见的应用程序,因此用户只能看到和下载那些跟他们的设备兼容的应用程序.通过功能的兼容性是过滤应用程序的方法之一. Google Play通过把以下两项内容进行比 ...

  5. 计算机网络是互相连接的自治系统,自治系统内ip子网和sdn子网的互联机制imisa-江苏计算机网络.pdf...

    自治系统内ip子网和sdn子网的互联机制imisa-江苏计算机网络 第35 卷第Z2 期 通 信 学 报 Vol.35 No. Z2 2014年11月 JournalonCommunications ...

  6. 好程序员web前端分享JS引擎的执行机制

    好程序员web前端分享JS引擎的执行机制,请先着重牢记两点!JS是单线程语言. JS的EventLoop是JS的执行机制.深入了解JS的执行,就等于深入了解JS里的eventloop. 1.灵魂三问: ...

  7. 05-Servlet与内部加载机制(part1)

     一.什么是Servlet Servlet 运行在服务端的Java小程序, 是sun公司提供一套规范(接口)     主要功能: 用来处理客户端请求 响应给浏览器的动态资源 servlet的实质就是j ...

  8. 聊一聊大厂内部的安全管理机制

    工作了两个月了体会到了很多之前做外包小项目没有的东西,不得不说大厂的还是有自己一套的完善的体制,不会像B站那样泄露自己整个后台的源码这种事情发生. 电脑办公 比如说在使用电脑办公这方面,刚入职那天每个 ...

  9. Java web接入google身份验证器二次验证

    实现原理参考: https://blog.seetee.me/post/2011/google-two-step-verification/ 第一步: maven工程加入依赖 <dependen ...

最新文章

  1. 数据结构——最短路径算法之floyd算法
  2. mysql8中怎么增删一列_MYSQL 第八课 数据的增删改
  3. 关于apache的虚拟主机配置
  4. PyTorch 1.0 中文文档正式接受校对 | ApacheCN
  5. 因涉嫌信披违规 神州优车被证监会立案调查
  6. 测试用例管理工具_检测Bug很难吗?推荐优质的测试管理工具
  7. 【LINUX系列】之字符串搜索命令
  8. 收藏个支持进度条与文件拖拽上传的js File Uploader
  9. 隐马尔科夫模型HMM学习最佳范例
  10. webstorm设置中文界面
  11. abaqus模拟单向压缩实验
  12. Spring的两种定时器
  13. html5 粽子飘落,飘落的丁香花阅读*
  14. BGP 模式下 Calico 与 MetalLB 的组合
  15. java微信投票_微信小程序投票功能
  16. 组态王 6.55 启停plc_成套设备PLC编程深圳PLC编程
  17. 三角学(一)公式,恒等式,函数和难题
  18. python 大数据开发工程师_大数据系列之大数据开发工程师
  19. 风控每日一问:互联网金融产品如何利用大数据做风控?
  20. 【d3.js实践教程01】d3基本操作

热门文章

  1. 1050. 螺旋矩阵(25)
  2. Activity的插件化(三)
  3. 乐视美国官网下线,官方公告称一周后还会回来
  4. 友盟分享和cocos2dx符合重复duplicate symbol 解决方案
  5. 如何点击TextField不弹出键盘?
  6. 排序算法之冒泡,选择,插入
  7. 数据库的垂直划分和水平划分
  8. [翻译]通过调用多个动作创建ASP.NET MVC视图
  9. 使IIS服务器支持下载 apk/ipa 安装包
  10. 18.移动架构数据库升级解决方案