Esercitazione: Scrivere una funzione C# definita dall'utente per un processo di Analisi di flusso di Azure (anteprima)
Le funzioni C# definite dall'utente create in Visual Studio consentono di estendere il linguaggio di query di Analisi di flusso di Azure con le proprie funzioni. È possibile riutilizzare il codice esistente (incluse le DLL) e usare logica matematica o complessa con C#. Vi sono tre modi per implementare le funzioni definite dall'utente:
- File CodeBehind in un progetto di Analisi di flusso
- UDF da un progetto C# locale
- Funzioni definite dall'utente da un pacchetto esistente da un account di archiviazione.
Questa esercitazione usa il metodo CodeBehind per implementare una funzione C# di base. La funzionalità per la creazione di funzioni definite dall'utente per i processi di Analisi di flusso di Azure è attualmente in anteprima e non deve essere usata nei carichi di lavoro di produzione.
In questa esercitazione verranno illustrate le procedure per:
- Creare una funzione C# definita dall'utente con CodeBehind.
- Testare il progetto di Analisi di flusso in locale.
- Pubblicare il processo in Azure.
Prerequisiti
Prima di iniziare, verificare che i prerequisiti seguenti siano disponibili:
- Se non si ha una sottoscrizione di Azure, creare un account gratuito.
- Installare gli strumenti di Analisi di flusso per Visual Studio e i carichi di lavoro Sviluppo di Azure o Elaborazione ed archiviazione dati.
- Se si sta creando un processo di IoT Edge, vedere la guida di sviluppo edge di Analisi di flusso esistente.
Creare un contenitore nell'account di archiviazione di Azure
Il contenitore creato viene usato per archiviare il pacchetto C# compilato. Se si crea un processo Edge, questo account di archiviazione viene usato anche per distribuire il pacchetto nel dispositivo IoT Edge. Usare un contenitore dedicato per ogni processo di Analisi di flusso. Il riutilizzo dello stesso contenitore per più processi Edge di Analisi di flusso non è supportato. Se è già disponibile un account di archiviazione con contenitori esistenti, è possibile usarli. In caso contrario, è necessario creare un nuovo contenitore.
Creare un progetto di Analisi di flusso in Visual Studio
Avviare Visual Studio.
Selezionare File > Nuovo > progetto.
Nell'elenco dei modelli a sinistra selezionare Analisi di flusso e quindi Azure Stream Analytics Edge Application (Applicazione Edge di Analisi di flusso di Azure) o Azure Stream Analytics Application (Applicazione di Analisi di flusso di Azure).
Inserire i valori appropriati per il progetto in Nome, Percorso e Nome soluzione e scegliere OK.
Configurare il percorso del pacchetto dell'assembly
Aprire Visual Studio e passare a Esplora soluzioni.
Fare doppio clic sul file di configurazione del processo,
JobConfig.json
.Espandere la sezione Configurazione di codice definito dall'utente e compilare la configurazione con i seguenti valori suggeriti:
Impostazione Valore consigliato Global Storage Settings Resource (Risorsa impostazioni di archiviazione globali) Scegliere l'origine dati dall'account corrente Global Storage Settings Subscription (Sottoscrizione impostazioni di archiviazione globali) < sottoscrizione > Global Storage Settings Storage Account (Account di archiviazione impostazioni di archiviazione globali) < l'account di archiviazione > Custom Code Storage Settings Resource (Risorsa impostazioni di archiviazione codice personalizzato) Scegliere l'origine dati dall'account corrente Custom Code Storage Settings Storage Account (Account di archiviazione impostazioni di archiviazione codice personalizzato) < l'account di archiviazione > Custom Code Storage Settings Container (Contenitore impostazioni di archiviazione codice personalizzato) < contenitore di archiviazione >
Scrivere una funzione C# definita dall'utente con CodeBehind
Un file CodeBehind è un file C# associato a un singolo script di query di Analisi di flusso di Azure. Gli strumenti di Visual Studio comprimono automaticamente il file CodeBehind e lo caricano nell'account di archiviazione di Azure al momento dell'invio. Tutte le classi devono essere definite come public e tutti gli oggetti devono essere definiti come static public.
In Esplora soluzioni espandere Script.asql per trovare il file CodeBehind Script.asaql.cs.
Sostituire il codice con l'esempio seguente:
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; namespace ASAEdgeUDFDemo { public class Class1 { // Public static function public static Int64 SquareFunction(Int64 a) { return a * a; } } }
Implementare la funzione definita dall'utente
In Esplora soluzioni aprire il file Script.asaql.
Sostituire la query esistente con la query seguente:
SELECT machine.temperature, udf.ASAEdgeUDFDemo_Class1_SquareFunction(try_cast(machine.temperature as bigint)) INTO Output FROM Input
Test locale
Scaricare il file di dati di esempio di simulatore di temperatura.
In Esplora soluzioni espandere Input, fare clic con il pulsante destro del mouse su Input.json e quindi scegliere Aggiungi input locale.
Specificare il percorso del file di input locale per i dati di esempio scaricati e fare clic su Salva.
Fare clic su Esegui localmente nell'editor di script. Dopo che l'esecuzione locale ha salvato correttamente i risultati di output, premere un tasto qualsiasi per visualizzare i risultati in formato tabella.
È anche possibile selezionare Apri cartella risultati per visualizzare i file non elaborati in formato JSON e CSV.
Eseguire il debug di una funzione definita dall'utente
È possibile eseguire il debug della funzione C# definita dall'utente in locale esattamente come si esegue il debug di codice C# standard.
Aggiungere punti di interruzione nella funzione C#.
Premere F5 per avviare il debug. Il programma si arresta nei punti di interruzione come previsto.
Pubblicare il processo in Azure
Dopo aver testato la query in locale, selezionare Invia ad Azure nell'editor di script per pubblicare il processo in Azure.
Distribuire nei dispositivi IoT Edge
Se si sceglie di compilare un processo edge di Analisi di flusso, è ora possibile distribuirlo come modulo IoT Edge. Seguire la guida introduttiva di IoT Edge per creare un hub IoT, registrare un dispositivo IoT Edge, quindi installare e avviare il runtime di IoT Edge nel dispositivo. Seguire poi l'esercitazione per distribuire il processo per distribuire il processo di Analisi di flusso come modulo IoT Edge.
Passaggi successivi
In questa esercitazione è stata creata una semplice funzione C# definita dall'utente con CodeBehind, quindi il processo è stato pubblicato in Azure e distribuito al dispositivo Azure o IoT Edge.
Per altre informazioni sulle diverse modalità per usare le funzioni C# definite dall'utente per i processi di Analisi di flusso, continuare con questo articolo: