Tutorial: Schreiben einer benutzerdefinierten C#-Funktion für einen Azure Stream Analytics-Auftrag (Vorschauversion)
Wichtig
Benutzerdefinierte .NET Standard-Funktionen für Azure Stream Analytics werden am 30. September 2024 eingestellt. Nach diesem Datum ist es nicht mehr möglich, das Feature zu verwenden. Wechseln Sie zu benutzerdefinierten JavaScript-Funktionen für Azure Stream Analytics.
Mit benutzerdefinierten C#-Funktionen (UDFs), die in Visual Studio erstellt wurden, können Sie die Azure Stream Analytics-Abfragesprache um eigene Funktionen erweitern. Sie können vorhandenen Code wiederverwenden (z.B. DLLs) und mit C# mathematische bzw. komplexe Logik verwenden. Zum Implementieren von UDFs stehen drei Methoden zur Auswahl:
- CodeBehind-Dateien in einem Stream Analytics-Projekt
- UDFs aus einem lokalen C#-Projekt
- UDFs von einem vorhandenen Paket aus einem Storage-Konto.
In diesem Tutorial wird die CodeBehind-Methode genutzt, um eine grundlegende C#-Funktion zu implementieren. Das UDF-Feature für Stream Analytics-Aufträge befindet sich derzeit in der Vorschauphase und sollte nicht für Produktionsworkloads verwendet werden.
In diesem Tutorial lernen Sie Folgendes:
- Erstellen einer benutzerdefinierten C#-Funktion mit CodeBehind
- Lokales Testen Ihres Stream Analytics-Auftrags
- Veröffentlichen Ihres Auftrags in Azure
Voraussetzungen
Stellen Sie zunächst sicher, dass die folgenden Voraussetzungen erfüllt sind:
- Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen.
- Installieren Sie die Stream Analytics-Tools für Visual Studio und die Workload Azure-Entwicklung oder Datenspeicherung und -verarbeitung.
- Sehen Sie sich den vorhandenen Entwicklungsleitfaden zu Stream Analytics Edge an, wenn Sie einen IoT Edge-Auftrag erstellen.
Erstellen eines Containers in Ihrem Azure Storage-Konto
Der von Ihnen erstellte Container wird zum Speichern des kompilierten C#-Pakets verwendet. Wenn Sie einen Edge-Auftrag erstellen, wird dieses Speicherkonto auch zum Bereitstellen des Pakets auf Ihrem IoT Edge-Gerät verwendet. Verwenden Sie einen dedizierten Container für jeden Stream Analytics-Auftrag. Die Wiederverwendung desselben Containers für mehrere Stream Analytics-Edge-Aufträge wird nicht unterstützt. Wenn Sie bereits über ein Speicherkonto mit vorhandenen Containern verfügen, können Sie diese verwenden. Wenn nicht, müssen Sie einen neuen Container erstellen.
Erstellen eines Stream Analytics-Projekts in Visual Studio
Starten Sie Visual Studio.
Wählen Sie Datei > Neu > Projekt aus.
Wählen Sie in der Vorlagenliste links die Option Stream Analytics und dann Azure Stream Analytics Edge Application (Azure Stream Analytics-Edge-Anwendung) oder Azure Stream Analytics Application (Azure Stream Analytics-Anwendung) aus.
Geben Sie Name, Speicherort und Projektmappenname für Ihr Projekt ein, und klicken Sie auf OK.
Konfigurieren des Assembly-Paketpfads
Öffnen Sie Visual Studio, und navigieren Sie zum Projektmappen-Explorer.
Doppelklicken Sie auf die Datei
JobConfig.json
für die Auftragskonfiguration.Erweitern Sie den Abschnitt mit der benutzerdefinierten Codekonfiguration, und geben Sie die folgenden vorgeschlagenen Werte für die Konfiguration an:
Einstellung Empfohlener Wert Global Storage Settings Resource (Ressource für globale Speichereinstellungen) Datenquelle aus aktuellem Konto wählen Global Storage Settings Subscription (Abonnement für globale Speichereinstellungen) < Ihr Abonnement > Global Storage Settings Storage Account (Speicherkonto für globale Speichereinstellungen) < Ihr Speicherkonto > Custom Code Storage Settings Resource (Ressource für Speichereinstellungen für benutzerdefinierten Code) Datenquelle aus aktuellem Konto wählen Custom Code Storage Settings Storage Account (Speicherkonto für Speichereinstellungen für benutzerdefinierten Code) < Ihr Speicherkonto > Custom Code Storage Settings Container (Container für Speichereinstellungen für benutzerdefinierten Code) < Ihr Speichercontainer >
Schreiben einer benutzerdefinierten C#-Datei mit CodeBehind
Eine CodeBehind-Datei ist eine C#-Datei, die einem einzelnen ASA-Abfrageskript zugeordnet ist. Visual Studio-Tools führen für die CodeBehind-Datei automatisch das Zippen durch und laden sie nach der Übermittlung in Ihr Azure-Speicherkonto hoch. Alle Klassen müssen als öffentlich und alle Objekte als statisch öffentlich definiert werden.
Erweitern Sie im Projektmappen-Explorer den Eintrag Script.asql, um auf die CodeBehind-Datei Script.asaql.cs zuzugreifen.
Ersetzen Sie den Code durch das folgende Beispiel:
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; } } }
Implementieren der benutzerdefinierten Funktion
Öffnen Sie im Projektmappen-Explorer die Datei Script.asaql.
Ersetzen Sie den vorhandenen Code durch die folgende Abfrage:
SELECT machine.temperature, udf.ASAEdgeUDFDemo_Class1_SquareFunction(try_cast(machine.temperature as bigint)) INTO Output FROM Input
Lokales Testen
Laden Sie die Datei mit den Beispieldaten für den Temperatursimulator herunter.
Erweitern Sie im Projektmappen-Explorer den Eintrag Eingaben, klicken Sie mit der rechten Maustaste auf Input.json, und wählen Sie Lokale Eingabe hinzufügen.
Geben Sie den lokalen Pfad der Eingabedatei für die Beispieldaten an, die Sie heruntergeladen haben, und wählen Sie Speichern.
Klicken Sie im Skript-Editor auf Lokal ausführen. Nachdem die lokale Ausführung die Ausgabeergebnisse erfolgreich gespeichert hat, können Sie eine beliebige Taste drücken, um die Ergebnisse im Tabellenformat anzuzeigen.
Sie können auch Ergebnisordner öffnen wählen, um die unformatierten Dateien im JSON- und CSV-Format anzuzeigen.
Debuggen einer benutzerdefinierten Funktion
Sie können Ihre benutzerdefinierte C#-Funktion lokal genauso wie C#-Standardcode debuggen.
Fügen Sie Ihrer C#-Funktion Breakpoints hinzu.
Drücken Sie die Taste F5 , um mit dem Debuggen zu beginnen. Das Programm hält wie erwartet an den von Ihnen festgelegten Breakpoints an.
Veröffentlichen Ihres Auftrags in Azure
Nachdem Sie Ihre Abfrage lokal getestet haben, können Sie im Skript-Editor die Option An Azure übermitteln wählen, um den Auftrag in Azure zu veröffentlichen.
Bereitstellen auf IoT Edge-Geräten
Wenn Sie sich für die Erstellung eines Stream Analytics-Edge-Auftrags entschieden haben, kann er nun als IoT Edge-Modul bereitgestellt werden. Befolgen Sie die Schnellstartanleitung für IoT Edge, um einen IoT-Hub zu erstellen, ein IoT Edge-Gerät zu registrieren und die IoT Edge-Runtime auf Ihrem Gerät zu installieren und zu starten. Befolgen Sie anschließend die Anleitung im Tutorial zum Bereitstellen des Auftrags, um Ihren Stream Analytics-Auftrag als IoT Edge-Modul bereitzustellen.
Nächste Schritte
In diesem Tutorial haben Sie eine einfache benutzerdefinierte C#-Funktion mit CodeBehind erstellt, Ihren Auftrag in Azure veröffentlicht und den Auftrag in Azure oder auf einem IoT Edge-Gerät bereitgestellt.
Weitere Informationen zu den verschiedenen Möglichkeiten für die Verwendung von benutzerdefinierten C#-Funktionen für Stream Analytics-Aufträge finden Sie in diesem Artikel: