Precompiled Azure Functions

Teil 2: Das Template

Um schnell mit einer Azure Funktions-App loslegen zu können, habe ich eine Visual Studio C# Solution als Vorlage erstellt. Am Beispiel dieser Solution möchte ich euch zeigen, wie unkompliziert der Einstieg in Precompiled Azure Functions sein kann.

Den Quellcode findet ihr in der GitHub Repository „AzurePrecompiledFunctionTemplate“.

Aufbau der Solution

Die Solution beinhaltet zwei Projekte. Eine C# Assembly und ein dazu passendes Unit Test Projekt basierend auf MS Test V2. Visual Studio 2017 sollte spätestens beim Bauen der Solution automatisch die referenzierten NuGet Pakete laden und einen fehlerfreien Build erstellen.

Bezüglich der Ausgestaltung eures Projekts mit Ordnern und Dateien habt ihr fast komplette Freiheit. Lediglich der Ordner wwwroot unterliegt folgenden Regeln:

  • wwwroot\Shared  ist der Ausgabepfad für den Buildprozess.
  • Jede Funktion muss einen Unterordner in  wwwroot erhalten. Der Ordnername ist dabei der Funktionsname, wie er im Azure Portal angezeigt wird.
  • Jeder Funktions-Unterordner enthält genau zwei Dateien: function.json und  run.csx.
  • function.json ist die Konfigurationsdatei der Funktion und kann im Quellcode editiert werden (z.B. um Bindungen oder HTTP Verbs zu definieren).
  • run.csx ist die Datei in der normalerweise der Funktionscode als C# Skript steht. Wir lassen diese Datei leer, da wir mit unserer kompilierten C# Assembly arbeiten wollen.
  • Direkt in wwwroot befindet sich die globale Konfigurationsdatei host.json. Auch diese kann im Quellcode editiert werden.

Damit die Azure Funktions-App mit dem kompilierten Code arbeiten kann, muss in der function.json zu jeder Funktion ein Verweis auf den Einstiegspunkt in eurer DLL stehen.

Beispiel:

Sobald diese beiden Zeilen in  function.json stehen, ignoriert die Azure Funktion die Datei run.csx und führt den kompilierten Code aus.

Der Beispielcode im Visual Studio Projekt demonstriert die Implementierung eines einfachen HttpTriggers. Die Namensgebung der Klassen und Methoden ist euch überlassen. Ihr müsst lediglich sicherstellen, dass die Methodensignatur zu einem Azure Functions Triggertyp passt. Die unterstützten Triggertypen findet ihr in der Dokumentation zu Azure Functions.

Bringen wir die Vorlage zum Laufen

  1. Loggt euch in euer Azure Portal ein und erstellt eine neue Funktions-App
    Erstellen einer Funktions-App
    Beim Hostingplan stehen der Verbrauchstarif oder das Hosting im App-Service Plan zur Auswahl. Der Verbrauchstarif ist besonders attraktiv, da dieser vollautomatisch skaliert und man sich keinerlei Gedanken über die zugrundeliegende Plattform machen muss. Detaillierte Informationen zu den Optionen dieser Auswahl findet ihr direkt bei Microsoft.
  2. Sobald die Funktions-App bereitgestellt worden ist, solltet ihr die FTP Deployment-Einstellungen prüfen.
    Screenshot 1
  3. Sollte noch kein FTP Benutzer konfiguriert sein, könnt ihr das hier nachholen
  4. Öffnet die Solution mit Visual Studio 2017 und kompiliert den Code (die generierte DLL landet im wwwroot\Shared Ordner).
  5. Mit dem FTP Client eurer Wahl kopiert ihr den Inhalt von wwwroot nach site/wwwroot auf den Azure Servern.
  6. Öffnet erneut die Funktions-App im Azure Portal und testet die Funktion aus.

Ihr habt nun eine Funktions-App implementiert, die komplett auf Precompiled Azure Functions basiert – Glückwunsch!

Wie geht es weiter?

Die Vorlage Solution ist produktiv und Ihr könnt mit der Implementierung eurer Business-Logik anfangen. Zu guter Letzt fehlt uns noch ein kontinuierlicher Integrationsprozess für den produktiven Einsatz unseres Codes. Mehr dazu im dritten Teil dieses Blogbeitrags.