David』s Model是David Nuescheler幾年前寫的,但其想法今天仍然成立。 David』s Model的主要原則如下:
clone()
、merge()
和update()
。David』s Model)可在Jackrabbit Wiki上找到,網址為https://wiki.apache.org/jackrabbit/DavidsModel。
所有內容都應儲存在儲存庫中,而不是依賴單獨的第三方資料源(如資料庫)。 這適用於製作內容、二進位資料(例如影像、程式碼、設定等)。 這可讓我們使用一組API來管理所有內容,並透過複製來管理此內容的促銷。 我們還獲得了單一備份、日誌記錄等源。
建立新功能時,請務必先設計JCR內容結構,然後使用預設的Sling servlet來閱讀和寫入內容。 這可讓您確保實作能順利運用現成可用的存取控制機制,並避免產生不必要的CRUD樣式servlet。
Servlet應根據resourceTypes而非路徑來定義。 這樣,您就可以使用JCR存取控制、遵循REST原則,以及使用在要求中提供給我們的資源和資源解析程式。 這也允許我們變更在伺服器端轉換URL的指令碼,而不需從用戶端變更任何URL,同時隱藏伺服器端實作詳細資訊,以增加安全性。
節點類型在基礎架構層的低層運作,而且大部分需求都可透過使用指派給nt:unstructured, oak:Unstructured, sling:Folder或cq:Page節點類型的sling:resourceType來滿足。 節點類型等於儲存庫中的模式,而更改節點類型在將來可能會非常昂貴。
遵循命名慣例可為程式碼庫增加一致性,降低缺陷發生率,並提高開發人員在系統中工作的速度。 Adobe在開發AEM時會使用下列慣例:
節點名稱
屬性名稱
元件(JSP/HTML)