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