- 浏览: 217478 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (212)
- 架构师-01-文档目录 (3)
- 架构师-02-组织 (7)
- 架构师-03-实施 (35)
- 架构师-04-监督 (14)
- 架构师-05-工具 (29)
- 架构师-09-引用文集 (63)
- 专题-01-微博应用 (5)
- 专题-02-GoogleEarth (1)
- 专题-03-运行维护 (9)
- 专题-04-经纪人营平 (3)
- 专题-05-RCP&RAP (5)
- 专题-06-框架PK (3)
- 专题-07-Android (13)
- 专题-08-UI (3)
- 专题-liferay6 (6)
- 专题-extjs4 (3)
- 专题-CXF (3)
- 专题-封闭网络的社会化 (0)
- 扯谈 (4)
- 外包 (9)
- 专题-C++ (4)
- 专题-09-BI (2)
- jquery&easyui (2)
- 专题-搜索引擎 (1)
最新评论
-
brighter:
oMapper.configure(Deserializati ...
jackson 抛出 bean 中没有定义字段的错误,只好用 gson -
PassFeed_free:
public Bitmap decode(ImageDecod ...
android universalimageloader 几点改进 -
PassFeed_free:
楼主你好, 请问这个库, 在大屏显示高清图片 ,listvie ...
android universalimageloader 几点改进 -
yonghong:
楼主只是揣测
JIRA4.1 升级到 JIRA5.1 -
abdxj:
"Could NOT parse license t ...
JIRA4.1 升级到 JIRA5.1
引用说明:原文来自于http://sirius.01242.org/some-exp-about-opensocial/,为了方便本人阅读,文本格式略有调整。
什么是OpenSocial:
OpenSocial为构建跨多个网站的社交应用程序提供了一组通用 API。开发人员可以使用标准 JavaScript 和 HTML 创建应用程序,用以访问社交网络里的朋友并更新对应的Feeds.
本文中使用的术语说明:
- 开发者:在开放平台上开发应用的人
- 开发服务器:开发者自己保存应用数据的服务器
- 开放平台:具有开放协议的SNS网站,比如校内,myspace,天涯,这里特指支持OpenSocial的平台
- 用户:访问开放平台的最终用户
- OpenSocial API:本文特指OpenSocial v0.7 javascript API
- XML spec:开发OpenSocial应用中所使用的XML,你需要发布这个XML的url到开放平台上来发布你的应用
在朋友买卖应用示例的开发中,我们选择了OpenSocial 0.7 版本来开发,因为大部分的平台都支持此版本
首先需要明白的是由于使用OpenSocial javascript API,开发流程和开发一般的网站有一些不同,虽然我也开发过几年的网站,但是一开始我就在观点转变上费了一些功夫,
我以往开发网站一般的流程是 用户发出请求->服务器端准备数据,生成页面->返回给用户,现在在用户和开发者之间多了一个开放平台,而且用户资料数据是在开放平台一端,
这些资料还无法通过开发服务器直接取得(当然,如果使用RESTful API的话,这个是成立的,不过不在本文讨论范围),只有通过页面上的OpenSocial API来取得,
这样就变成了:
示意图:http://easy-opensocial-apps.googlecode.com/files/test%282%29.png
用户发出请求->开放平台->请求XML spec->生成HTML->
通过HTML中的javascript调用OpenSocial API->请求开放平台用户数据->请求应用相关数据->使用数据生成页面->用户.
有点绕圈子,毕竟是一个三方合作的过程,原来开放网站的时候AJAX只是一个锦上添花的东西,增强用户体验,而这里所有都是基于AJAX的调用,感觉上一个应用就像一个用javascript写的客户端程序,开发服务器上只是提供基本的数据,也就是说咱们的思路还得从瘦客户端转到胖客户端上来,这应该也是google许多产品的开发模式
然后我们设计一下程序的结构,由于朋友买卖没有几个页面,所以把所有的html都放到了js文件中,当用户在页面之间切换时,用javascript更改dom结构,这样可以做到不用刷新页面,
这个项目中使用了javascript的模板trimpath,这是一个开源项目,具体可参见http://code.google.com/p/trimpath/wiki/JavaScriptTemplates
需要的数据都通过AJAX方式从开放平台和开发服务器上取得,用户个人信息,朋友信息用OpenSocial API获得,从开发服务器上取应用相关数据使用OpenSocial API中的makeRequest方法,
开发服务器端的工作比较少,基本上实现几个请求的操作就可以了,比如买卖,做动作,然后实现数据的存储就可以了.
需要注意的是有些开放平台上不支持获取朋友的朋友,意思就是如果A访问B的页面,B有一个奴隶是C,但是A和C之间并不是朋友,这种情况下A不能取得C的用户信息.
针对这种情况,为了保证兼容性,在用户向开放服务器获取应用相关数据的时候,发送了用户的个人信息,并在开放服务器上做了保存,保存的数据也不多,只有姓名和照片url两项,这样在应用内部大家就可以互相访问了,这样做也方便了在应用内部的全局排名.
还要注意的一点是开放服务器并没有保存用户的朋友数据,这个数据经常变化,也没有一个通知的机制,所以当用户选择可以买哪些朋友时,实际上是将所有朋友的id发送到开发服务器上,然后去筛选,不知道有没有更好的办法.
登录游戏:
用户进入游戏->取得用户个人信息数据->根据用户信息到开发服务器上取买卖数据->将html模板和数据结合,生成html,填充到dom结构中->用户看见页面
买卖,做动作等操作
用户点击动作按钮->发送动作数据到开发服务器->在开发服务器中判断买卖结果,保存数据->返回一条消息ID以及消息参数->将消息数据与消息模板结合,返回用户
这样下来只要前端的javascript和开发服务器的交互接口一致,开发服务器上用任何语言都是没有问题的
实际上现在提供数据的开发服务器端有3个语言的版本
java:http://easy-opensocial-apps.googlecode.com/files/friendforsale-java-1.0.zip
php:http://easy-opensocial-apps.googlecode.com/files/friendforsale-php-server-0.1.zip
python(appengine):http://easy-opensocial-apps.googlecode.com/files/friendforsale-appengine-server-0.1.zip
开发的过程中,我们将常用的功能写成了一个小的框架,easy-OpenSocial-apps-framework-1.0,(特别鸣谢:孔贵宾)具体文档参见http://code.google.com/p/easy-opensocial-apps/wiki/friend_for_sale_overview
开源项目:http://code.google.com/p/easy-opensocial-apps/,这个项目中现在有3个示例程序的源代码下载
tips:
- xml spec不要放在服务器80以外的端口上,某些开放平台上无法访问
- xml spec中图片,css,js的路径要用绝对路径,因为要经过开放平台生成html,路径是从开放平台某服务器开始的
- xml spec中Locale 语言资源文件也要用绝对路径,某些平台不支持相对路径,国内的平台语言大部分使用了ALL_ALL,少数使用了zh-CN_ALL,这个可以通过查看iframe的地址获得
- xml spec中 Content 标签的VIEW 在canvas中使用”default,canvas”,如果只写default,好像shindig某个版本不认
- 你可以将服务器地址放到语言资源文件中,比如<msg name=”frontendURL”>http://www.myopen.com</msg>,然后在xml spec中可以这样使用:<script type=”text/javascript” src=”__MSG_frontendURL__/somescript.js” ></script>,在频繁切换开发服务器和发布服务器的时候比较有用
- myspace上无法通过发布xml来发布应用,你需要将xml中的内容粘贴到”编辑挂件源”中提交才可以.
另:
OpenSocial资料汇总:http://groups.google.com/group/opensocial-china
OpenSocial中国应用大赛:http://code.google.com/intl/zh-CN/events/contest08/
在开发一个opensocial应用的时候,我们都会在xml中加入 <Require feature=”opensocial-0.8″/> 实际上这时候平台会在生成应用的页面的时候往里加入一段相应功能的javascript,让应用可以调用 在某种情况下,我们希望添加扩展一些feature,加入和平台相关的功能 比如我们现在需要加入一个myAlert的功能,弹出一个自定义信息的消息框 这个时候我们需要: 首先,写一段javascript实现myAlert的功能,这里是一个非常简单的函数: –/MyFeature/myfeature.js var myAlert = function(text){ 第二步,写一个feature的描述xml,我们可以参考别的feature的xml,比如pubsub: <feature> name元素就是这个feature的名字,这个名字就是在Require中使用的名字, dependency说明了这个feature的依赖关系,没有rpc这个feature是无法运行的 gadget元素表示需要在生成应用页面时插入的script,可以是多个 container表示需要在container页面中加一段支持的script 了解了这些,我们可以写一个自己的feature描述文件 –/MyFeature/feature.xml <feature> 第三步,在features.txt中加入此feature的描述xml,features.txt文件在shindig-features-1.0-incubating.jar中, 也可以在shindig.properties中修改此文件的指向 shindig.features.default=res://features.txt, 在features.txt最后一行加入MyFeatures/feature.xml 好了,这样就完成了,最后我们写一个应用来测试这个新的feature <?xml version=”1.0″ encoding=”UTF-8″?> 在samplecontainer.html中测试这个应用,应该是直接弹出消息框,内容是”this is my feature:hello”.展shindig:添加平台相关feature
alert(‘this is my feature:’ + text);
};
<name>pubsub</name>
<dependency>rpc</dependency>
<gadget>
<script src=”pubsub.js”/>
</gadget>
<container>
<script src=”pubsub-router.js”/>
</container>
</feature>
<name>myfeature</name>
<gadget>
<script src=”myfeature.js”/>
</gadget>
</feature>
<Module>
<ModulePrefs title=”test my new feature” author=”Sirius”>
<Require feature=”opensocial-0.8″/>
<Require feature=”myfeature”/>
</ModulePrefs>
<Content type=”html”>
<![CDATA[
<script>
myAlert('hello');
</script>
]]>
</Content>
</Module>
发表评论
-
深入理解Java:SimpleDateFormat安全的时间格式化
2014-06-26 01:45 417原文引用自:http://www.cnblogs.com/p ... -
注册MS CRM 2011 online
2014-04-24 00:38 450http://www.cnblogs.com/StoneGa ... -
微信架构推测
2013-08-06 09:45 1305原文:http://wenku.baidu.com/vie ... -
arc-04-10-手机应用的性能测试
2013-01-05 15:01 633手机性能测试的工具一大堆,但专门针对开发手机应用的性能测试工 ... -
GraphicsMagick 介绍及安装
2012-12-26 16:56 1183引用说明:原文来自 http://paris8.org/a/b ... -
在windows系统中生成数字证书-V3
2012-12-10 16:43 979引用说明:原文来自 http://zhouyongqiang. ... -
如何从最大用户并发数推算出系统最大用户数
2012-11-19 14:52 1381引用说明:原来来自 ht ... -
使用JIRA搭建企业问题跟踪系统
2012-07-20 09:33 0原文来自:http://www.blogjava.net/zh ... -
Eclipse rcp/rap 开发经验总结
2012-01-11 23:48 1189有牛人将 Eclipse RCP & RAP 开发经验 ... -
VMware Server 在 CentOS 下的安装与配置
2012-01-08 09:46 1046引用说明:原文来 ... -
rdesktop:Linux 下的远程桌面客户端
2012-01-07 11:37 897引用说明:原文来自于 http://blog. ... -
解决 Oracle 11g存在密码过期问题
2012-01-04 09:52 756引用说明:原文来自 ... -
角色权限,RBAC
2011-12-27 23:00 812引用说明:原文来 ... -
Spring Security 2 配置精讲
2011-12-12 20:10 739引用说明:原文来 ... -
Linux下Mongodb的分布式分片群集(sharding cluster)配置
2011-12-12 09:45 788引用说明:原文来自于http://www.linux ... -
使用 JReble 实现 tomcat 热布署
2011-11-24 09:42 2058甚至有人为了实现热部署,放弃各种框架(struts, spri ... -
基于MongoDB的好友消息动态的实现思路
2011-10-18 13:45 1511引用说明:原文来自 ... -
Linkedin网站技术架构简介
2011-10-11 14:41 1180引用说明:原文来 ... -
微薄后台架构浅析
2011-10-11 14:00 747引用说明:原文来自于http://blog.sina.c ... -
通过 Flick 看数据库集群
2011-09-19 14:14 754原文参见 http://www.cchere.com/arti ...
相关推荐
opensocial-python-client
OpenSocial资料,对开发sns网站有帮助。同时可以让大家理解RESTful风格的协议
Opensocial简介.pdf
opensocial container实现的相关资料很少,个人经过一个星期的整理后,把心得分享一下,希望能帮助到有需要的人。
Opensocial Sample ,学习了!
opensocial java client
OpenSocial规范 本文档提供开放社区规范相关内容
OpenSocial 希望对你们有好处,非常权威,是一些入门教材
利用OpenSocial技术 建立开放平台
12月5日CSDN OpenSocial开放平台会议,Google工程师的演讲PPT之一
骨干开放社交AppDataStore AppDataStore是用于Backbone数据持久性的OpenSocial适配器。 它代替了Backbone.Sync()来处理保存到OpenSocial容器的AppData存储中。用法包含Backbone.js之后,包含Backbone.OpenSocial....
12月5日CSDN OpenSocial开放平台会议,Google工程师的演讲PPT之二
NULL 博文链接:https://djb4ke.iteye.com/blog/663822
Wrox.OpenSocial.Network.Programming.Apr.2009.pdf
aipo-opensocial相关信息执照测试无人机测试
再做opensocialjava版shindig使用maven编译过程中很多的jar不能从网上下载下来。这里有全部的应用到的jar包。受本人权限限制分俩个资源上传。看好资源的编号。
在React中编写的OpenSocial小工具介绍这是创建用于在opensocial容器中托管的opensocial小工具的示例项目。 该项目是通过引导的。 有关如何执行常见任务的信息,请参见最新版本的create-react-app指南。脚步首先安装...
再做opensocialjava版shindig时使用maven编译过程中很多的jar不能从网上下载下来。这里有全部的应用到的jar包。受本人权限限制分俩个资源上传。看好资源的编号。
opensocial-gadget-angularjs-sample 这是一个与angular.js一起使用的opensocial小工具示例,适用于infoScoop OpenSource V4.0。 如何使这项工作 从下载infoscoop-4.0.0.0-quickstart并安装它。 转到管理员页面>小...
2.增加OpenSocial应用模块 ,说明见 http://www.i-fav.com/opensocial.aspx 3.增加用户中心. 4.开放在线视频模块. 5.增加注册用户激活方式. 6.优化代码执行效率. 7.支持多服务器架构,云计算. 8.i-favourite...