久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

Shindig

來自站長百科
Vannia討論 | 貢獻(xiàn)2011年9月15日 (四) 16:17的版本 →?Shindig功能介紹
(差異) ←上一版本 | 最后版本 (差異) | 下一版本→ (差異)
跳轉(zhuǎn)至: 導(dǎo)航、? 搜索
Shindiglogo.jpg

Shindig,是一個參考容器,可以運行在任何網(wǎng)站上,用來支持OpenSocial的社交應(yīng)用。它最開始是由Google在2007年開發(fā)的,作為iGoogleGadget容器,然后在2007年12月成為Apache的一個開源項目。Shindig的主要目的就是為那些希望使用支持OpenSocial規(guī)范軟件的社交網(wǎng)站提供基礎(chǔ)設(shè)施,使得社交應(yīng)用的開發(fā)者不用去關(guān)心平臺的轉(zhuǎn)換問題。目前,很多社交網(wǎng)站都是基于Shindig實現(xiàn)自己的OpenSocial功能。Shindig的另一個目標(biāo)是多語言實現(xiàn),目前Shindig有JavaPHP兩個版本。Shindig的最新發(fā)布版本是 2.0.1,實現(xiàn)了OpenSocial 1.1的規(guī)范。

Shindig概況[ ]

Shindig功能介紹[ ]

Shindig 的主要組件:

  • Gadget Container JavaScript(Gadget 容器,JavaScript 類庫):提供諸如 UI 展現(xiàn)、安全、交互、特性擴展等相關(guān)的功能。
  • Gadget Rendering Server(展現(xiàn) Gadget 的服務(wù)器):負(fù)責(zé)解析 Gadget XML,轉(zhuǎn)換成瀏覽器使用的 HTML 和 JavaScript。
  • OpenSocial Container JavaScript(OpenSocial 容器的 JavaScript 類庫):基于 Gadget 容器的 JavaScript 類庫之上,位于客戶端的 OpenSocial 容器,提供 OpenSocial 相關(guān)的功能,例如存取 People、Activity、AppData 等相關(guān)的社交數(shù)據(jù)。
  • OpenSocial Data Server(OpenSocial 數(shù)據(jù)服務(wù)器):提供了特定于某個容器的服務(wù)器端的接口,包括基于 Rest/RPC 協(xié)議的 Services,用于存取 People、Activity、AppData 等相關(guān)的社交數(shù)據(jù),而且提供了清楚的擴展點,其他網(wǎng)站都可以據(jù)此實現(xiàn)自己的服務(wù)

Shindig服務(wù)器端組件構(gòu)成圖:

java版:

Shindig java服務(wù)器端容器的組件

php版:

Shindig php服務(wù)器端容器的組件

Gadget 由 XML 和其所使用的特性 JavaScript 類庫構(gòu)成,默認(rèn)的 Gadget 容器會將 Gadget 放在一個 iframe 里面來展現(xiàn)。當(dāng) Gadget 容器準(zhǔn)備 Render 一個 Gadget 時,首先會獲取該 Gadget 的 metadata 信息,進(jìn)而通過對應(yīng)的信息組成 iframeUrl,并將該 URL 設(shè)置為 iframe 的 src,此時便會觸發(fā)服務(wù)器端名為“xml-to-html”的 servlet 即 Gadget Rendering Sevlet 負(fù)責(zé)處理這個請求并最終返回 HTML JsonRpcServlet 和 DataServiceServlet 負(fù)責(zé)處理 OpenSocial 相關(guān)的請求,DataServiceServlet 處理 Rest 請求,JsonRpcServlet 處理 RPC 請求,在后臺他們共享同樣的實現(xiàn)。OpenSocial Hanlder 負(fù)責(zé)處理 OpenSocial 相關(guān)的請求,具體由下面各個相關(guān)的 Service 實現(xiàn)。中間的 JsonDBOpenSocialService 則是一個實現(xiàn)了各個 Service 接口的具體實現(xiàn),以 Json 文件作為數(shù)據(jù)源。

Shindig 的項目基于 Maven 構(gòu)建,共有以下幾個子項目(基于 Java 版本的源碼):

  • shindig-common: 該項目主要提供了一些基本和公用的方法。
  • shindig-gadgets: 該項目主要是 Gadget Render 的 Server 端實現(xiàn),包括解析XML,解析 Gadget 里面用到的特性,重寫內(nèi)容,返回 HTML 到客戶端等。
  • shindig-social-api: 該項目主要是 OpenSocial 相關(guān)功能的 Server 端實現(xiàn),提供了 People,Activity,AppData 等的 Service 和 Handler。
  • shindig-smaples: 該項目是一個用 JSON 實現(xiàn)了 OpenSocial 存取數(shù)據(jù)的示例。
  • shindig-server: 該項目是整個項目的 Server 端配置,包括 web.xml 等。整個項目構(gòu)建完成后會生成一個 war 包,作為一個 Web 應(yīng)用部署到服務(wù)器即可。
  • shindig-features: 該項目與語言無關(guān),都是 Client 端的 JavaScript 庫,包括 Gadget 容器,OpenSocial 容器所用到的 JavaScript 類庫,以及一些用到的特性。
  • shindig-extras: 該項目與語言無關(guān),可以看作是提供給開發(fā)者擴展 Shindig 的一個參考。Shindig 的整個項目是基于 Guice 框架的,Guice 是 Google 開發(fā)的一個輕量級的依賴注入框架。當(dāng)用戶需要擴展 Shindig 實現(xiàn)自己的功能或特性時,可以與原有的 Shindig 完全隔離,開發(fā)自己的 Guice 模塊就好了,最后通過 Guice 的依賴注入做相應(yīng)的配置就可以。

Shindig客戶端流程:

Shindig 的客戶端包括:Gadget 容器、OpenSocial 容器、JSON、Restful 容器和對 Caja 的支持。對應(yīng)的流程如圖所示:

Shindig客戶端流程

Shindig 的服務(wù)端流程:

Shindig 的服務(wù)器端流程主要分為兩個核心部分,一個是 Render Gadget,一個是處理 OpenSocial 相關(guān)的請求。Render Gadget 由 GadgetRenderingServlet 處理,如圖 5 所示:首先調(diào)用 doGet 方法,調(diào)用 Renderer 的 render 方法,通過 Process 解析出一個 Gadget 實例,而后調(diào)用具體的 HTMLRenderer 的 render 方法,核心的就是很多的 Rewriter,通過對 Gadget 里面的內(nèi)容進(jìn)行重寫來生成 HTML。

  • PipelineDataGadgetRewriter: 如果 Gadget 里面使用了 data-pipelining 的特性,則會調(diào)用該 rewriter 生成容器所需要的數(shù)據(jù)。
  • TemplateRewriter: 如果 Gadget 里面用到了 template 的特性,則會用真實的數(shù)據(jù)替換 template 里面對應(yīng)的鍵值。
  • ProxyingContentRewriter:如果 Gadget 里面請求的內(nèi)容需要通過 proxy 才能取得,通過該 rewriter 則會強制 Gadget 的請求必須經(jīng)過代理。
  • CajaContentRewriter:Caja 是 Google 發(fā)起的一個項目,旨在制訂一個 JavaScript 語言的子集和最佳編程指導(dǎo)方針,約束 JavaScript 程序員編寫的代碼,符合一個更加安全,更加合理的 JS 代碼。如果 Gadget 里面聲明了 Caja 特性,則需要通過這個 rewriter 根據(jù) Caja 的要求重寫 Gadget 里面的內(nèi)容。
  • RenderingGadgetRewriter :呈現(xiàn) Gadget 肯定會用到的一個 Rewriter,主要生成 HTML 的元素,根據(jù) Gadget 聲明的特性一一注入所需的 JavaScript 文件。


Gadget容器組件圖:

Gadget容器組件圖

  • shindig.Container 作為核心的容器,提供了創(chuàng)建 Gadget,添加 Gadget 及呈現(xiàn) Gadget 的方法。
  • shindig.GadgetServices 提供了設(shè)置 Gadget 的高度、標(biāo)題、用戶參數(shù)設(shè)置等服務(wù)。
  • shindig.LayoutManager 提供了獲取 Gadget 的布局信息的接口。
  • shindig.Gadget 作為核心的 Gadget 對象,提供了諸如 render、getContent 等方法。根據(jù) Gadget 的特性是否用到 pubsub-2 決定獲取的內(nèi)容,由此需要兩種類型的 Gadget。shindig.IfrGadget 和 shindig.OAAIfrGadget。如果不需要此特性,只需要簡單的返回一個 iframe 作為主內(nèi)容即可,如果需要 pubsub-2 則需要創(chuàng)建 openajaxhub 的容器。
  • shindig.UserPrefStore 提供了保存用戶參數(shù)設(shè)置的接口

新的Gadget組件圖:

新的Gadget容器組件圖

新的 Gadget 容器相比 shindig-container 更加清晰,使用起來也更加簡單,只需要創(chuàng)建一個 gadget site,然后調(diào)用 navigateGadget 即可。在 shindig 發(fā)布的 2.0.1 版本中,新的 Gadget 容器使用起來還有幾個小 bug,如果您想使用最新的 Gadget 容器,請下載針對新的 Gadget 容器的 patch。新的 Gadget 容器提供了很好的分層結(jié)構(gòu)和擴展性,用戶可以參考該容器實現(xiàn)自己的 Gadget 容器。

Shindig使用手冊[ ]

相關(guān)條目[ ]

參考來源[ ]

參考來源1 參考來源2