Azure Functions App in Visual Studio erstellen
Man kann Azure Functions und Cloud funktionen auch in Visual Studio oder im Azure Portal erstellen.
In Visual Studio ist die kostenlose Visual Studio Community Edition 2019 zur Verfügung.
Erstellen
Zum Erstellen einer neuen Azure Function App geht man auf Menü->Datei->Neu->Projekt..
Im Dialog: Neues Projekt erstellen
Wählt ma : Azure Functions
Eine Vorlage zum Erstellen einer Azure Function Projects (C#, Azure Cloud)
Hierzu muss bei der Installation / Setup von Visual Studio Azure mit ausgewählt wein
Neues Projekt konfigurieren
Unter Projektname einen eindeutigen lokalen Projektname eingeben
Unter Standort: wählt man ein Datenverzeichnis, unter welchem man Visual Studio Projekte auf dem Windows Computer speichert und verwaltet.
Mit dem Button: Erstellen wird das Azure Functions Projekt als VS Projektmappe erstellt.
Neue Azure Functions-Anwendung erstellen
Dann wählt man eine einzelne Funktion aus, welche eingebettet werden soll
In der Regel ist das der HTTP trigger, welcher auf eine URL Anfrage Request reagiert.
Azure Function Projekt
In der Azure Projektmappe befindet sich dann die Function1.cs Datei, welche den Aufruf Text der Funktion in Azure enthält.
Anders gesagt: wenn man die URL mit diesem Namen aus einem Browser oder einer Anwendung oder IoT aufruft, dann wird der Azure function Code ausgeführt und gibt ein Ergebnis im Web-format zurück
Initiale Azure Function1.cs Datei
Diese enthält den Task Aufruf per URL „Function1“ und erstellt einen IActionResult-Task.
Das heißt, die Methode nimmt eine Web-Anfrage auf, liest Parameter aus der Anfrage aus und reagiert dann wie ein Webserver mit Berechnungen und einer http-Antwort.
using System; using System.IO; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Extensions.Http; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; using Newtonsoft.Json;
namespace FunctionApp01 { public static class Function1 { [FunctionName("Function1")] public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request.");
string name = req.Query["name"];
string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); dynamic data = JsonConvert.DeserializeObject(requestBody); name = name ?? data?.name;
return name != null ? (ActionResult)new OkObjectResult($"Hello, {name}") : new BadRequestObjectResult("Please pass a name on the query string or in the request body"); } } }
|
Local.settings.json
In der Local.settings Daei wird festgelegt, dass die Azure Function in dotnet also C# ausgeführt wird.
Zudem wird angegeben, dass der Storage lokal entwickelt wird. („AzureWebJobsStorage": "UseDevelopmentStorage=true")
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet" } } |
In der Projekt-Datei
Wenn man die Azure Function Projekt Datei direkt doppelklickt und öffnet, dann wird eine xml Struktur geöffnet.
Diese Projekt-Datei beschreibt, dass das TargetFramework netcoreapp2.x verwendet wird.
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netcoreapp2.1</TargetFramework> <AzureFunctionsVersion>v2</AzureFunctionsVersion> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.24" /> </ItemGroup> <ItemGroup> <None Update="host.json"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> <None Update="local.settings.json"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToPublishDirectory>Never</CopyToPublishDirectory> </None> </ItemGroup> </Project> |