Cos'è l'uso limitato di codice?
Cos'è l'uso limitato di codice e come viene usato nelle app basate su canvas di Power Apps?
Si supponga di aver lavorato per lungo tempo in un team di sviluppo tradizionale o con un uso esteso del codice presso VanArsdel. Si è sviluppato di tutto, dalle applicazioni della console .NET Core alle API Web di ASP.NET Core fino alle raccolte riusabili condivise insieme tramite NuGet. Ora che si inizia ad apprendere Power Apps partendo da un background di sviluppo tradizionale, è utile capire cosa si intende per "uso limitato di codice".
Questo termine può avere significati diversi per le persone che lo sentono per la prima volta. Quando si parla di uso limitato di codice, ci si riferisce al fatto che, con strumenti come Power Apps, è sufficiente scrivere una piccola quantità di codice per ottenere risultati che normalmente richiederebbero molte più righe di codice in un linguaggio di programmazione tradizionale.
Nelle app basate su canvas di Power Apps, il linguaggio di scripting con uso limitato di codice è denominato Power Fx ed è il linguaggio che verrà descritto e usato in questo modulo per creare un'app.
Ecco un esempio: per cercare il nome del dipendente per un ordine, si dovrebbe scrivere la formula Power Fx o l'equivalente in JavaScript, come mostrato nell'animazione seguente. Questa animazione mostra il mapping tra le parti della formula Power Fx e i concetti da codificare esplicitamente nella formula JavaScript equivalente.
Nelle sezioni successive verranno approfonditi tutti gli aspetti di Power Fx, sottolineando la notevole flessibilità di ottimizzazione che fornisce grazie alla formula dichiarativa:
Asincrone
Tutte le operazioni sui dati in Power Fx sono asincrone. Lo sviluppatore non ha bisogno di specificarlo, né di sincronizzare i dati al termine della chiamata. E, soprattutto, non ha bisogno di conoscere questo concetto, né di sapere cosa sia una promessa o una funzione lambda.
Ambiente locale e remoto
Power Fx usa la stessa sintassi e le stesse funzioni per i dati locali in memoria e per quelli remoti in un database o servizio. L'utente non deve preoccuparsi di questa distinzione. Power Fx delega automaticamente tutto ciò che può al server per elaborare i filtri e l'ordinamento in modo più efficiente.
Dati relazionali
Ordini e Clienti sono due tabelle diverse, correlate tramite una relazione molti-a-uno. La query OData richiede un "$expand" che conosca la chiave esterna, analogamente a un join in SQL. Nella formula non c'è nulla di tutto questo: le chiavi del database, infatti, sono un altro concetto che il creatore può non conoscere. Per accedere all'intero grafico delle relazioni da un record, il creatore può usare una semplice notazione con punto.
Proiezione
Durante la scrittura di una query, molti sviluppatori useranno "seleziona * da..." che restituisce tutte le colonne di dati. Power Fx esegue l'analisi di tutte le colonne usate nell'intera app, anche tra le dipendenze delle formule. La proiezione viene ottimizzata automaticamente e, anche in questo caso, il creatore non ha neanche bisogno di sapere il significato di questa parola.
Recupero dei soli elementi necessari
In questo esempio, la funzione LookUp implica che deve essere recuperato un solo record, che rappresenta tutto ciò che verrà restituito. Se vengono richiesti più record con la funzione Filter, che può restituire migliaia di record, viene visualizzata una sola pagina di dati alla volta nell'ordine di cento record. L'utente deve usare una raccolta o una tabella di dati per visualizzare i dati aggiuntivi, che vengono restituiti automaticamente. Il creatore può lavorare su set di dati di grandi dimensioni senza dover pensare a come limitare le richieste di dati per ottenere blocchi gestibili.
Esecuzione solo quando richiesto
È stata definita una formula per la proprietà Text del controllo dell'etichetta. Se la variabile Selected cambia, LookUp viene ricalcolato automaticamente e l'etichetta viene aggiornata. Il creatore non ha bisogno di scrivere un gestore OnChange per Selection, dal quale, va ricordato, dipende l'etichetta. Si tratta della programmazione dichiarativa di cui si parlava in precedenza. Il creatore ha specificato cosa includere nell'etichetta, non come o quando recuperarla. Infatti, se l'etichetta non è visibile perché si trova su una schermata non visualizzata oppure perché la proprietà Visible è false, il calcolo può essere rimandato fino a quando l'etichetta non torna visibile oppure l'etichetta può essere eliminata se è visualizzata raramente.
Traduzione della sintassi di Excel
Excel viene usato da centinaia di milioni di utenti, gran parte dei quali sa che "&" viene usato per la concatenazione di stringhe. JavaScript usa "+" e altri linguaggi usano ".". Power Fx va incontro ai creatori, usando le conoscenze che già possiedono.
Nomi visualizzati e localizzazione
"First Name" viene usato nella formula Power Fx, mentre nwind_firstname nell'equivalente JavaScript. Anche in Dataverse e SharePoint è disponibile un nome visualizzato per i campi e le tabelle, nonché un nome logico univoco. I nomi visualizzati sono spesso molto più intuitivi, come in questo caso, ma hanno un'altra importante caratteristica: possono essere localizzati. In un team multilingue, ogni membro può vedere i nomi delle tabelle e dei campi nella propria lingua. Power Fx si assicura che, in qualsiasi caso, il nome logico corretto venga inviato automaticamente al database.
Sempre attivo
Un'altra caratteristica di Excel è fondamentale per i citizen developer: i commenti immediati. Se ci si ferma a riflettere, Excel non ha una modalità di modifica, un passaggio di compilazione o uno stato di esecuzione. La cosa incredibile è che probabilmente non ci si è mai accorti di questo aspetto: si carica il foglio di calcolo, si modificano liberamente formule e valori e si ottengono le risposte. Il foglio di calcolo è sempre attivo in Excel e non viene fatta alcuna distinzione tra modifica ed esecuzione. Le modifiche a qualsiasi valore o formula vengono propagate immediatamente in tutto il foglio di calcolo e il creatore può cercare rapidamente la risposta giusta. Eventuali errori rilevati da Excel vengono segnalati immediatamente e non interferiscono con il resto del foglio di calcolo.