AEM API's
AEM API's bieden abstracties en functionaliteit die specifiek zijn voor gebruikssituaties die in productie zijn.
Bijvoorbeeld, verstrekken AEM PageManageren PaginaAPIs abstracties voor cq:Page
knopen in AEM die Web-pagina's vertegenwoordigen.
Hoewel deze knooppunten beschikbaar zijn via Sling API's als bronnen en JCR API's als knooppunten, bieden AEM API's abstracties voor veelvoorkomende gebruiksgevallen. Het gebruik van de AEM API's zorgt voor een consistent gedrag tussen AEM en het product, en aanpassingen en extensies voor AEM.
com.adobe.* vs com.day.* API's
AEM API's hebben een voorkeur voor andere pakketten, die wordt aangegeven door de volgende Java™-pakketten, in volgorde van voorkeur:
com.adobe.cq
com.adobe.granite
com.day.cq
Het com.adobe.cq
-pakket ondersteunt productgebruikscenario's, terwijl com.adobe.granite
gebruiksscenario's voor verschillende productplatforms ondersteunt, zoals workflows of taken (die voor alle producten worden gebruikt: AEM Assets, Sites, enzovoort).
Het com.day.cq
-pakket bevat 'originele' API's. Deze API's bieden oplossingen voor basisabstracties en -functies die bestonden vóór en/of rondom de overname van Day CQ door Adobe. Deze API's worden ondersteund en moeten worden vermeden, tenzij com.adobe.cq
- of com.adobe.granite
-pakketten GEEN (nieuwer) alternatief bieden.
Nieuwe abstracties zoals Content Fragments en Experience Fragments worden in de com.adobe.cq
-ruimte opgebouwd in plaats van com.day.cq
hieronder.
Query-API's
AEM ondersteunt meerdere querytalen. De drie belangrijkste talen zijn JCR-SQL2, XPath, en de Bouwer van de Vraag van AEM.
De belangrijkste zorg is het handhaven van een verenigbare vraagtaal over de codebasis, om ingewikkeldheid en kosten te verminderen om te begrijpen.
Alle vraagtalen hebben in feite de zelfde prestatiesprofielen, aangezien Apache Oak hen aan JCR-SQL2 voor definitieve vraaguitvoering overstapt, en de omzettingstijd aan JCR-SQL2 verwaarloosbaar in vergelijking met de vraagtijd zelf is.
De aangewezen API is de Bouwer van de Vraag van AEM, die de hoogste niveauabstractie is en robuuste API voor het construeren, het uitvoeren van, en het terugwinnen van resultaten voor vragen verstrekt, en het volgende verstrekt:
-
Eenvoudige, parameterized vraagbouw (vraagparams die als Kaart worden gemodelleerd)
-
Eigen Java™ API en HTTP APIs
-
AEM voorspeltondersteunend gemeenschappelijke vraagvereisten
-
Uitbreidbare API, die voor de ontwikkeling van douane vraagpredikatentoestaat
-
JCR-SQL2 en XPath kunnen direct via Sling worden uitgevoerden JCR APIs, terugkerend resultaten a Sling Middelenof Knooppunten JCR, respectievelijk.
Sling API's
Apache Slingis het RESTful Webkader dat AEM steunt. Sling verstrekt HTTP- verzoek het verpletteren, modelleert knopen JCR als middelen, verstrekt veiligheidscontext, en veel meer.
API's van Sling hebben het extra voordeel dat ze kunnen worden gemaakt voor extensies. Dit betekent dat het vaak eenvoudiger en veiliger is om het gedrag van toepassingen die met Sling API's zijn gemaakt, te verbeteren dan van minder uitbreidbare JCR API's.
Veelvoorkomende toepassingen van API's van Sling
-
De toegang tot van knopen JCR als Sling Resourcesen de toegang tot van hun gegevens via ValueMaps.
-
Het verstrekken van veiligheidscontext via ResourceResolver.
-
Creërend en verwijderend middelen via ResourceResolver creeer/beweeg/exemplaar/schrapt methodes.
-
Het bijwerken eigenschappen via ModifyingValueMap.
-
Bouwstenen voor aanvraagverwerking maken
-
Asynchrone bouwstenen voor werkverwerking
JCR-API's
JCR (de Bewaarplaats van de Inhoud Java™) 2.0 APIsmaakt deel uit van een specificatie voor de implementaties van JCR (in het geval van AEM, Apache Jackrabbit Oak). Alle JCR-implementatie moet in overeenstemming zijn met deze API's en deze implementeren. Dit is dus de API op het laagste niveau voor interactie met AEM-inhoud.
De JCR zelf is een hiërarchische/boomgebaseerde NoSQL datastore AEM gebruikt als opslagplaats voor inhoud. De JCR heeft een uitgebreide reeks ondersteunde API's, variërend van inhoud-CRUD tot het opvragen van inhoud. Ondanks deze robuuste API hebben ze maar zelden de voorkeur boven AEM en Sling -abstracties op een hoger niveau.
Geef altijd de voorkeur aan de JCR API's boven de Apache Jackrabbit Oak API's. JCR APIs is voor het in wisselwerking staan met een bewaarplaats JCR, terwijl Oak APIs voor het uitvoeren van een bewaarplaats JCR is.