儲存資源提供程式概述

簡介

自AEM Communities 6.1起,通常稱為使用者產生的內容(UGC)的社群內容儲存在由儲存資源提供者(SRP)提供的單一公用存放區中。

有數個SRP選項,所有選項都透過新的AEM Communities介面SocialResourceProvider API(SRP API)存取UGC,其中包含所有建立、讀取、更新和刪除(CRUD)操作。

所有SCF元件都使用SRP API實現,允許在不了解基礎拓撲或UGC位置的情況下開發代碼。

SocialResourceProvider API僅適用於AEM Communities的授權客戶。

注意

自訂元件:對於AEM Communities的授權客戶,自訂元件的開發人員可使用SRP API,以便不考慮基礎拓撲而存取UGC。請參閱SRP和UGC Essentials

另請參閱:

關於儲存庫

若要了解SRP,了解AEM存放庫(OAK)在AEM社群網站中的角色會很有幫助。

Java內容存放庫(JCR)
此標準定義內容存放庫的資料模型和應用程式設計介面(JCR API)。它將傳統檔案系統的特性與關係資料庫的特性相結合,並添加了內容應用程式經常需要的一些附加特性。

JCR的實作之一是AEM存放庫OAK。

Apache Jackrabbit Oak(OAK)
🔗 OAK是JCR 2.0的實作,此資料儲存系統是專為內容導向應用程式而設計。它是一種針對非結構化和半結構化資料而設計的分層資料庫。 儲存庫不僅儲存面向用戶的內容,還儲存應用程式使用的所有代碼、模板和內部資料。 用於訪問內容的UI為CRXDE Lite

JCR和OAK通常用來指稱AEM存放庫。

在私人製作環境中開發網站內容後,必須複製到公開發佈環境。 這通常是透過​replication​操作來完成。 這會在作者/開發人員/管理員控制下發生。

若為UGC,內容是由已註冊的網站訪客(社群成員)在公開發佈環境中輸入。 這是隨機發生的。

為了管理和報告之目的,從私人製作環境存取UGC很實用。 透過SRP,從作者存取UGC的方式更為一致,且效能也因為從發佈到作者的反向復寫並非必要。

關於SRP

將UGC儲存至共用儲存時,會有單一成員內容例項,在大部分部署中,可從製作和發佈環境存取。 無論採用何種SRP(MSRP、ASRP、JSRP),都必須採用SRP API以寫程式方式訪問。

注意

如需程式碼範例和其他詳細資訊,請參閱SRP和UGC Essentials

請參閱使用SRP存取UGC以了解編碼時的最佳實務。

ASRP

在ASRP的情況下,UGC不儲存在JCR中,它儲存在由Adobe托管和管理的雲服務中。 儲存在ASRP中的UGC不得以CRXDE Lite檢視,也不得使用JCR API存取。

請參閱ASRP -Adobe儲存資源提供程式

開發人員無法直接存取UGC。

ASRP使用Adobe雲進行查詢。

MSRP

若是MSRP,UGC不會儲存在JCR中,而會儲存在MongoDB中。 儲存在MSRP中的UGC不得以CRXDE Lite檢視,也不得使用JCR API存取。

請參閱MSRP - MongoDB儲存資源提供程式

雖然MSRP可與ASRP比較,但由於所有AEM伺服器執行個體都在存取相同的UGC,因此可以使用通用工具直接存取儲存在MongoDB中的UGC。

MSRP使用Solr查詢。

JSRP

JSRP是存取單一AEM例項上所有UGC的預設提供者。 它提供快速體驗AEM Communities 6.1的功能,而無需設定MSRP或ASRP。

請參閱JSRP - JCR儲存資源提供者

若是JSRP,雖然UGC會儲存在JCR中,且可透過CRXDE Lite和JCR API存取,但強烈建議不要使用JCR API來存取,否則日後的變更可能會影響自訂程式碼。

此外,作者和發佈環境的存放庫也不會共用。 雖然發佈例項叢集會產生共用的發佈存放庫,但在發佈時輸入的UGC在作者上不會顯示,因此無法從作者管理UGC。 UGC只會保存在輸入執行個體的AEM存放庫(JCR)中。

JSRP會使用Oak索引進行查詢。

關於JCR中的陰影節點

模擬UGC路徑的卷影節點存在於本機存放庫中,以提供兩種用途:

  1. 存取控制(ACL)
  2. 非現有資源(NER)

無論是否實作SRP,實際UGC都不會顯示在與陰影節點相同的位置。

訪問控制(ACL)

一些SRP實施,例如ASRP和MSRP,將社區內容儲存在不提供ACL驗證的資料庫中。 卷影節點在本地儲存庫中提供可應用ACL的位置。

所有SRP選項都使用SRP API,在所有CRUD操作之前對卷影位置執行相同的檢查。

ACL檢查使用實用程式方法,該方法返回適合於檢查應用於資源UGC的權限的路徑。

如需范常式式碼,請參閱SRP和UGC Essentials

非現有資源(NER)

某些Communities元件可包含在指令碼中,因此需要Sling可定址節點來支援Communities功能。 含的元件稱為非現有資源。

卷影節點在存放庫中提供Sling可定址的位置。

注意

由於卷影節點具有多個用途,因此卷影節點的存在​​表示元件為NER。

儲存位置

以下是使用Community Components GuideComments元件的卷影節點的示例:

  • 元件存在於本機存放庫中:

    /content/community-components/en/comments/jcr:content/content/include/comments

  • 相應的卷影節點存在於本地儲存庫中,位於:

    /content/usergenerated/content/community-components/en/comments/jcr:content/content/include/comments

在卷影節點下找不到UGC。

預設行為是每當讀取或寫入時參考相關子樹時,在發佈執行個體上設定卷影節點。

例如,假設部署為MSRP,且部署為TarMK發佈伺服器陣列。

member在pub1上發佈UGC時(儲存在MongoDB中),在pub1上的JCR中建立卷影節點。

第一次在pub2上讀取UGC時,如果未設定任何內容,預設行為是建立卷影節點。

如果需要預設行為以外的其他行為,則必須在製作例項上加以設定,並轉存至所有發佈例項,這通常是手動程式。

本頁內容