Scrivere codici per Funzioni di Azure e testarle in locale
Benché sia possibile sviluppare e testare Funzioni di Azure nel portale di Azure, molti sviluppatori preferiscono un'esperienza di sviluppo locale. Funzioni di Azure semplificano l'uso dell'editor di codice e degli strumenti di sviluppo locale preferiti per creare e testare le funzioni nel computer locale. Le funzioni locali possono connettersi ai servizi di Azure attivi ed è possibile eseguirne il debug nel computer locale usando il runtime completo di Funzioni di Azure.
Questo articolo fornisce collegamenti a specifici ambienti di sviluppo per il linguaggio preferito. Fornisce anche alcune indicazioni condivise per lo sviluppo locale, ad esempio l'uso del file local.settings.json.
Ambienti di sviluppo locale
Il modo in cui si sviluppano le funzioni nel computer locale dipende dal linguaggio e dalle preferenze relative agli strumenti. Gli ambienti nella tabella seguente supportano lo sviluppo locale:
Ambiente | Linguaggi | Descrizione |
---|---|---|
Visual Studio Code | C# (libreria di classi) Processo isolato C# (.NET 5.0) JavaScript PowerShell Python |
L'estensione di Funzioni di Azure per Visual Studio Code aggiunge il supporto di Funzioni di Azure a Visual Studio Code. Richiede gli strumenti di base. Supporta lo sviluppo in Linux, macOS e Windows, quando si usa la versione 2.x di Core Tools. Per altre informazioni, vedere Creare la prima funzione con Visual Studio Code. |
Prompt dei comandi o terminal | C# (libreria di classi) Processo isolato C# (.NET 5.0) JavaScript PowerShell Python |
Funzioni di Azure Core Tools fornisce il runtime di base e i modelli per la creazione di funzioni, che consentono lo sviluppo locale. La versione 2.x supporta lo sviluppo in Linux, macOS e Windows. Tutti gli ambienti si basano su Strumenti di base per il runtime Funzioni di Azure locale. |
Visual Studio 2019 | C# (libreria di classi) Processo isolato C# (.NET 5.0) |
Gli strumenti di Funzioni di Azure sono inclusi nel carico di lavoro Sviluppo di Azure di Visual Studio 2019 e versioni successive. Consente di compilare le funzioni in una libreria di classi e di pubblicare il file con estensione dll in Azure. Include gli strumenti di base per il test locale. Per altre informazioni, vedere Sviluppare Funzioni di Azure con Visual Studio. |
Maven (varie) | Java | Maven archetype supporta Core Tools per abilitare lo sviluppo di funzioni Java. La versione 2.x supporta lo sviluppo in Linux, macOS e Windows. Per altre informazioni, vedere Creare la prima funzione con Java e Maven. Supporta inoltre lo sviluppo con Eclipse e IntelliJ IDEA |
Importante
Non combinare lo sviluppo locale con lo sviluppo del portale nella stessa app per le funzioni. Quando si creano e si pubblicano le funzioni da un progetto locale, non tentare di gestire o modificare il codice di progetto nel portale.
Ognuno di questi ambienti di sviluppo locale consente di creare progetti di app delle funzioni e usare i modelli di Funzioni di Azure predefiniti per creare nuove funzioni. Ognuno di essi usa gli strumenti di base per consentire di testare ed eseguire il debug delle funzioni con il runtime reale di Funzioni di Azure nel proprio computer esattamente come qualsiasi altra app. È anche possibile pubblicare il progetto dell'app per le funzioni da uno di questi ambienti in Azure.
File di impostazioni locali
Il file local.settings.json archivia le impostazioni e le impostazioni dell'app usate dagli strumenti di sviluppo locali. Impostazioni nel file local.settings.json vengono usati solo quando si esegue il progetto in locale.
Importante
Poiché local.settings.json può contenere segreti, ad esempio le stringhe di connessione, non è mai consigliabile archiviarlo in un repository remoto. Gli strumenti che supportano Funzioni consentono di sincronizzare le impostazioni nel file local.settings.json con le impostazioni dell'app nell'app per le funzioni in cui viene distribuito il progetto.
La struttura del file di impostazioni locali è la seguente:
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "<language worker>",
"AzureWebJobsStorage": "<connection-string>",
"MyBindingConnection": "<binding-connection-string>",
"AzureWebJobs.HttpExample.Disabled": "true"
},
"Host": {
"LocalHttpPort": 7071,
"CORS": "*",
"CORSCredentials": false
},
"ConnectionStrings": {
"SQLConnectionString": "<sqlclient-connection-string>"
}
}
Queste impostazioni sono supportate quando si eseguono progetti in locale:
Impostazione | Descrizione |
---|---|
IsEncrypted |
Quando questa impostazione è impostata su true , tutti i valori vengono crittografati con una chiave del computer locale. Usato con i comandi func settings . Il valore predefinito è false . Potrebbe essere necessario crittografare il file local.settings.json nel computer locale quando contiene segreti, ad esempio le stringhe di connessione al servizio. L'host decrittografa automaticamente le impostazioni durante l'esecuzione. Usare il comando func settings decrypt prima di provare a leggere le impostazioni crittografate in locale. |
Values |
Raccolta di impostazioni dell'applicazione usate quando un progetto è in esecuzione in locale. Queste coppie chiave-valore (stringa-stringa) corrispondono alle impostazioni dell'applicazione nell'app per le funzioni in Azure, ad esempio AzureWebJobsStorage . Molti trigger e associazioni includono una proprietà che fa riferimento a un'impostazione di app per la stringa di connessione, ad esempio Connection per il trigger di archiviazione BLOB. Per queste proprietà è necessaria un'impostazione dell'applicazione definita nella matrice Values . Vedere la tabella successiva per un elenco di impostazioni usate di frequente. I valori devono essere stringhe e non oggetti o matrici JSON. I nomi delle impostazioni non possono includere una sottolineatura doppia ( __ ) e non devono includere due punti (: ). I caratteri di sottolineatura doppia sono riservati dal runtime e i due punti sono riservati per supportare l'inserimento delle dipendenze. |
Host |
Le impostazioni in questa sezione consentono di personalizzare il processo host di Funzioni durante l'esecuzione dei progetti in locale. Queste impostazioni sono distinte da quelle del file host.json, che vengono applicate anche quando si eseguono progetti in Azure. |
LocalHttpPort |
Consente di impostare la porta predefinita usata durante l'esecuzione nell'host locale di Funzioni, ovvero func host start e func run . L'opzione --port della riga di comando ha la precedenza su questa impostazione. Ad esempio, quando si esegue in Visual Studio IDE, è possibile modificare il numero di porta passando alla finestra "Project Proprietà -> Debug" e specificando in modo esplicito il numero di porta in un host start --port <your-port-number> comando che può essere fornito nel campo "Argomenti applicazione". |
CORS |
Definisce le origini consentite per la condivisione di risorse tra le origini (CORS). Le origini sono elencate in un elenco delimitato dalla virgola senza spazi. Il valore jolly (*) è supportato, che consente le richieste da qualsiasi origine. |
CORSCredentials |
Quando è impostata su true , consente le richieste withCredentials . |
ConnectionStrings |
Raccolta. Non usare questa raccolta per le stringhe di connessione usate per le associazioni di funzione. Questa raccolta viene usata solo dai framework che in genere ottengono le stringhe di connessione dalla sezione ConnectionStrings di un file di configurazione, ad esempio Entity Framework. Le stringhe di connessione in questo oggetto vengono aggiunte all'ambiente con il tipo di provider di System.Data.SqlClient. Gli elementi in questa raccolta non vengono pubblicati in Azure con altre impostazioni di app. È necessario aggiungere questi valori in modo esplicito alla raccolta Connection strings delle impostazioni dell'app per le funzioni. Se si crea una connessione SqlConnection nel codice di funzione, è consigliabile archiviare il valore della stringa di connessione insieme alle altre connessioni in Impostazione applicazione nel portale. |
Le impostazioni dell'applicazione seguenti possono essere incluse nella matrice Values
durante l'esecuzione in locale:
Impostazione | Valori | Descrizione |
---|---|---|
AzureWebJobsStorage |
Stringa di connessione dell'account di archiviazione oppureUseDevelopmentStorage=true |
Contiene la stringa di connessione per un account di archiviazione di Azure. Obbligatoria quando si usano trigger diversi da HTTP. Vedere le informazioni di riferimento per AzureWebJobsStorage .Quando è installato il Emulator Azurite in locale e si imposta su AzureWebJobsStorage UseDevelopmentStorage=true , Core Tools usa l'emulatore. L'emulatore è utile durante lo sviluppo, ma è consigliabile eseguire test con una connessione di archiviazione effettiva prima della distribuzione. |
AzureWebJobs.<FUNCTION_NAME>.Disabled |
true |false |
Per disabilitare una funzione durante l'esecuzione in locale, aggiungere "AzureWebJobs.<FUNCTION_NAME>.Disabled": "true" alla raccolta, dove <FUNCTION_NAME> è il nome della funzione. Per altre informazioni, vedere Come disabilitare le funzioni in Funzioni di Azure |
FUNCTIONS_WORKER_RUNTIME |
dotnet node java powershell python |
Indica il linguaggio di destinazione del runtime di Funzioni. Obbligatoria per la versione 2.x e successive del runtime di Funzioni. Questa impostazione viene generata per il progetto da Core Tools. Vedere le informazioni di riferimento per FUNCTIONS_WORKER_RUNTIME . |
FUNCTIONS_WORKER_RUNTIME_VERSION |
~7 |
Indica che deve essere usato PowerShell 7 durante l'esecuzione in locale. Se non è impostata, viene usato PowerShell Core 6. Questa impostazione viene usata solo durante l'esecuzione in locale. Per l'esecuzione in Azure, la versione del runtime di PowerShell è determinata dall'impostazione di configurazione del sito powerShellVersion , che può essere specificata nel portale. |
Passaggi successivi
- Per altre informazioni sullo sviluppo locale di funzioni C# compilate con Visual Studio 2019, vedere Sviluppare Funzioni di Azure usando Visual Studio.
- Per altre informazioni sullo sviluppo locale di funzioni usando VS Code in un computer Mac, Linux o Windows, vedere l'articolo introduttivo Visual Studio Code per il linguaggio preferito:
- Per altre informazioni sullo sviluppo di funzioni al prompt dei comandi o terminal, vedere la pagina relativa agli strumenti di base per Funzioni di Azure.