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:

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

  1. Starten Sie Visual Studio.

  2. Wählen Sie Datei > Neu > Projekt aus.

  3. 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.

  4. Geben Sie Name, Speicherort und Projektmappenname für Ihr Projekt ein, und klicken Sie auf OK.

    Create an Azure Stream Analytics Edge project in Visual Studio

Konfigurieren des Assembly-Paketpfads

  1. Öffnen Sie Visual Studio, und navigieren Sie zum Projektmappen-Explorer.

  2. Doppelklicken Sie auf die Datei JobConfig.json für die Auftragskonfiguration.

  3. 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.

  1. Erweitern Sie im Projektmappen-Explorer den Eintrag Script.asql, um auf die CodeBehind-Datei Script.asaql.cs zuzugreifen.

  2. 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

  1. Öffnen Sie im Projektmappen-Explorer die Datei Script.asaql.

  2. 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

  1. Laden Sie die Datei mit den Beispieldaten für den Temperatursimulator herunter.

  2. 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.

    Add local input to Stream Analytics job in Visual Studio

  3. Geben Sie den lokalen Pfad der Eingabedatei für die Beispieldaten an, die Sie heruntergeladen haben, und wählen Sie Speichern.

    Local input configuration for Stream Analytics job in Visual Studio

  4. 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.

    Run Azure Stream Analytics job locally with Visual Studio

  5. Sie können auch Ergebnisordner öffnen wählen, um die unformatierten Dateien im JSON- und CSV-Format anzuzeigen.

    View results of local Azure Stream Analytics job with Visual Studio

Debuggen einer benutzerdefinierten Funktion

Sie können Ihre benutzerdefinierte C#-Funktion lokal genauso wie C#-Standardcode debuggen.

  1. Fügen Sie Ihrer C#-Funktion Breakpoints hinzu.

    Add breakpoints to Stream Analytics user-defined function in Visual Studio

  2. 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.

    View Stream Analytics user-defined function debugging results

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.

Submit your Stream Analytics Edge job to Azure from Visual Studio

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: