DG

Developer Guidelines (Linee guida per gli sviluppatori)

Sfondo

DG identifica deviazioni da specifiche linee guida di sviluppo per AEM 6.5 e AEM as a Cloud Service. Seguendo le best practice è possibile migliorare la manutenzione e le prestazioni del sistema. Queste deviazioni potrebbero non essere un problema in altri contesti applicativi, incluse versioni precedenti di AEM; tuttavia possono causare problemi se vengono utilizzate con AEM as a Cloud Service.

I sottotipi vengono utilizzati per identificare diversi tipi di violazioni rilevate:

  • java.io.inputstream: utilizzo di java.io.InputStream nel codice dell’applicazione.
  • maintenance.task.configuration: configurazione di una certa attività di manutenzione periodica.
  • sling.commons.scheduler: utilizzo dell’API Sling Commons Scheduler per un’attività pianificata.
  • unsupported.asset.api: utilizzo delle API di Asset Manager non supportate nel codice dell’applicazione.

Possibili implicazioni e rischi

  • java.io.inputstream

    • Lo streaming di dati binari con java.io.InputStream può sfruttare le risorse di memoria al punto di influire sulle prestazioni. Questo diventa un problema a causa della memoria limitata disponibile nei contenitori utilizzati in AEM as a Cloud Service.
  • maintenance.task.configuration

    • Alcune attività di manutenzione che in precedenza richiedevano una configurazione esplicita vengono ora configurate e gestite automaticamente in AEM as a Cloud Service.
    • La configurazione dell’attività di manutenzione in AEM as a Cloud Service deve essere spostata nel controllo del codice sorgente.
  • sling.commons.scheduler

    • Le applicazioni dipendenti da attività in background che utilizzano Sling Commons Scheduler potrebbero non funzionare come previsto perché la loro esecuzione non è garantita in AEM as a Cloud Service.
    • Le linee guida di sviluppo di AEM as a Cloud Service per attività in background e processi con tempi di esecuzione lunghi suggeriscono che il codice eseguito come attività pianificata debba presupporre che l’istanza su cui è in esecuzione possa essere disattivata in qualsiasi momento. Pertanto, il codice deve essere resiliente e riutilizzabile.
  • unsupported.asset.api

    • Le seguenti API di Asset Manager sono contrassegnate come non supportate in AEM as a Cloud Service.
      • createAssetForBinary
      • getAssetForBinary
      • removeAssetForBinary
      • createAsset

Soluzioni possibili

  • java.io.inputstream

    • Utilizza un approccio di caricamento binario diretto in cui i dati binari vengono aggiunti direttamente al datastore.
    • Per i casi di utilizzo relativi alle risorse, utilizza aem-upload. Per altri tipi di dati binari, la logica di caricamento personalizzata può essere modellata secondo lo stesso schema.
  • maintenance.task.configuration

  • sling.commons.scheduler

    • Sostituisci l’uso di Sling Commons Scheduler con processi Sling, che dispongono di una garanzia di esecuzione “almeno una volta”.
    • Se possibile, dovresti evitare processi con tempi di esecuzione lunghi.
  • unsupported.asset.api

    • Anziché utilizzare le API non supportate di Asset Manager, utilizza aem-upload.
  • Per eventuali domande o dubbi, contatta il Team di supporto AEM.

In questa pagina