integrazione di funzioni .NET AspireAzure (anteprima)
includono:integrazione dell'hosting non
Client integrazione
Importante
L'integrazione di funzioni .NET AspireAzure è attualmente in anteprima ed è soggetta a modifiche.
Azure Funzioni è una soluzione serverless che consente di scrivere meno codice, mantenere meno infrastruttura e risparmiare sui costi. L'integrazione delle funzioni .NET AspireAzure consente di sviluppare, eseguire il debug e orchestrare un progetto Azure Funzioni .NET come parte dell'host dell'app.
Si prevede che tu abbia installato gli strumenti Azure necessari.
Scenari supportati
L'integrazione delle Funzioni .NET AspireAzure supporta diversi scenari chiave. Questa sezione descrive gli scenari e fornisce informazioni dettagliate relative all'implementazione di ogni approccio.
Attivatori supportati
La tabella seguente elenca i trigger supportati per le funzioni di Azure nell'integrazione .NET Aspire:
Grilletto | Attributo | Dettagli |
---|---|---|
trigger Azure Event Hubs | EventHubTrigger |
📦 Aspire.Hosting.Azure.EventHubs |
Azure Service Bus trigger | ServiceBusTrigger |
📦 Aspire.Hosting.Azure.ServiceBus |
trigger blob di archiviazione Azure | BlobTrigger |
📦 Aspire.Hosting.Azure.Archiviazione |
Azure Storage Queues trigger | QueueTrigger |
📦 Aspire.Hosting.Azure.Storage |
Trigger HTTP | HttpTrigger |
Supportato senza dipendenze di risorse aggiuntive. |
Attivazione timer | TimerTrigger |
Supportato senza dipendenze di risorse aggiuntive, si basa sull'archiviazione host implicita. |
Importante
Altri trigger e associazioni delle funzioni di Azure non sono attualmente supportati nell'integrazione delle funzioni di .NET AspireeAzure.
Distribuzione
Attualmente, la distribuzione è supportata solo per i container in Azure Container Apps (ACA) usando la funzione di pubblicazione dei container dell'SDK in Microsoft.Azure.Functions.Worker.Sdk
. Questa metodologia di distribuzione attualmente non supporta la scalabilità automatica basata su KEDA.
Configurare gli endpoint HTTP esterni
Per rendere accessibili pubblicamente i trigger HTTP, chiamare l'API WithExternalHttpEndpoints su AzureFunctionsProjectResource. Per ulteriori informazioni, consulta la risorsa funzioni Aggiungi Azure.
vincoli di progetto Azure Function
L'integrazione di funzioni .NET AspireAzure presenta i vincoli di progetto seguenti:
- È necessario specificare come destinazione .NET 8.0 o versione successiva.
- È necessario usare un SDK .NET 9.
- Attualmente supporta solo i lavoratori .NET con il modello di lavoro isolato .
- Richiede i pacchetti NuGet seguenti:
-
📦 Microsoft.Azure.Functions.Worker: Usa il
FunctionsApplicationBuilder
. -
📦 Microsoft.Azure. Functions.Worker.Sdk: aggiunge il supporto per
dotnet run
eazd publish
. - 📦 Microsoft.Azure. Functions.Http.AspNetCore: aggiunge API di supporto per trigger HTTP.
-
📦 Microsoft.Azure.Functions.Worker: Usa il
Se si verificano problemi con il progetto Azure Funzioni, ad esempio:
Non è disponibile alcun runtime di Funzioni corrispondente alla versione specificata nel progetto
In Visual Studioprovare a verificare la presenza di un aggiornamento negli strumenti di funzioni di Azure. Aprire la finestra di dialogo Opzioni, passare a Progetti e Soluzionie quindi selezionare FunzioniAzure. Selezionare il pulsante Verifica aggiornamenti per assicurarsi di avere la versione più recente degli strumenti Funzioni di Azure.
Integrazione di hosting
Le funzioni Azure che ospitano l'integrazione modellano una risorsa funzioni Azure come tipo AzureFunctionsProjectResource (sottotipo di ProjectResource). Per accedere a questo tipo e agli API che consentono di aggiungerlo al progetto host, installare il pacchetto NuGet 📦Aspire.Hosting.Azure.Functions.
dotnet add package Aspire.Hosting.Azure.Functions --prerelease
Per altre informazioni, vedere dotnet add package o gestire le dipendenze del pacchetto nelle applicazioni .NET.
Aggiungere Azure risorsa funzioni
Nel progetto host dell'app, chiamare AddAzureFunctionsProject sull'istanza di builder
per aggiungere una risorsa Functions Azure.
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...
Quando .NET Aspire aggiunge una risorsa di progetto alle funzioni Azure nell'host dell'app, come illustrato nell'esempio precedente, altre risorse del progetto possono fare riferimento alla risorsa functions
. Il metodo WithReference configura una connessione nel ExampleProject
denominato "functions"
. Se la risorsa Azure fosse stata distribuita ed avesse esposto un trigger HTTP, l'endpoint sarebbe esterno per via della chiamata a WithExternalHttpEndpoints. Per altre informazioni, vedere Risorse di riferimento.
Aggiungere la risorsa delle funzioni Azure con lo storage dell'host
Se si vuole modificare l'account di archiviazione host predefinito usato dall'host Funzioni Azure, chiamare il metodo WithHostStorage nella risorsa del progetto Funzioni Azure:
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...
Il codice precedente si basa sul pacchetto NuGet 📦Aspire.Hosting.Azure.Storage per aggiungere una risorsa di Storage Azure che viene eseguita come emulatore. La risorsa storage
viene quindi passata all'API WithHostStorage
, impostando in maniera esplicita l'archiviazione host sulla risorsa emulata.
Nota
Se non si usa l'archiviazione host implicita, è necessario assegnare manualmente il ruolo StorageAccountContributor
alla risorsa per le istanze distribuite. Questo ruolo viene assegnato automaticamente per lo spazio di archiviazione host generato implicitamente.
Risorse di riferimento in Azure Functions
Per fare riferimento ad altre risorse Azure in un progetto Azure Functions, concatenare una chiamata a WithReference
sulla risorsa del progetto Azure Functions e fornire la risorsa di riferimento:
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();
Il codice precedente aggiunge una risorsa di archiviazione Azure all'host dell'app e vi fa riferimento nel progetto Functions di Azure. La risorsa blobs
viene aggiunta alla risorsa storage
e quindi fa riferimento alla risorsa functions
. Le informazioni di connessione necessarie per connettersi alla risorsa blobs
vengono inserite automaticamente nel progetto Functions di Azure e consentono al progetto di definire un BlobTrigger
che si basa su una risorsa blobs
.
Vedere anche
- .NET .NET Aspire integrazioni
- .NET Aspire GitHub repository
- Azure documentazione di funzioni
- Raccolta di immagini di esempio delle funzioni di .NET.NET Aspire e di