.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:
- U moet zich richten op .NET 8.0 of hoger.
- U moet een .NET 9 SDK gebruiken.
- Het ondersteunt momenteel alleen .NET werknemers met het geïsoleerde werkrolmodel.
- Hiervoor zijn de volgende NuGet-pakketten vereist:
-
📦 Microsoft.Azure. Functions.Worker-: Gebruik de
FunctionsApplicationBuilder
. -
📦 Microsoft.Azure. Functions.Worker.Sdk: voegt ondersteuning toe voor
dotnet run
enazd publish
. - 📦 Microsoft.Azure. Functions.Http.AspNetCore: voegt HTTP-trigger-ondersteunende API's toe.
-
📦 Microsoft.Azure. Functions.Worker-: Gebruik de
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:
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
- .NET .NET Aspire integraties
- .NET Aspire GitHub repository
- Azure Functiedocumentatie
- voorbeeld van de afbeeldingsgalerie van functies .NET.NET Aspire en