站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
建站程序
开发
服务器
办公软件
开发教程
服务器教程
软件使用教程
运营教程
热门电子书
WordPress教程
宝塔面板教程
CSS教程
Shopify教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
Shindig
”
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
[[image:Shindiglogo.jpg|right]] '''Shindig,'''是一个参考容器,可以运行在任何网站上,用来支持[[OpenSocial]]的社交应用。它最开始是由[[Google]]在2007年开发的,作为[[iGoogle]]的[[Gadget]]容器,然后在2007年12月成为[[Apache]]的一个开源项目。Shindig的主要目的就是为那些希望使用支持OpenSocial规范软件的社交网站提供基础设施,使得社交应用的开发者不用去关心平台的转换问题。目前,很多社交网站都是基于Shindig实现自己的OpenSocial功能。Shindig的另一个目标是多语言实现,目前Shindig有[[Java]]和[[PHP]]两个版本。Shindig的最新发布版本是 2.0.1,实现了OpenSocial 1.1的规范。 == Shindig概况 == *'''软件语言:''' 英语 *'''软件类别:''' 国外软件/[[SNS]] *'''开发语言:''' Java/PHP *'''授权协议:''' [[开源]] *'''运行平台:''' [[Tomcat]]+[[JDK]]/Apache+PHP *'''官方首页:''' http://shindig.apache.org/index.html *'''软件下载:''' [http://shindig.apache.org/download/index.html 下载地址] == Shindig功能介绍 == '''Shindig 的主要组件:''' *Gadget Container JavaScript(Gadget 容器,[[JavaScript]] 类库):提供诸如 [[UI]] 展现、安全、交互、特性扩展等相关的功能。 *Gadget Rendering Server(展现 Gadget 的[[服务器]]):负责解析 Gadget XML,转换成浏览器使用的 HTML 和 JavaScript。 *OpenSocial Container JavaScript(OpenSocial 容器的 JavaScript 类库):基于 Gadget 容器的 JavaScript 类库之上,位于客户端的 OpenSocial 容器,提供 OpenSocial 相关的功能,例如存取 People、Activity、AppData 等相关的社交数据。 *OpenSocial Data Server(OpenSocial 数据服务器):提供了特定于某个容器的服务器端的接口,包括基于 [[Rest]]/[[RPC]] 协议的 Services,用于存取 People、Activity、AppData 等相关的社交数据,而且提供了清楚的扩展点,其他网站都可以据此实现自己的服务 '''Shindig服务器端组件构成图:''' java版: [[image:Shindigjava.jpg|Shindig java服务器端容器的组件]] php版: [[image:Shindigphp.jpg|Shindig php服务器端容器的组件]] Gadget 由 [[XML]] 和其所使用的特性 [[JavaScript]] 类库构成,默认的 Gadget 容器会将 Gadget 放在一个 iframe 里面来展现。当 Gadget 容器准备 Render 一个 Gadget 时,首先会获取该 Gadget 的 metadata 信息,进而通过对应的信息组成 iframeUrl,并将该 [[URL]] 设置为 iframe 的 src,此时便会触发服务器端名为“xml-to-html”的 servlet 即 Gadget Rendering Sevlet 负责处理这个请求并最终返回 [[HTML]] JsonRpcServlet 和 DataServiceServlet 负责处理 OpenSocial 相关的请求,DataServiceServlet 处理 Rest 请求,JsonRpcServlet 处理 RPC 请求,在后台他们共享同样的实现。OpenSocial Hanlder 负责处理 OpenSocial 相关的请求,具体由下面各个相关的 Service 实现。中间的 JsonDBOpenSocialService 则是一个实现了各个 Service 接口的具体实现,以 Json 文件作为数据源。 Shindig 的项目基于 Maven 构建,共有以下几个子项目(基于 Java 版本的源码): *shindig-common: 该项目主要提供了一些基本和公用的方法。 *shindig-gadgets: 该项目主要是 Gadget Render 的 Server 端实现,包括解析XML,解析 Gadget 里面用到的特性,重写内容,返回 HTML 到客户端等。 *shindig-social-api: 该项目主要是 OpenSocial 相关功能的 Server 端实现,提供了 People,Activity,AppData 等的 Service 和 Handler。 *shindig-smaples: 该项目是一个用 JSON 实现了 OpenSocial 存取数据的示例。 *shindig-server: 该项目是整个项目的 Server 端配置,包括 [[web]].xml 等。整个项目构建完成后会生成一个 war 包,作为一个 Web 应用部署到[[服务器]]即可。 *shindig-features: 该项目与语言无关,都是 Client 端的 JavaScript 库,包括 Gadget 容器,OpenSocial 容器所用到的 JavaScript 类库,以及一些用到的特性。 *shindig-extras: 该项目与语言无关,可以看作是提供给开发者扩展 Shindig 的一个参考。Shindig 的整个项目是基于 Guice 框架的,[[Guice]] 是 Google 开发的一个轻量级的依赖注入框架。当用户需要扩展 Shindig 实现自己的功能或特性时,可以与原有的 Shindig 完全隔离,开发自己的 Guice 模块就好了,最后通过 Guice 的依赖注入做相应的配置就可以。 '''Shindig客户端流程:''' Shindig 的[[客户端]]包括:Gadget 容器、OpenSocial 容器、[[JSON]]、Restful 容器和对 [[Caja]] 的支持。对应的流程如图所示: [[image:Shindigclient.jpg|Shindig客户端流程]] '''Shindig 的服务端流程:''' Shindig 的服务器端流程主要分为两个核心部分,一个是 Render Gadget,一个是处理 OpenSocial 相关的请求。Render Gadget 由 GadgetRenderingServlet 处理,如图 5 所示:首先调用 doGet 方法,调用 Renderer 的 render 方法,通过 Process 解析出一个 Gadget 实例,而后调用具体的 HTMLRenderer 的 render 方法,核心的就是很多的 Rewriter,通过对 Gadget 里面的内容进行重写来生成 [[HTML]]。 *PipelineDataGadgetRewriter: 如果 Gadget 里面使用了 data-pipelining 的特性,则会调用该 rewriter 生成容器所需要的数据。 *TemplateRewriter: 如果 Gadget 里面用到了 template 的特性,则会用真实的数据替换 template 里面对应的键值。 *ProxyingContentRewriter:如果 Gadget 里面请求的内容需要通过 proxy 才能取得,通过该 rewriter 则会强制 Gadget 的请求必须经过代理。 *CajaContentRewriter:Caja 是 Google 发起的一个项目,旨在制订一个 JavaScript 语言的子集和最佳编程指导方针,约束 JavaScript 程序员编写的代码,符合一个更加安全,更加合理的 JS 代码。如果 Gadget 里面声明了 Caja 特性,则需要通过这个 rewriter 根据 Caja 的要求重写 Gadget 里面的内容。 *RenderingGadgetRewriter :呈现 Gadget 肯定会用到的一个 Rewriter,主要生成 HTML 的元素,根据 Gadget 声明的特性一一注入所需的 JavaScript 文件。 '''Gadget容器组件图:''' [[image:Shindiggadget.jpg|'''Gadget容器组件图]] *shindig.Container 作为核心的容器,提供了创建 Gadget,添加 Gadget 及呈现 Gadget 的方法。 *shindig.GadgetServices 提供了设置 Gadget 的高度、标题、用户参数设置等服务。 *shindig.LayoutManager 提供了获取 Gadget 的布局信息的接口。 *shindig.Gadget 作为核心的 Gadget 对象,提供了诸如 render、getContent 等方法。根据 Gadget 的特性是否用到 pubsub-2 决定获取的内容,由此需要两种类型的 Gadget。shindig.IfrGadget 和 shindig.OAAIfrGadget。如果不需要此特性,只需要简单的返回一个 iframe 作为主内容即可,如果需要 pubsub-2 则需要创建 openajaxhub 的容器。 *shindig.UserPrefStore 提供了保存用户参数设置的接口 '''新的Gadget组件图:''' [[image:Shindignewgadget.jpg|'''新的Gadget容器组件图]] 新的 Gadget 容器相比 shindig-container 更加清晰,使用起来也更加简单,只需要创建一个 gadget site,然后调用 navigateGadget 即可。在 shindig 发布的 2.0.1 版本中,新的 Gadget 容器使用起来还有几个小 bug,如果您想使用最新的 Gadget 容器,请下载针对新的 Gadget 容器的 [[patch]]。新的 Gadget 容器提供了很好的分层结构和扩展性,用户可以参考该容器实现自己的 Gadget 容器。 == Shindig使用手册 == == 相关条目 == *[[SNS]] *[[ISocial]] *[[Jcow]] *[[PeopleAggregator]] == 参考来源 == [http://shindig.apache.org/overview.html 参考来源1] [http://www.ibm.com/developerworks/cn/web/1104_sunqy_opensocial2/index.html 参考来源2] [[category:SNS]] [[category:国外程序]] [[category:Java程序]] [[category:PHP程序]] [[category:开源软件]]
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)