OpenSocial 是 一组用于创建在网络上运行的社交应用程序。OpenSocial 的 目标是:通过提供一个可在许多不同的环境中使用的通用API ,让 更多的应用程序可以被更多的用户访问。开发人员可以使用标准的javascript 和html 创建应用程序,这些应用程序可在已应用的OpenSocial 的社交网站上运行。
- OpenSocial 整 体上一般由下面的几个部分组成:
-
OpenSocial 容 器
提交OpenSocial API 服务的网站称之为OpenSocial 窗 口,它暴露OpenSocial API ,这些API 包括js 及rest 等风格的调用服务。
-
Gadget 容 器
social app 一般是通过open social 中的gadget 规范提供的xml 文件完成编写的,xml 文件中可以定义展示的html 及javascript 执行代码,这些xml 文件由gadget 容器来完成解析,并转化为html 页面以呈现给用户。支持open social 的社交网站提供这个容器,开发人员将开发的OpenSocial app(xml) 提交给容器,由容器实现将OpenSocial 应 用提供给用户使用。
-
OpenSocial app
指由第三方开发人员开发的社交应用,应用一 般由xml 文件组成。它们通过javascript 调用OpenSocial 提供的标准通用API 来和社交网站进行交互。由xml 文件组成的OpenSocial 应用如果要和第三方网站进行通讯一般也只能通过javascript 的ajax 调用来完成。它运行于社交网站提供的Gadget Container 中。
另一种类型的OpenSocial 应用是通过rest 接口和社交网站进行通过,以完成和社交网站的交互。OpenSocial 应用运行于自己独立的服务器上,可以采用各种编程语 言。
-
- OpenSocial 开放的数据
OpenSocial 提 供了标准通用的javascript api 及rest/rpc 等接口来支持小应用和容器的交互能力。通过这些标准的javascript api 及rest api ,小应用可以读取社交网站提供的下面各类数据:
-
People:
People提 供对用户信息的访问接口,它包含了用户的基本信息或其他一扩展的信息。如People对 应的人的姓名、邮件、兴趣爱好及他所拥用的物品等信息。
-
关系
关系数据提供了一个人和其他人的关系的数据接口。关系接口并不局限于查看自己的 好友关系,也可以查看其他人的一些好友关系。
-
动态
提供查找一个人的活动记录。这些活动可以包含容器自身的交互,这些活动可以包含 容器自身的交互(例如,更新您的个人资料或安装新的小工具),也可以包含与 OpenSocial 应用程序的交互(例如,为您的好友发送虚拟礼物或在游戏中创造新的高分)。
-
持久化存储
一些第三方开发的小应用需要将用户和应用交互的信息保存下来,以便下次使用来提 高用户体验。OpenSocial 容器提供数据保存及查询能力, 以增强应用的定制能力。
-
-
OpenSocial 的 优点
<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } -->-
OpenSocial 是 开放的,并由几大互联巨头支持,因此在技术及开发支持上都有着强大的后盾。对于开发人员来说将会有更多的文档及相关的技术人员支撑降低开发上的成本和难 度。
-
由于对社交网络数据并互接口的标准化,使第三方开发的小应用在开发后,经过少量 的改动,甚至于不用任何变动即可部署到不同的社交网站中。
-
小应用是由html 及javascript 编写而成,因此会使应用的hosting 会非常的容易方便,只要将编写的xml 上传到一个互联网能访问的一个url 上即可,且对服务器没啥特别的要求。
-
对于社交网站,支持OpenSocial 标准,使网站支持第三方的小应用更为简单。通过提供的 容器,可以很方便的将支持OpenSocial 标准的小应用引入 到自己的网站中,而且这样的小应用资源也将会越来越丰富。
-
可以通过简单的html 及javascript 来实现逻辑较为简单的小应用。也可以通过REST 接口来实现运行于自己服务器的较为复杂的小应用。
-
由于容器提供了用户身份的认证方法及相关的开发API ,使开发者更容易开发基于OpenSocial 的应用,也使社交网站更容易开放自身的API 。
-
-
OpenSocial 的 缺点:
-
安全性不知道算不算一个缺点了,由于关于opensocial 的安全性资料也比较少,很难作出一个断定。但由于调用 接口是javascript ,从目前撑握的情况来看。实现安全性 主要是靠签名的方式,实现单一,难以找到更的好方法。
-
虽然社交网站都号称支持OpenSocial ,但出于各种考虑,大多数都只支持了其中的部分功能及 数据,这方面包括数据的开改性,功能的实现等。
-
OpenSocial 的 标准成熟度应该来说还是不够的,版本的升级一般会伴随着较多的接口变动,使支持OpenSocial 在 支持新标准时往往需要做更多的事情,这也导致了各网站对标准的支持往往不一样,使小应用为了适应在各网站上运行而需要做更多的事情。
-
对于想支持OpenSocial 的社交网站来说,目前成熟的OpenSocail 容器也没有,开源的shindig 还处于开发版中,在稳定性及性能上都有待验证。同时它的相关 文档基本上没有,如果使用则要靠阅读代码的方式,使开发的难度增加。同时如果完全由自己来编写容器,我想花的成本会更大。
-
-
一个想支持OpenSocial 的网站应该需要做些什么?
-
需要充分理解和熟悉OpenSocial 规范及它的更深层含义。
-
确定数据的开放性。标准里规定的哪些数据对象及每个数据对象里的哪些属性可以提 供给开发者。
-
编写OpenSocial 容 器,或者使用现成的OpenSocial 容器,目前我只发现一个 还不太成熟的Shindig 。
-
实现OpenSocial 容 器里的SPI ,集成网站和OpenSocial 容器,以便提供OpenSocial 服务。
-
考虑第三方应用如何和网站进行集成。
-