Sie sehen sich Hilfeinhalte der folgenden Version an:

Entwicklungsmethodik

AEM wird nach bewährten Vorgehensweisen entwickelt, die häufig in großen Open-Source-Projekten praktiziert werden. Viele Kernelemente im Technologie-Stack von AEM werden tatsächlich als aktive Open-Source-Projekte wie Sling und Jackrabbit verwaltet, die Teil der Apache Software Foundation sind. Ein wichtiger Aspekt der Idee von AEM besteht darin, dass Sie ermutigt werden, die verfügbaren Mailinglisten und Onlineforen für direkt Interaktion mit dem Entwicklungsteam zu nutzen.

Wenn Sie zu Komponenten von AEM beitragen, sollten Sie sich mit AEM genauso vertraut machen wie mit einem Open-Source-Projekt und mit dem vorhandenen Kernteam kommunizieren, als würden Sie zu einem solchen Projekt beitragen.

Erforderliche Erfahrung

Das HyperText Transfer Protocol (HTTP) spielt bei allem, was wir tun, eine zentrale Rolle. Bevor Sie also zu AEM beitragen, sollten Sie über ein tiefgehendes Verständnis von HTTP verfügen, idealerweise in dem Maße, dass Sie Ihre eigene Java-Implementierung eines Multithread-HTTP-Servers mit Thread-Pooling schreiben könnten. Sie sollten auch das HTTP/1.1-Keep-Alive-Verhalten verstehen und über eingehende Kenntnisse der server/clientseitigen Interaktionen mit JavaScript verfügen, insbesondere über den asynchronen Interaktionsstil, der von AJAX repräsentiert wird.

Da Seitendynamik und interaktiver Inhalt der Schlüssel zum WM-Erlebnis sind, ist es wichtig, dass Sie das Dokumentobjektmodell und sein Potenzial für programmatische Manipulation als Reaktion auf Ereignisse möglichst gut verstehen. Sie sollten zum Beispiel Kenntnisse über Echtzeit-DOM-Manipulation und Drag-and-Drop-Verhalten über mehrere Browser-Dokumente haben (z. B. mit iframes).

 

Auf der höchsten Ebene sollten Sie über ein solides Verständnis folgender Themen verfügen:

  • das HTTP/1.1 Protokoll
  • HTML (vorzugsweise HTML5)
  • Cascading Style Sheets (CSS)
  • Extensible Markup Language (XML)
  • Entwurfsmuster für Asynchronous JavaScript and XML (AJAX)
  • JavaScript Object Notation (JSON)
  • Document Object Model
  • Stateful und Stateless-Interaktionen
  • Uniform Resource Identifiers
  • Browser-Cookies
  • und andere moderne Web-Entwicklungskonzepte

Der Technologie-Stack von Adobe Experience Manager basiert auf dem Apache Felix-OSGI-Container mit dem Apache Sling-Web-Framework und bettet ein Java Content Repository (JCR) basierend auf Apache Jackrabbit ein. Sie sollten sich mit diesen einzelnen Projekten sowie mit anderen Open Source-Komponenten (z. B. Apache Lucene) vertraut machen, die in dem Bereich verwendet werden, in dem Sie Beiträge leisten möchten.

Tribal-Kenntnisse

Bestimmte Konzepte und Leitprinzipien sind tief in der früheren Day-Kultur verwurzelt. In diesem Abschnitt werden einige der „tief in die DNA eingebetteten“ Probleme aufgeführt, die Sie beachten sollten.

Alles ist Inhalt

Der Inhalt umfasst nicht nur alle Daten, die die Webanwendung speichert. Programmcode, Bibliotheken, Skripte, Vorlagen, HTML, CSS, Bilder und Artefakte aller Art, alles und jedes wird im Content-Repository aufbewahrt und über Package Manager und Package Share in Form von Paketen importiert/exportiert.

Davids Modell

Die Art und Weise, wie Inhalte in einem Java Content Repository modelliert werden sollen, erfordert eine völlig andere Art zu denken als das, was in der Softwarebranche für die Datenmodellierung in der relationalen Welt üblich ist. Eine Pflichtlektüre für jeden Neuling im Content-Management mit der JCR-Methode ist David's Model: A guide for content modeling.

RESTfulness

Der REST-Ansatz ist tief verwurzelt in dem, was wir tun. Dies bedeutet unter anderem, statusbehaftete Interaktionen zu vermeiden und zu berücksichtigen, dass URIs endgültige Adressen für Inhalte und Dienste sind.

REST (REpresentational State Transfer) bezeichnet den Software-Architekturstil, auf dem das World Wide Web basiert. Es beschreibt die Schlüsselelemente, die das Web zum Funktionieren bringen, und bietet somit eine Reihe von Prinzipien für die Gestaltung webbasierter Software. Bei der Entwicklung einer API, die über das Internet verwendet werden soll, ist es daher sinnvoll, diese Best Practices einzuhalten.

Da REST die Leitphilosophie ist, die hinter so viel von dem steckt, was wir tun, sollten Sie es für wichtig halten, sich in den Grundsätzen des RESTful Designs auskennen zu können. Ein guter Ausgangspunkt ist Roy Fieldings Dissertation.

Sling Anfrageauflösung

Ein wesentlicher Aspekt zum Verständnis von AEM ist, wie eingehende Anforderungen sich auf das Inhalts- und Anwendungsverhalten beziehen, wie Inhalte im Content-Repository strukturiert sind und wo AEM nach der Anwendungslogik sucht, um die Anforderung zu bearbeiten. Erfahren Sie mehr über die Apache Sling URL-Dekomposition und die Art und Weise, wie sie den REST-Architekturstil und seine statusfreien, cachefähigen und geschichteten Systemeinschränkungen erzwingt.

Schwerpunkte der Apache Sling-Anfrageauflösung sind, wie Anfragen hauptsächlich auf eine bestimmte Ressource im Content Repository abgebildet werden, wie zusätzliche Eigenschaften der Anfrage zusammen mit Eigenschaften dieser Inhaltsobjekte bestimmen, welcher Anwendungscode zum Rendern des Inhalts aufgerufen wird. und wie der Code in /apps den Code in /libs überschreibt.

 

Schnellstart

Kein Schritt drei: zum Installieren und Ausführen lädt man einfach die Schnellstart-JAR-Datei herunter und doppelklickt darauf. Es gibt keinen Schritt drei. Jede zusätzliche optionale Funktionalität erfordert nichts weiter als die Installation des entsprechenden Pakets von Package Share.

Kleine Schnellstart-Größe: halten Sie die Größe der Schnellstart-JAR-Datei auf ein Minimum begrenzt. Nutzen Sie Bibliotheken intelligent und optimiert und verschieben Sie optionale Funktionen auf Package Share.

Schnellere Startzeit: wenn Sie eine Änderung vornehmen, die sich auf die Startzeit auswirken könnte, stellen Sie sicher, dass sie kürzer wird, nicht länger.

Rank und schlank

Wir bevorzugen Code und Projekte, die leicht, klein, schnell und elegant sind. „Gut genug“ ist nicht gut genug.

Wiederverwendung von Code: Unsere OSGi-basierte Produktarchitektur und die Philosophie „Alles ist Inhalt“ bedeuten, dass wir außergewöhnlich gute Möglichkeiten für die Wiederverwendung von Code und Artefakten haben. Wir versuchen, diese Tatsache wann immer möglich zu nutzen, um Features „rank und schlank“ zu halten.

Lose Kopplung: Wir bevorzugen lose gekoppelte Interaktionen gegenüber engen Abhängigkeiten und „unerwünschter Intimität“. Lose Kopplung ermöglicht auch mehr Code-Wiederverwendung.

Zerstören Sie die Demo nicht

Machen Sie sich mit Demo-Skripten und Produktfunktionen vertraut, die am häufigsten in Demos angezeigt werden. Verstehen Sie, dass nichts, was Sie tun, jemals eine „Demo-Skript“ -Funktion zerstören sollte. Das Kernprodukt sollte immer demofähig sein, auch während der Entwicklung.

Design für Zuverlässigkeit

Wir bemühen uns, Features in Fail-Soft-Art zu entwerfen und zu kodieren, sodass (zum Beispiel) ein Problem mit einem einzelnen DOM-Element nicht dazu führt, dass eine ganze Seite nicht gerendert wird. Mit anderen Worten: Machen Sie Dinge, die tödlich sein sollten, tödlich. Machen Sie alles andere überlebensfähig. Machen Sie das Produkt „nachsichtig“.

Abnormal ist das neue normal

Verlassen Sie sich nicht auf Shutdown-Hooks, sorgen Sie für eine Bereinigung beim Start. Abnormale Beendigung ist normale Beendigung.

shutdown == kill -9 == power outage

Seien Sie bereit für elastisches Clustering

Seien Sie immer bereit für elastisches Clustering, gehen Sie immer davon aus, dass es Clustering gibt. Im Allgemeinen bedeutet das Einhalten von allem, was im Content-Repository enthalten ist, eine integrierte Clusterunterstützung.

Entwerfen Sie für Abwärtskompatibilität

Nichts, was Sie tun, sollte den alten Code eines Kunden zerstören. Verwenden Sie nur /libs, um Produktcode zu enthalten, der während eines Upgrades aktualisiert werden kann. Der Bereich /apps des Repositorys ist Projektcode und der Bereich /etc enthält benutzerdefinierte Konfigurationen, die beibehalten werden müssen. Überschreiben Sie grundsätzlich nichts in /apps, /content und /home. Nach einem Upgrade sollten alter Projektcode, Konfigurationen und Inhalte weiterhin so funktionieren wie vor dem Upgrade.

Wenn Sie für Abwärtskompatibilität entwickeln, stellen Sie außerdem sicher, dass das Upgrade-Erlebnis mit der Einfachheit der Erstinstallation übereinstimmt. Einfaches Beenden von AEM, Ersetzen der Quickstart-JAR-Datei und erneutes Starten von AEM sollten ausreichen. Mit einer schnell wachsenden Installationsbasis wird die Upgrade-Effizienz ein zunehmend wichtigerer Vorteil sein.

Bestehende APIs können und sollten als veraltet markiert werden, wenn eine neuere, bessere Funktionalität diese ersetzt, alle APIs, die in einer früheren 5.x-Version veröffentlicht wurden, müssen weiterhin funktionsfähig bleiben, da sie möglicherweise in benutzerdefiniertem Anwendungscode verwendet werden. Keine dieser APIs sollte entfernt werden. 

Abwärtskompatibilität sollte auch im Hinblick auf die allgemeine Konsistenz der Inhaltsstruktur und Benutzererfahrung berücksichtigt werden.

Grundlegende Konzepte

Autoreninstanz

Aus Gründen der Sicherheit, der Verwaltung und aus anderen Gründen unterteilt eine Produktionsstelle typischerweise Instanzen von AEM in Autoren- und Veröffentlichungsinstanzen. Weitere Informationen zur Bereitstellungsarchitektur (einschließlich Autoren-/Veröffentlichungsinstanzen) finden Sie in der Dokumentation zu AEM-Instanzen.

Cachen, Frying und Baking

Traditionell sind die Konzepte Baking und Frying eine wichtige Unterscheidung zwischen verschiedenen Web-Content-Management-Systemen.  Im CMS-Jargon bezieht sich „Baking“ auf das Konzept der Übertragung von Daten in statische Dateien zur Veröffentlichungszeit, während „Frying“ sich auf das Konzept der Verarbeitung von Daten für die endgültige Präsentation zum Zeitpunkt der Anforderung (d. h. gerade rechtzeitig) bezieht.

Clustering und Lastenausgleich

Um die Verfügbarkeit zu erhöhen und die Leistung einer Produktionsumgebung zu steigern, ist es üblich, mehrere Autoren- und/oder Veröffentlichungsinstanzen (in Clustern) zu kombinieren, indem sie entweder für verschiedene Benutzergruppen oder durch Lastenausgleich hinter einer Dispatcher-Konfiguration verfügbar gemacht werden.

Es ist auch möglich, mehrere Instanzen des Content-Repositorys zu einer JCR-Lösung mit hoher Verfügbarkeit zu kombinieren, die dann in Ihre AEM-Lösung integriert werden kann, um den Schutz vor Hardware- und Softwarefehlern zu maximieren. Weitere Informationen finden Sie unter Empfohlene Bereitstellungen.

Komponente

In AEM ist eine Komponente ein Objekttyp, dessen Instanzen in der Regel durch Ziehen und Ablegen z. B. im Sidekick erstellt werden können. So enthalten beispielsweise mit AEM ausgelieferte Standardkomponenten die Komponenten Text, Titel, Tag Cloud, Karussell, Bild und Liste, die alle zur Laufzeit über den Sidekick verfügbar sind.

Content Finder

Im Authoring-Modus ist der Content Finder ein spezielles Fenster (Rahmen) auf der linken Seite der Seite, das je nach der oben ausgewählten Registerkarte Listen mit Bildern, Dokumenten, Flash-Assets, Seiten, Absätzen oder Repository-Ressourcen anzeigt, die Sie per Drag-and-Drop aus dem Content Finder auf die Seite ziehen können, an der Sie gerade arbeiten (rechts).

Digitale Assets

In AEM sind digitale Assets (in der Regel) Bilder und Rich-Media-Dateien. Weitere Informationen finden Sie unter Arbeiten mit digitalen Assets in DAM.

Dispatcher

Der Dispatcher ist sowohl ein Caching- als auch ein Lastenausgleichs-Tool und bietet bestimmte Sicherheitsmaßnahmen.

JCR, Java Content Repository

Die Java Content Repository-Spezifikation (JSR-283) bietet sowohl ein abstraktes Datenmodell als auch eine Anwendungsprogrammierschnittstelle zur Realisierung eines massiv skalierbaren NoSQL-Datenrepositorys, das Merkmale eines Dateisystems und einer Objektdatenbank kombiniert. Obwohl Sie JSR-283 nicht umfassend verstehen müssen, sollten Sie sich die Zeit nehmen, sich mit den grundlegenden Funktionen von JCR und dem zugrunde liegenden Datenmodell vertraut zu machen, da JCR die „Alles ist Inhalt“-Philosophie von AEM ermöglicht.

Im Wesentlichen ist JCR ein System von Knoten und Eigenschaften, in dem Knoten von anderen Knoten erben können und der gesamte Inhalt als Eigenschaftswerte gespeichert wird. Beachten Sie, dass JCR zusätzlich zur normalen Vererbung ein Konzept von „Mixin“-Knoten ermöglicht, das die Modellierung von Mehrfachvererbung ermöglicht.

JCR verfügt über eine Reihe vordefinierter Knotentypen und Eigenschaftstypen, aber im Allgemeinen ist das Typisierungssystem ziemlich flexibel und tatsächlich besteht eine der Stärken von JCR darin, dass sowohl strukturierter als auch unstrukturierter Inhalt mit Leichtigkeit gespeichert/verwaltet werden kann. Das heißt, JCR kann stark strukturierte Daten aufnehmen, aber es kann auch beliebige dynamische Datenstrukturen ohne Schemaeinschränkungen aufnehmen.

Die JavaDoc für die JCR-Java-API finden Sie hier.

Bevor Sie versuchen, die JavaDoc- oder die JCR-Spezifikation selbst zu lesen, sollten Sie sich diese High-Level-Erklärung von JCR ansehen, die von Adobe Experience Services implementiert wird.

Multi-Site-Manager (MSM)

Die MSM-Funktion von AEM unterstützt Kunden bei der Bearbeitung mehrsprachiger und multinationaler Inhalte und ermöglicht es ihnen, zentralisiertes Branding mit lokalisierten Inhalten in Einklang zu bringen.

OSGi

OSGi ist die servicebasierte Runtime-Technologie, die die Basis für die modularisierte Java-Entwicklung in AEM bietet. Es ist ein Framework, das nicht nur eine hochdynamische (und sichere) Classloading- und Execution-Umgebung für Coderessourcen (bekannt als Bundle) bietet, sondern auch volle Kontrolle über die Sichtbarkeit und den Lebenszyklus der verschiedenen Services, die von Bundles bereitgestellt werden. Eine Service-Registrierung stellt ein Kooperationsmodell für Bundles bereit, das Lebenszyklusdynamik (und Versionsanforderungen) berücksichtigt. OSGi löst viele der Probleme, die von Anwendungsservern gelöst werden sollten, jedoch auf leichte und hochdynamische Weise. So können beispielsweise Dienste schnell bereitgestellt werden (der neue Code wird sofort verfügbar, ohne den Server neu zu starten).

Parsys, Absatzsystem

Das Absatzsystem (parsys) ist eine zusammengesetzte Komponente, die es Autoren ermöglicht, Komponenten unterschiedlicher Typen zu einer Seite hinzuzufügen und andere Absatzkomponenten zu enthalten. Jeder Absatztyp wird als eine Komponente dargestellt. Das Absatzsystem selbst ist auch eine Komponente, die die anderen enthält.

Mikrokernel

Jeder Arbeitsbereich im Repository kann separat konfiguriert werden, um seine Daten über einen bestimmten Mikrokernel zu speichern (eine Klasse, die das Lesen und Schreiben der Daten verwaltet). Ebenso kann der Repository-weite Versionsspeicher unabhängig für die Verwendung eines bestimmten Mikrokernels konfiguriert werden. Eine Reihe verschiedener Mikrokernel sind verfügbar, die Daten in einer Vielzahl von Dateiformaten oder relationalen Datenbanken speichern können. (Zum Beispiel gibt es Persistence Manager für MongoDB, DB2 oder Oracle). Der Standard-Microkernel für AEM ist TarMK (siehe weiter unten).

Veröffentlichungsinstanz

Aus Gründen der Sicherheit, der Verwaltung und aus anderen Gründen unterteilt eine Produktionsstätte typischerweise Instanzen von AEM in Autoren- und Veröffentlichungsinstanzen. Weitere Informationen zur Bereitstellungsarchitektur (einschließlich Autoren-/Veröffentlichungsinstanzen) finden Sie in der Dokumentation zu AEM-Instanzen.

Schnellstart

Im Gegensatz zu vielen anderen Programmen installieren Sie AEM mithilfe einer einzelnen selbstextrahierenden JAR-Schnellstart-Datei. Wenn Sie zum ersten Mal auf die JAR-Datei doppelklicken, wird alles, was Sie benötigen, automatisch installiert. Die Schnellstart-JAR enthält alle für das CRX-Repository erforderlichen Dateien (einschließlich Verwaltungseinrichtungen), virtuelle Repository-Dienste, Index- und Suchdienste, Workflow-Services, Sicherheit und einen Webserver sowie die CQ Servlet Engine (CQSE) und alle AEM-Dienste. Es sind keine weiteren Dateien zu installieren: Der Schnellstart ist eigenständig.

Wenn Sie den Schnellstart zum ersten Mal starten, wird im Hintergrund ein ganzes JCR-kompatibles Repository erstellt, was einige Minuten dauern kann. Nach diesem ersten Start sind nachfolgende Startvorgänge viel schneller, da die Repository-Infrastruktur bereits angelegt wurde.

Viele Startoptionen (z. B. die Nummer des aktiven Ports und ob die fragliche AEM-Instanz eine Veröffentlichungsinstanz oder eine Autoreninstanz sein soll und vieles mehr) können durch entsprechendes Umbenennen der Schnellstart-Datei gesteuert werden. Um eine Liste diesbezüglicher Optionen anzuzeigen, führen Sie das JAR mit „-help“ in der Befehlszeile aus:

java -jar <quickstartfilename>.jar –help

Replikationsagenten

Replikationsagenten sind von zentraler Bedeutung für AEM als Mechanismus zum Veröffentlichen (Aktivieren) von Inhalten von einer Autoren- in eine Veröffentlichungsumgebung, Leeren des Inhalts aus dem Dispatcher-Cache, Zurückgeben vom Benutzer generierter Inhalte (z. B. Formulareingabe) von der Veröffentlichungsumgebung an die Autorenumgebung.

Strukturvorlage

Mit Sturkturvorlagen können Sie ein Formular (ein Gerüst) mit Feldern erstellen, das die gewünschte Struktur für Ihre Seiten widerspiegelt, und dieses Formular verwenden, um auf dieser Struktur basierende Seiten einfach zu erstellen.

Segmentierung

Besucher von Websites haben unterschiedliche Interessen und Ziele, wenn sie eine Website besuchen. Die Ziele der Besucher zu verstehen und ihre Erwartungen zu erfüllen, ist eine wichtige Erfolgsvoraussetzung für das Online-Marketing. Die Segmentierung hilft dabei, die Details eines Besuchers zu analysieren und zu charakterisieren.

Sidekick

Der Sidekick ist ein palettenartiges schwebendes Fenster, das auf der bearbeitbaren Seite erscheint, von dem aus neue Komponenten gezogen und Aktionen für die Seite ausgeführt werden können.

SiteCatalyst

SiteCatalyst bietet Vermarktern einen Ort, an dem sie integrierte Daten aus allen Online-Initiativen über mehrere Marketingkanäle messen, analysieren und optimieren können. Sie können mit Adobe SiteCatalyst Daten von AEM-Websites analysieren.

Tar Storage (TarMK)

TarMK ist das Standardpersistenzsystem in AEM. Obwohl AEM für die Verwendung eines anderen Persistenzsystems (z. B. MongoDB) konfiguriert werden kann, hat TarMK gewisse Vorteile, da es für typische JCR-Anwendungsfälle leistungsoptimiert ist (also sehr schnell), ein Industriestandard-Datenformat verwendet kann schnell und einfach gesichert werden kann. Lesen Sie hier mehr.

Vorlage

In AEM gibt eine Vorlage einen bestimmten Seitentyp an. Sie definiert die Struktur einer Seite (während sie normalerweise auch ein Miniaturbild und verschiedene Eigenschaften angibt). Beispielsweise könnten Sie unterschiedliche Vorlagen für Produktseiten, Sitemaps und Kontaktangaben verwenden.

Workflow

Das AEM-Workflow-System ermöglicht die Erstellung von automatisierten Prozessen mit Seiten oder Assets.

Dieses Werk unterliegt den Bedingungen der Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.  Twitter™- und Facebook-Beiträge fallen nicht unter die Bedingungen der Creative Commons-Lizenz.

Rechtliche Hinweise   |   Online-Datenschutzrichtlinie