Inhaltsarchitektur

Setzen Sie das Modell von David Nuescheler um

„David’s Model“ wurde vor Jahren von David Nuescheler entworfen, hat aber bis heute Gültigkeit. Die wichtigsten Grundsätze des Modells von David sind:

  • Die Daten kommen zuerst, die Struktur später. Zumindest gegebenenfalls.
  • Steuern Sie die Content-Hierarchie, anstatt sie dem Zufall zu überlassen.
  • Arbeitsbereiche sind für clone(), merge() und update() vorgesehen.
  • Bei gleichgeordneten Elementen mit identischem Namen ist Vorsicht geboten.
  • Verweise richten mehr Schaden an, als sie nutzen.
  • Dateien sind Dateien.
  • IDs sind böse.

Das Modell von David finden Sie im Jackrabbit Wiki unter https://wiki.apache.org/jackrabbit/DavidsModel.

Alles ist Inhalt

Sie sollten alles im Repository speichern, anstatt sich auf separate Datenquellen von Dritten wie etwa Datenbanken zu verlassen. Dies bezieht sich auf erstellte Inhalte, Binärdaten wie Bilder, Code und Konfigurationen. Auf diese Weise können Sie mit einem Satz von APIs alle Inhalte verwalten und die Promotion dieser Inhalte durch Replikation steuern. Außerdem profitieren Sie von nur einer einzigen Quelle für Backups, Protokollierung usw.

Anwenden des Designgrundsatzes „Content Model First“

Wenn Sie eine neue Funktion entwickeln, beginnen Sie immer damit, zunächst die JCR-Inhaltsstruktur zu entwerfen. Befassen Sie sich dann erst mit dem Lesen und Schreiben Ihrer Inhalte mithilfe der standardmäßigen Sling-Servlets. Auf diese Weise können Sie sicherstellen, dass Ihre Implementierung gut mit vordefinierten Zugriffssteuerungsmechanismen funktioniert, und Sie können unnötige Servlets im CRUD-Stil vermeiden.

RESTful statt Panik

Servlets sollten auf Basis von Ressourcentypen anstelle von Pfaden definiert werden. Dies ermöglicht die Verwendung von JCR-Zugriffskontrollen, die Einhaltung von REST-Prinzipien und die Verwendung des Ressourcen- und Ressourcen-Resolvers, der uns in der Anfrage zur Verfügung gestellt wird. Dies ermöglicht es uns auch, die Skripte zu ändern, die URLs auf der Serverseite rendern, ohne URLs auf der Clientseite ändern zu müssen, während serverseitige Implementierungsdetails aus dem Client ausgeblendet werden, um zusätzliche Sicherheit zu bieten.

Vermeiden der Definition neuer Knotentypen

Knotentypen setzen auf einer niedrigen Ebene der Infrastrukturschicht an und die meisten Anforderungen können erfüllt werden, indem ein „sling:resourceType“ verwendet wird, der einem Knotentyp „nt:unstructured“, „oak:Unstructured“, „sling:Folder“ oder „cq:Page“ zugewiesen ist. Knotentypen entsprechen dem Schema im Repository und das Ändern von Knotentypen kann auf der ganzen Straße sehr teuer sein.

Einhalten Sie Namenskonventionen im JCR

Durch die Einhaltung von Namenskonventionen wird die Konsistenz der Codebasis erhöht, die Fehler-Inzidenzrate gesenkt und der Arbeitsprozess der beteiligten Entwickler beschleunigt. Die folgenden Konventionen werden von Adobe bei der Entwicklung von AEM verwendet:

  • Knotennamen

    • Ausschließliche Verwendung von Kleinbuchstaben
    • Worttrennung mithilfe von Bindestrichen
  • Eigenschaftsnamen

    • Gemischte Groß-/Kleinschreibung, beginnend mit einem Kleinbuchstaben
  • Komponenten (JSP/HTML)

    • Ausschließliche Verwendung von Kleinbuchstaben
    • Worttrennung mithilfe von Bindestrichen

Auf dieser Seite