API AEM

Le API di AEM forniscono astrazioni e funzionalità specifiche per i casi d’uso prodotti.

Le API PageManager e Page di AEM, ad esempio, forniscono astrazioni per cq:Page nodi in AEM che rappresentano pagine Web.

Anche se questi nodi sono disponibili tramite API Sling come risorse e API JCR come nodi, le API di AEM forniscono astrazioni per i casi d'uso comuni. L’utilizzo delle API di AEM garantisce un comportamento coerente tra AEM e le personalizzazioni ed estensioni di AEM.

com.adobe.* rispetto a com.day.* API

Le API di AEM hanno una preferenza intra-package, identificata dai seguenti pacchetti Java™, in ordine di preferenza:

  1. com.adobe.cq
  2. com.adobe.granite
  3. com.day.cq

Il pacchetto com.adobe.cq supporta casi di utilizzo di prodotti, mentre com.adobe.granite supporta casi di utilizzo di piattaforme tra più prodotti, ad esempio flussi di lavoro o attività (utilizzate tra i prodotti: AEM Assets, Sites e così via).

Il pacchetto com.day.cq contiene API "originali". Queste API rispondono alle astrazioni e alle funzionalità di base che esistevano prima e/o intorno all'acquisizione di Day CQ da parte di Adobe. Queste API sono supportate e devono essere evitate, a meno che com.adobe.cq o com.adobe.granite pacchetti NON forniscano un'alternativa (più recente).

Le nuove astrazioni, ad esempio Content Fragments e Experience Fragments, vengono create nello spazio com.adobe.cq anziché com.day.cq come descritto di seguito.

API di query

AEM supporta più linguaggi di query. Le tre lingue principali sono JCR-SQL2, XPath e AEM Query Builder.

La preoccupazione più importante è mantenere un linguaggio di query coerente in tutta la base di codice, per ridurre la complessità e i costi di comprensione.

Tutti i linguaggi di query hanno effettivamente gli stessi profili di prestazioni, in quanto Apache Oak li trasferisce a JCR-SQL2 per l'esecuzione finale della query e il tempo di conversione a JCR-SQL2 è trascurabile rispetto al tempo di query stesso.

L'API preferita è AEM Query Builder, che rappresenta l'astrazione di livello più alto e fornisce un'API solida per la costruzione, l'esecuzione e il recupero dei risultati per le query, nonché le seguenti informazioni:

CAUTION
L'API QueryBuilder di AEM genera una perdita di un oggetto ResourceResolver. Per limitare questa perdita, segui questo esempio di codice.

Sling API

Apache Sling è il framework web RESTful su cui si basa AEM. Sling fornisce il routing delle richieste HTTP, modella i nodi JCR come risorse, fornisce il contesto di sicurezza e molto altro.

Sling API hanno il vantaggio aggiunto di essere create per l'estensione, il che significa che è spesso più facile e sicuro migliorare il comportamento delle applicazioni create utilizzando Sling API rispetto alle API JCR meno estensibili.

Utilizzi comuni delle API Sling

API JCR

Le API JCR (Java™ Content Repository) 2.0 fanno parte di una specifica per le implementazioni JCR (nel caso di AEM, Apache Jackrabbit Oak). Tutta l’implementazione JCR deve essere conforme a e implementare queste API, e pertanto rappresenta l’API di livello più basso per interagire con i contenuti di AEM.

Il JCR stesso è un archivio dati NoSQL gerarchico/ad albero utilizzato da AEM come archivio dei contenuti. JCR dispone di una vasta gamma di API supportate, che vanno dal contenuto CRUD all’esecuzione di query sui contenuti. Nonostante questa robusta API, è raro che siano preferite rispetto alle astrazioni di livello superiore di AEM e Sling.

Preferisci sempre le API JCR rispetto alle API Apache Jackrabbit Oak. Le API JCR sono per interagire con un archivio JCR, mentre le API Oak sono per implementare un archivio JCR.