Contribuire all’AEM contributing-to-aem

Metodologia di sviluppo development-methodology

L’AEM è sviluppato seguendo metodologie comprovate comunemente utilizzate in grandi progetti open source. Molti elementi core nello stack di tecnologia AEM sono infatti mantenuti come progetti open source attivi, come Sling e Jackrabbit, che hanno contribuito alla Apache Software Foundation. Un aspetto importante di questo spirito che è presente in AEM è che si è incoraggiati a utilizzare le mailing list disponibili e i forum online per interazioni dirette con il team di sviluppo.

Se contribuisci ai componenti dell’AEM, impara a conoscere l’AEM come faresti quando contribuisci a un progetto open-source e comunica con il team di base esistente come faresti quando hai intenzione di contribuire a tale progetto.

Esperienza richiesta required-experience

Il protocollo HTTP (HyperText Transfer Protocol) è fondamentale per tutte le attività svolte. Pertanto, prima di contribuire all’AEM, è necessario avere una conoscenza approfondita di HTTP, idealmente nella misura in cui è possibile scrivere una propria implementazione Java™ di un server HTTP multithread con thread-pooling. È inoltre necessario conoscere il comportamento keep-alive di HTTP/1.1 e le interazioni lato server/client con JavaScript, in particolare lo stile di interazione asincrona rappresentato dall'AJAX.

Poiché il dinamismo delle pagine e i contenuti interattivi sono fondamentali per l'esperienza WM, è essenziale avere una conoscenza approfondita del modello a oggetti documento e del suo potenziale di manipolazione programmatica in risposta agli eventi. È necessario avere una certa conoscenza, ad esempio, della manipolazione DOM in tempo reale e del comportamento di trascinamento su più documenti del browser (ad esempio, utilizzando gli iframe).

Al livello più alto, dovresti avere una solida conoscenza di:

  • il Protocollo HTTP/1.1
  • HTML (preferibilmente HTML5)
  • Cascading Style Sheets
  • XML (Extensible Markup Language)
  • Modelli di progettazione Asynchronous JavaScript and XML (AJAX)
  • JSON (JavaScript Object Notation)
  • Modello a oggetti documento
  • Interazioni con stato e senza stato
  • Identificatori risorse uniformi
  • Cookie del browser
  • e altri concetti moderni di sviluppo web

Lo stack tecnologico di Adobe Experience Manager si basa sulla Apache Felix Contenitore OSGI con Apache Sling framework web e incorpora un archivio di contenuti Java™ (JCR) in base a Apache Jackrabbit. Acquisisci familiarità con questi singoli progetti e con qualsiasi altro componente open-source (ad esempio, Apache Lucene) utilizzato nell’area in cui intendi contribuire.

Conoscenza tribale tribal-knowledge

Alcuni concetti e principi guida sono profondamente radicati nella cultura antica. Questa sezione elenca alcuni dei problemi "profondamente legati al DNA" che dovresti conoscere.

Tutto è contenuto everything-is-content

Il contenuto include non solo tutti i dati persistenti dell’applicazione web. Il codice del programma, le librerie, gli script, i modelli, i HTML, i CSS, le immagini e gli artefatti di tutti i tipi, qualsiasi cosa e tutto viene mantenuto nell’archivio dei contenuti e importato/esportato sotto forma di pacchetti tramite Gestione pacchetti e Condivisione pacchetti.

Modello di David david-s-model

Il modo in cui il contenuto deve essere modellato in un Java™ Content Repository richiede un modo di pensare completamente diverso rispetto a quello che è pratica comune nel settore del software per la modellazione dei dati nel mondo relazionale. Lettura essenziale per tutti i nuovi utenti della gestione dei contenuti con la modalità JCR David's Model: una guida per la modellazione dei contenuti.

RESTfulness restfulness

L'approccio REST è profondamente radicato in ciò che facciamo. Ciò significa, tra l’altro, evitare interazioni con informazioni di stato e tenere presente che gli URI sono indirizzi definitivi per contenuti e servizi.

REST (REpresentational State Transfer) si riferisce allo stile architettonico del software su cui si basa il World Wide Web. Descrive gli elementi chiave che fanno funzionare il Web e fornisce quindi un insieme di principi per la progettazione del software basato sul Web. Durante la progettazione di un’API da utilizzare sul web, ha quindi senso aderire a queste "best practice".

Poiché REST fornisce la filosofia che guida gran parte di ciò che facciamo, dovresti considerare essenziale diventare esperti nei principi del design RESTful. Un buon punto di partenza è con La tesi di Roy Fielding.

Risoluzione richiesta Sling sling-request-resolution

Un aspetto chiave per comprendere l’AEM è il modo in cui le richieste in entrata si relazionano al contenuto e al comportamento dell’applicazione, il modo in cui il contenuto è strutturato nell’archivio dei contenuti e il punto in cui l’AEM cerca la logica dell’applicazione per gestire la richiesta. Scopri Apache Scomposizione URL Sling e il modo in cui applica lo stile architettonico REST e i suoi vincoli di sistema senza stato, memorizzabili nella cache e su più livelli.

Gli aspetti chiave per comprendere la risoluzione delle richieste di Apache Sling sono il modo in cui le richieste vengono principalmente mappate a una risorsa specifica nel Content Repository, il modo in cui le proprietà aggiuntive della richiesta, insieme alle proprietà di questi oggetti di contenuto, determinano quale codice dell’applicazione viene richiamato per riprodurre il contenuto e il modo in cui il codice in /apps sostituisce il codice in /libs.

Quickstart quickstart

Nessun passaggio tre: per installare ed eseguire, è sufficiente scaricare e fare doppio clic sul file JAR Quickstart. Non c'è nessun passaggio tre. Per qualsiasi funzionalità opzionale aggiuntiva è sufficiente installare il pacchetto appropriato da Condivisione pacchetti.

Dimensioni ridotte di Quickstart: mantenere al minimo le dimensioni del file JAR Quickstart. Utilizza in modo intelligente e ottimizzato le librerie, spostando le funzionalità facoltative in Condivisione pacchetti.

Tempi di avvio più rapidi: quando si apporta una modifica che potrebbe influire sul tempo di avvio, assicurarsi che sia più breve, non più lungo.

Snella e media lean-and-mean

Preferiamo il codice e i progetti leggeri, piccoli, veloci ed eleganti. "Abbastanza buono" non basta.

Riutilizzo del codice: la nostra architettura di prodotto basata su OSGi e la filosofia "Everything is content" (tutto è contenuto) ci offrono opportunità insolitamente buone per il riutilizzo del codice e degli artefatti. Cerchiamo di sfruttare questo fatto ogni volta possibile per mantenere le funzioni snelle e mediocri.

Accoppiamento libero: favoriamo le interazioni liberamente accoppiate rispetto a dipendenze strette e "intimità indesiderata". L'accoppiamento flessibile consente inoltre un maggior riutilizzo del codice.

Non interrompere la demo don-t-break-the-demo

Acquisisci familiarità con gli script demo e le funzionalità dei prodotti che vengono mostrati più spesso nelle demo. Devi capire che niente di ciò che fai deve mai interrompere una funzione di "script dimostrativo". Il prodotto di base deve essere sempre pronto per la dimostrazione, anche durante lo sviluppo.

Design affidabile design-for-reliability

Ci impegniamo a progettare e codificare le funzioni in modo fallsoft, in modo che (ad esempio) un problema con un singolo elemento DOM non faccia in modo che un’intera pagina non venga riprodotta. In altre parole: fare cose che dovrebbero essere fatali, fatali. Rendi tutto il resto superabile. Rendi il prodotto "perdonante".

Anormale è il nuovo normale abnormal-is-the-new-normal

Non dipendere dagli hook di arresto, assicurati che la pulizia venga eseguita all'avvio. La terminazione anomala è la terminazione normale.

shutdown == kill -9 == power outage

Essere pronti per il clustering elastico be-ready-for-elastic-clustering

Essere sempre pronti per il clustering elastico; presupporre sempre che sia presente il clustering. In genere, rispettare tutto ciò che si trova nell’archivio dei contenuti significa supportare il clustering integrato.

Progettazione per compatibilità con le versioni precedenti design-for-backward-compatibility

Non devi fare nulla per violare il vecchio codice di un cliente. Considera solo /libs deve contenere il codice del prodotto che può essere aggiornato durante un aggiornamento. Il /apps dell’archivio è il codice del progetto e il codice /etc contiene configurazioni personalizzate che devono essere mantenute. In genere, non sovrascrivere nulla in /apps, /content, e /home. Dopo un aggiornamento, il vecchio codice di progetto, le configurazioni e il contenuto dovrebbero continuare a funzionare come prima dell’aggiornamento.

La progettazione per la compatibilità con le versioni precedenti assicura inoltre che l’esperienza di aggiornamento corrisponda alla semplicità dell’installazione iniziale. È sufficiente arrestare l’AEM, sostituire il file JAR di Quickstart e riavviare l’AEM. Con una base di installazione in rapida crescita, l'efficienza dell'aggiornamento è un vantaggio sempre più significativo.

Anche se le API esistenti possono e devono essere contrassegnate come obsolete quando sono più recenti, una migliore funzionalità le sostituisce, tutte le API che sono state rese pubbliche in una precedente versione 5.x devono rimanere funzionali, in quanto potrebbero essere utilizzate nel codice personalizzato dell’applicazione. Nessuna API di questo tipo deve essere rimossa.

È inoltre necessario tenere presente la compatibilità con le versioni precedenti per quanto riguarda la coerenza generale della struttura dei contenuti e l’esperienza utente.

Concetti di base core-concepts

Istanza Autore - In genere, per motivi di sicurezza, governance e altri motivi, un sito di produzione divide le istanze AEM in istanze Author e Publish. Per ulteriori informazioni sull’architettura di distribuzione (incluse le istanze Author/Publish), consulta la documentazione sulle istanze AEM.

Caching, frittura e cottura al forno - Tradizionalmente, i concetti di cottura al forno e frittura rappresentano un'importante distinzione tra i diversi sistemi di gestione dei contenuti web. In gergo CMS, "baking" si riferisce al concetto di commit dei dati in file statici al momento della pubblicazione, mentre "fying" si riferisce al concetto di elaborazione dei dati per la presentazione finale al momento della richiesta (ovvero, appena nel tempo).

Clustering e bilanciamento del carico - Per aumentare la disponibilità e migliorare le prestazioni di un ambiente di produzione, in genere si combinano più istanze di authoring e/o pubblicazione (in cluster), rendendole disponibili per diversi gruppi di utenti o bilanciandole con il carico dietro una configurazione di Dispatcher.

È inoltre possibile combinare più istanze dell’archivio dei contenuti per creare un elevata disponibilità Soluzione JCR, che può essere integrata con la soluzione AEM per massimizzare la protezione contro guasti hardware e software. Consulta Distribuzioni consigliate per ulteriori informazioni.

Componente - In AEM, un componente è un tipo di oggetto, le cui istanze possono generalmente essere create trascinandole e rilasciandole, ad esempio, dal Sidekick. Ad esempio, i componenti predefiniti forniti con AEM includono i componenti Testo, Titolo, Tag Cloud, Carosello, Immagine ed Elenco, tutti disponibili dal Sidekick in fase di esecuzione.

Content Finder - In modalità authoring, Content Finder è un pannello speciale (cornice) sul lato sinistro della pagina che, a seconda della scheda selezionata nella parte superiore, visualizza elenchi di immagini, documenti, risorse di Flash, pagine, paragrafi o risorse del repository che è possibile trascinare e rilasciare dal Content Finder nella pagina su cui si sta lavorando (sulla destra).

Risorse digitali - In AEM, le risorse digitali sono (tipicamente) immagini e file rich media. Per ulteriori informazioni, consulta Utilizzo delle risorse digitali in DAM.

Dispatcher - Dispatcher è uno strumento di caching e bilanciamento del carico e fornisce alcune protezioni di sicurezza.

Widget ExtJS : la maggior parte degli elementi dell’interfaccia utente dell’AEM utilizza ExtJS, una libreria di widget di terze parti scritta in JavaScript. ExtJS dispone di widget per l'interfaccia utente personalizzabili a elevate prestazioni e di un modello di componente ben progettato ed estensibile.

JCR, Java™ Content Repository - Le specifiche di Java™ Content Repository (JSR-283) forniscono sia un modello di dati astratti che un'interfaccia di programmazione dell'applicazione per realizzare un repository di dati NoSQL ampiamente scalabile che combina le caratteristiche di un file system e di un database di oggetti. Anche se non è necessario comprendere JSR-283 in modo esaustivo, è necessario prendere tempo per acquisire familiarità con le funzionalità di base di JCR e il modello dati sottostante, perché JCR è ciò che rende possibile la filosofia "tutto è contenuto" dell’AEM.

In sostanza, JCR è un sistema di nodi e proprietà, in cui i nodi possono ereditare da altri nodi e tutto il contenuto viene memorizzato come proprietà valori. Oltre all’ereditarietà ordinaria, JCR consente il concetto di nodi "mixin", che consente la modellazione di più ereditarietà.

JCR dispone di diversi tipi di nodo e tipi di proprietà predefiniti, ma in generale il sistema di digitazione è flessibile e uno dei punti di forza di JCR è che consente di memorizzare e gestire contenuti strutturati e non strutturati con la stessa facilità. In altre parole, JCR può gestire dati altamente strutturati, ma può anche ospitare strutture di dati dinamici arbitrari senza vincoli di schema.

Il JavaDoc per l’API Java™ di JCR è qui.

Prima di tentare di leggere JavaDoc o la specifica JCR, è possibile esaminare questa spiegazione di alto livello di JCR come implementato da Adobe Experience Services.

Gestione multisito (MSM) - La funzione MSM dell'AEM aiuta i clienti a gestire contenuti multilingue e multinazionali, consentendo loro di bilanciare il branding centralizzato con i contenuti localizzati.

OSGi - OSGi è la tecnologia runtime basata sui servizi che fornisce la base per lo sviluppo modularizzato Java™ nell’AEM. Si tratta di un framework che fornisce non solo un ambiente di caricamento ed esecuzione altamente dinamico (e sicuro) per le risorse di codice (noti come bundle), ma anche un controllo completo sulla visibilità e sul ciclo di vita dei vari servizi esposti dai bundle. Un registro di servizio fornisce un modello di cooperazione per i bundle che tiene conto delle dinamiche del ciclo di vita (e dei requisiti di versione). OSGi risolve molti dei problemi che gli application server erano destinati a risolvere, ma lo fa in modo leggero e altamente dinamico, rendendo possibile, ad esempio, l’implementazione a caldo dei servizi (rendendo il nuovo codice immediatamente disponibile senza riavviare il server).

Parsys, Sistema paragrafi - Il sistema paragrafo (parsys) è un componente composto che consente agli autori di aggiungere componenti di tipi diversi a una pagina e contiene altri componenti paragrafo. Ogni tipo di paragrafo è rappresentato come componente. Anche il sistema paragrafo è un componente che contiene gli altri componenti paragrafo.

Microkernel - Ogni area di lavoro nel repository può essere configurata separatamente per memorizzare i propri dati tramite un microkernel specifico (una classe che gestisce la lettura e la scrittura dei dati). Analogamente, l’archivio delle versioni a livello di repository può anche essere configurato in modo indipendente per utilizzare un particolare microkernel. Sono disponibili diversi microkernel, in grado di memorizzare dati in vari formati di file o database relazionali. (Ad esempio, esistono gestori di persistenza per MongoDB, DB2® o Oracle) Il microkernel predefinito per l’AEM è TarMK (vedi di seguito ulteriori informazioni).

Pubblica istanza - Per motivi di sicurezza, governance e altri motivi, in genere un sito di produzione divide le istanze AEM in istanze Author e Publish. Per ulteriori informazioni sull’architettura di distribuzione (incluse le istanze Author/Publish), consulta la documentazione sulle istanze AEM.

Quickstart - A differenza di molti altri programmi, si installa AEM utilizzando un singolo file JAR autoestraente "Quickstart". Quando fai doppio clic sul file JAR per la prima volta, tutto ciò che ti serve viene installato automaticamente. Il file JAR quickstart include tutti i file necessari per l'archivio CRX (incluse le strutture amministrative), i servizi dell'archivio virtuale, i servizi di indicizzazione e ricerca, i servizi del flusso di lavoro, la sicurezza e un server Web, oltre al CQ Servlet Engine (CQSE) e a tutti i servizi AEM. Nessun altro file da installare: Quickstart è autonomo.

La prima volta che avvii Quickstart, crea in background un intero archivio compatibile con JCR, il che può richiedere alcuni minuti. Dopo questo avvio iniziale, le avviazioni successive sono molto più rapide in quanto l’infrastruttura dell’archivio è già stata impostata.

Molte opzioni di avvio (come il numero di porta attivo e se l’istanza AEM in questione deve essere un’istanza Publish rispetto a un’istanza Autore; e molto altro) possono essere controllate rinominando in modo appropriato il file Quickstart. Per visualizzare un elenco di opzioni a questo proposito, esegui il file JAR con "-help" sulla riga di comando:

java -jar <quickstartfilename>.jar -help

Agenti di replica - Gli agenti di replica sono fondamentali per l’AEM in quanto meccanismo utilizzato per pubblicare (attivare) i contenuti da un ambiente di authoring a uno di pubblicazione; svuotano i contenuti dalla cache di Dispatcher; restituiscono i contenuti generati dall’utente (ad esempio, l’input di un modulo) dall’ambiente di pubblicazione all’ambiente di authoring.

Scaffolding : con lo scaffolding è possibile creare un modulo (uno scaffold) con campi che riflettono la struttura desiderata per le pagine e quindi utilizzare questo modulo per creare facilmente pagine basate su questa struttura.

Segmentazione - I visitatori del sito hanno interessi e obiettivi diversi quando arrivano su un sito. Comprendere gli obiettivi dei visitatori e soddisfare le loro aspettative è un importante prerequisito di successo per il marketing online. La segmentazione consente di ottenere questo risultato analizzando e caratterizzando i dettagli di un visitatore.

Sidekick - Il Sidekick è una finestra mobile, simile a una palette, che viene visualizzata nella pagina modificabile, dalla quale è possibile trascinare nuovi componenti e eseguire le azioni applicabili alla pagina.

Site Catalyst : il SiteCatalyst offre agli esperti di marketing un’unica posizione per misurare, analizzare e ottimizzare i dati integrati da tutte le iniziative online su più canali di marketing. Puoi utilizzare Adobe SiteCatalyst per analizzare i dati dai siti web dell’AEM.

Archiviazione Tar (TarMK) - TarMK è il sistema di persistenza predefinito nell’AEM. Anche se l’AEM può essere configurato per utilizzare un sistema di persistenza diverso (come MongoDB), TarMK ha alcuni vantaggi in quanto è ottimizzato per le prestazioni per i tipici casi d’uso JCR (quindi è veloce), utilizza un formato dati standard di settore e può essere sottoposto a backup in modo rapido e semplice.

Modello - In AEM, un modello specifica un particolare tipo di pagina. Definisce la struttura di una pagina (specificando anche in genere un’immagine di miniatura e varie proprietà). Ad esempio, puoi avere modelli separati per pagine di prodotti, sitemap e informazioni di contatto.

Flusso di lavoro - Il sistema di flusso di lavoro AEM consente la creazione di processi automatizzati che coinvolgono pagine o risorse.

recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2