Delen via


.NET Aspire Azure Functions-integratie (preview)

Omvat:Hostingintegratie niet Client integratie

Belangrijk

De integratie van .NET AspireAzure Functions is momenteel in preview en kan worden gewijzigd.

Azure Functions is een serverloze oplossing waarmee u minder code kunt schrijven, minder infrastructuur kunt onderhouden en kosten kunt besparen. Met de integratie van .NET AspireAzure Functions kunt u een Azure Functions-.NET-project ontwikkelen, fouten opsporen en organiseren als onderdeel van de app-host.

Er wordt verwacht dat u de vereiste Azure hulpprogramma's hebt geïnstalleerd:

Ondersteunde scenario's

De integratie van .NET AspireAzure Functions heeft verschillende belangrijke ondersteunde scenario's. In deze sectie worden de scenario's beschreven en vindt u details met betrekking tot de implementatie van elke benadering.

Ondersteunde triggers

De volgende tabel bevat de ondersteunde triggers voor Azure Functions in de .NET Aspire-integratie:

Trigger Attribuut Bijzonderheden
Azure Event Hubs trigger EventHubTrigger 📦 Aspire. Gastvrijheid.Azure. EventHubs-
Azure Service Bus trigger ServiceBusTrigger 📦 Aspire. Gastvrijheid.Azure. ServiceBus-
Azure Storageblobs-trigger BlobTrigger 📦 Aspire. Hosting.Azure. Opslag
Azure Storage Queues activatie QueueTrigger 📦 Aspire. Gastvrijheid.Azure. Opslag
HTTP-trigger HttpTrigger Ondersteund zonder extra resourceafhankelijkheden.
Timer-trigger TimerTrigger Ondersteund zonder extra resourceafhankelijkheden, is afhankelijk van impliciete hostopslag.

Belangrijk

Andere Azure Functions-triggers en -bindingen worden momenteel niet ondersteund in de integratie van .NET AspireAzure Functions.

Implementatie

Momenteel wordt implementatie alleen ondersteund voor containers op Azure Container Apps (ACA) met behulp van de sdk-containerpublicatiefunctie in Microsoft.Azure.Functions.Worker.Sdk. Deze implementatiemethodologie biedt momenteel geen ondersteuning voor automatisch schalen op basis van KEDA.

Externe HTTP-eindpunten configureren

Als u HTTP-triggers openbaar toegankelijk wilt maken, roept u de WithExternalHttpEndpoints-API aan op de AzureFunctionsProjectResource. Zie Azure Functions-resource toevoegenvoor meer informatie.

Azure Functieprojectbeperkingen

De integratie van .NET AspireAzure Functions heeft de volgende projectbeperkingen:

Als u problemen ondervindt met het Azure Functions-project, zoals:

Er is geen Functions-runtime beschikbaar die overeenkomt met de versie die is opgegeven in het project

Controleer in Visual Studioof er een update is voor de Azure Functions-hulpprogramma's. Open het dialoogvenster Opties, ga naar projecten en oplossingenen selecteer Azure Functions. Selecteer de knop Controleren op updates om te controleren of u de nieuwste versie van de Azure Functions-hulpprogramma's hebt:

Visual Studio: Opties/Projecten en oplossingen/Azure Functions.

Hostingintegratie

De Azure Functions die als host fungeert voor integratiemodellen, is een Azure Functions-resource als het AzureFunctionsProjectResource -type (subtype van ProjectResource). Als u toegang wilt krijgen tot dit type en API's waarmee u het kunt toevoegen aan uw app-host project, installeer dan het 📦Aspire.Hosting.Azure.Functions NuGet-pakket.

dotnet add package Aspire.Hosting.Azure.Functions --prerelease

Zie dotnet pakket toevoegen of Pakketafhankelijkheden beheren in .NET toepassingenvoor meer informatie.

Azure Functions-resource toevoegen

Roep in uw app-hostproject AddAzureFunctionsProject aan op het builder-exemplaar om een Azure Functions-resource toe te voegen:

var builder = DistributedApplication.CreateBuilder(args);

var functions = builder.AddAzureFunctionsProject<Projects.ExampleFunctions>("functions")
                       .WithExternalHttpEndpoints();

builder.AddProject<Projects.ExampleProject>()
       .WithReference(functions)
       .WaitFor(functions);

// After adding all resources, run the app...

Wanneer .NET Aspire een Azure Functions-projectresource aan de app-host toevoegt, zoals wordt getoond in het vorige voorbeeld, kan naar de functions-resource worden verwezen door andere projectresources. De methode WithReference configureert een verbinding in de ExampleProject met de naam "functions". Als de Azure-resource is geïmplementeerd en er een HTTP-trigger is weergegeven, is het eindpunt extern vanwege de aanroep naar WithExternalHttpEndpoints. Zie Referentieresourcesvoor meer informatie.

Azure Functions-resource toevoegen met hostopslag

Als u het standaardhostopslagaccount wilt wijzigen dat door de Azure Functions-host wordt gebruikt, roept u de WithHostStorage methode aan op de Azure Functions-projectresource:

var builder = DistributedApplication.CreateBuilder(args);

var storage = builder.AddAzureStorage("storage")
                     .RunAsEmulator();

var functions = builder.AddAzureFunctionsProject<Projects.ExampleFunctions>("functions")
                       .WithHostStorage(storage);

builder.AddProject<Projects.ExampleProject>()
       .WithReference(functions)
       .WaitFor(functions);

// After adding all resources, run the app...

De voorgaande code is afhankelijk van de 📦AspireAzureHosting. Opslag NuGet-pakket om een Azure Storage-resource toe te voegen die wordt uitgevoerd als een emulator. De storage-resource wordt vervolgens doorgegeven aan de WithHostStorage-API, waarbij de hostopslag expliciet wordt ingesteld op de geëmuleerde resource.

Notitie

Als u de impliciete hostopslag niet gebruikt, moet u de StorageAccountContributor rol handmatig toewijzen aan uw resource voor geïmplementeerde exemplaren. Deze rol wordt automatisch toegewezen voor de impliciet gegenereerde hostopslag.

Referentiebronnen in Azure Functions

Als u naar andere Azure resources in een Azure Functions-project wilt verwijzen, koppelt u een aanroep naar WithReference op de Azure Functions-projectresource en geeft u de resource op waarnaar moet worden verwezen:

var builder = DistributedApplication.CreateBuilder(args);

var storage = builder.AddAzureStorage("storage").RunAsEmulator();
var blobs = storage.AddBlobs("blobs");

builder.AddAzureFunctionsProject<Projects.ExampleFunctions>("functions")
       .WithHostStorage(storage)
       .WithReference(blobs);

builder.Build().Run();

De voorgaande code voegt een Azure Storage-resource toe aan de app-host en verwijst ernaar in het Azure Functions-project. De blobs resource wordt toegevoegd aan de storage resource en vervolgens verwezen door de functions resource. De verbindingsgegevens die nodig zijn om verbinding te maken met de blobs-resource, worden automatisch opgenomen in het Azure Functions-project en stelt het project in staat een BlobTrigger te definiëren die afhankelijk is van blobs resource.

Zie ook