Canvas Apps: Performance e modalità offline

Strategie di caching, delega, ottimizzazione delle formule e gestione offline per app mobili ad alte prestazioni su Power Platform.

Introduzione alle performance delle Canvas Apps

Le Canvas Apps rappresentano una delle soluzioni low-code più flessibili della Power Platform. Sono progettate per offrire esperienze utente personalizzate e ottimizzabili sia per desktop che per dispositivi mobili. Tuttavia, per garantire prestazioni elevate e una buona esperienza offline, è necessario seguire alcune best practice tecniche e architetturali.

La performance di una Canvas App dipende da fattori quali il numero di connessioni ai dati, la complessità delle formule Power Fx, l’utilizzo del caching, la delega delle query e la gestione dei dati locali. Inoltre, la modalità offline richiede configurazioni specifiche per consentire la sincronizzazione dei dati con Dataverse o altre origini al ripristino della connessione.

Caching dei dati e riduzione delle chiamate

Il caching nelle Canvas Apps consente di ridurre il numero di richieste ai connettori esterni e migliorare i tempi di risposta. L’uso di funzioni come Collect() e ClearCollect() permette di memorizzare localmente i dati per riutilizzarli in più schermate.

È fondamentale aggiornare i dati solo quando necessario, ad esempio all’apertura dell’app o su richiesta esplicita dell’utente. Ciò riduce i tempi di caricamento e l’impatto sulle API. Quando si lavora con Dataverse, l’uso dell’API client-side e del controllo della cache riduce la latenza e migliora l’esperienza offline.

  • Memorizza dataset statici in collezioni temporanee.
  • Evita chiamate ripetitive a connettori lenti o non delegabili.
  • Implementa logiche di refresh condizionale per sincronizzare solo i dati modificati.

Delega delle query e limiti di delega

La delega consente alle Canvas Apps di eseguire operazioni come filtri e ordinamenti direttamente sul server, evitando di trasferire interi dataset all’app. Tuttavia, non tutte le funzioni Power Fx sono delegabili. È importante conoscere i limiti di delega e progettare le formule in modo che siano eseguite dal server.

Ad esempio, funzioni come Filter() e Sort() sono delegabili in Dataverse, ma altre come ForAll() o CountIf() potrebbero non esserlo. L’applicazione di filtri non delegabili su dataset ampi può portare a risultati incompleti e prestazioni scarse.

Best practice per la delega
  • Verifica sempre la delegabilità delle formule con l’indicatore blu nel designer.
  • Utilizza Dataverse o SQL come origini dati per supportare query complesse.
  • Suddividi i dataset in pagine logiche per evitare limiti di record.

Ottimizzazione delle formule Power Fx

Power Fx è il linguaggio espressionale delle Canvas Apps, derivato da Excel, che permette di implementare logiche di business e calcoli. L’ottimizzazione delle formule è una leva fondamentale per migliorare la performance complessiva dell’app.

  • Evita formule ridondanti o calcoli ripetuti in più controlli.
  • Usa variabili di contesto (UpdateContext()) o globali (Set()) per memorizzare risultati temporanei.
  • Riduci l’uso di LookUp() o Filter() annidati.
  • Evita l’uso di Concurrent() per operazioni non parallele.

Inoltre, sfruttare le funzioni di monitoraggio integrate nel Power Apps Studio (Monitor Tool) consente di individuare colli di bottiglia e ottimizzare le prestazioni delle schermate più complesse.

Funzionalità offline e sincronizzazione

La modalità offline nelle Canvas Apps è particolarmente utile per i lavoratori sul campo e per gli scenari in cui la connettività è intermittente. Essa consente di lavorare con dati locali e sincronizzarli automaticamente quando la connessione viene ripristinata.

Per abilitare il supporto offline, l’app deve utilizzare collezioni locali per memorizzare i dati e implementare logiche di sincronizzazione tramite funzioni come SaveData() e LoadData(). Queste funzioni consentono di salvare i dati in cache locale e ricaricarli all’avvio dell’app, garantendo continuità operativa.

  • Usa SaveData() per memorizzare dataset critici in locale.
  • Applica LoadData() all’avvio dell’app per recuperare i dati salvati.
  • Gestisci conflitti di sincronizzazione tramite controlli condizionali.

Microsoft raccomanda di testare a fondo la modalità offline in ambienti con dati reali per garantire la coerenza delle sincronizzazioni e l’assenza di perdite di dati.

Performance su dispositivi mobili

Le Canvas Apps sono pensate per essere eseguite anche su dispositivi mobili tramite l’app Power Apps per iOS e Android. Tuttavia, la potenza di calcolo e la memoria dei dispositivi mobili sono limitate rispetto a un PC desktop. È quindi importante ottimizzare il design e la logica.

  • Riduci il numero di controlli visibili contemporaneamente.
  • Carica immagini e risorse multimediali solo quando necessario.
  • Evita l’uso di formule complesse su eventi come OnVisible o OnStart.
  • Testa l’app su dispositivi con diversi livelli di connettività e performance.

Le prestazioni mobili migliorano notevolmente quando si utilizzano connettori delegabili e caching locale. Per approfondimenti, consulta la documentazione Microsoft sulle app offline.

Domande frequenti sulle performance delle Canvas Apps

Qual è la differenza tra caching e delega?

Il caching memorizza i dati localmente per ridurre le chiamate ai server, mentre la delega consente di eseguire le query direttamente sul server evitando il trasferimento di dataset completi. Entrambe le tecniche migliorano la performance ma agiscono su livelli diversi.

Posso usare Power Fx per la gestione offline?

Sì, Power Fx supporta funzioni come SaveData() e LoadData() per il salvataggio e caricamento dei dati locali, rendendo possibile la logica offline senza codice tradizionale.

Le Canvas Apps funzionano anche su dispositivi senza Dataverse?

Sì, è possibile creare Canvas Apps che si connettono ad altre origini dati tramite connettori standard o custom, anche senza Dataverse. Tuttavia, la gestione offline è più efficiente con Dataverse.