Manuale dello sviluppatore di Funzioni di AzureAzure Functions developers guide

In Funzioni di Azure funzioni specifiche condividono alcuni concetti tecnici e componenti di base, indipendentemente dal linguaggio o dall'associazione che vengono usati.In Azure Functions, specific functions share a few core technical concepts and components, regardless of the language or binding you use. Prima di passare all'apprendimento di dettagli specifici per un linguaggio o un'associazione, assicurarsi di leggere questa panoramica generale.Before you jump into learning details specific to a given language or binding, be sure to read through this overview that applies to all of them.

Questo articolo presuppone che sia già stato letto Panoramica di Funzioni di Azure.This article assumes that you've already read the Azure Functions overview.

Codice di funzioneFunction code

La funzione è il concetto primario in Funzioni di Azure.A function is the primary concept in Azure Functions. Una funzione contiene due elementi importanti: il codice, che può essere scritto in svariati linguaggi, e un file config, il file function.json.A function contains two important pieces - your code, which can be written in a variety of languages, and some config, the function.json file. Per i linguaggi compilati, questo file config viene generato automaticamente dalle annotazioni nel codice.For compiled languages, this config file is generated automatically from annotations in your code. Per i linguaggi di scripting, è necessario fornire personalmente il file config.For scripting languages, you must provide the config file yourself.

Il file function.json definisce il trigger, le associazioni e altre impostazioni di configurazione della funzione.The function.json file defines the function's trigger, bindings, and other configuration settings. Ogni funzione ha un solo trigger.Every function has one and only one trigger. Il runtime usa questo file config per determinare gli eventi da monitorare e come passare i dati e restituirli da un'esecuzione della funzione.The runtime uses this config file to determine the events to monitor and how to pass data into and return data from a function execution. Di seguito è riportato un esempio di file function.json.The following is an example function.json file.

{
    "disabled":false,
    "bindings":[
        // ... bindings here
        {
            "type": "bindingType",
            "direction": "in",
            "name": "myParamName",
            // ... more depending on binding
        }
    ]
}

Per altre informazioni, vedere Concetti relativi a trigger e associazioni in Funzioni di Azure.For more information, see Azure Functions triggers and bindings concepts.

La proprietà bindings è quella che consente di configurare trigger e associazioni.The bindings property is where you configure both triggers and bindings. Ogni associazione condivide alcune impostazioni comuni e altre specifiche per tipo.Each binding shares a few common settings and some settings which are specific to a particular type of binding. Ogni associazione richiede le impostazioni seguenti:Every binding requires the following settings:

ProprietàProperty Valori/tipiValues/Types CommentiComments
type stringstring Tipo di associazione.Binding type. Ad esempio, queueTrigger.For example, queueTrigger.
direction 'in', 'out''in', 'out' Indica se l'associazione consente la ricezione di dati nella funzione o l'invio di dati dalla funzione.Indicates whether the binding is for receiving data into the function or sending data from the function.
name stringstring Il nome che viene usato per i dati associati nella funzione.The name that is used for the bound data in the function. Per C#, si tratta di un nome di argomento, per JavaScript è la chiave in un elenco di chiavi/valori.For C#, this is an argument name; for JavaScript, it's the key in a key/value list.

App per le funzioniFunction app

L'app per le funzioni offre un contesto di esecuzione per le funzioni.A function app provides an execution context in Azure in which your functions run. Di conseguenza, è l'unità di distribuzione e gestione per le funzioni.As such, it is the unit of deployment and management for your functions. Un'app per le funzioni è costituita da una o più singole funzioni che vengono gestite, distribuite e ridimensionate insieme.A function app is comprised of one or more individual functions that are managed, deployed, and scaled together. Tutte le funzioni in un'app per le funzioni condividono lo stesso piano tariffario, il metodo di distribuzione e la versione del runtime.All of the functions in a function app share the same pricing plan, deployment method, and runtime version. Un'app per le funzioni può essere considerata un modo per organizzare e gestire collettivamente le funzioni.Think of a function app as a way to organize and collectively manage your functions. Per altre informazioni, vedere come gestire un'appper le funzioni.To learn more, see How to manage a function app.

Nota

Tutte le funzioni in un'app per le funzioni devono essere create nello stesso linguaggio.All functions in a function app must be authored in the same language. Nelle versioni precedenti del runtime di Funzioni di Azure questo non è un requisito.In previous versions of the Azure Functions runtime, this wasn't required.

Struttura di cartelleFolder structure

Il codice per tutte le funzioni in una specifica app per le funzioni si trova in una cartella di progetto radice che contiene un file di configurazione host e una o più sottocartelle.The code for all the functions in a specific function app is located in a root project folder that contains a host configuration file and one or more subfolders. Ogni sottocartella contiene il codice per una funzione separata.Each subfolder contains the code for a separate function. La struttura di cartelle è illustrata nella rappresentazione seguente:The folder structure is shown in the following representation:

FunctionApp
 | - host.json
 | - Myfirstfunction
 | | - function.json
 | | - ...  
 | - mysecondfunction
 | | - function.json
 | | - ...  
 | - SharedCode
 | - bin

Nella versione 2.x del runtime di funzioni, tutte le funzioni nell'app per le funzioni devono condividere lo stesso stack di linguaggio.In version 2.x of the Functions runtime, all functions in the function app must share the same language stack.

Il host. JSON file contiene configurazioni specifiche di runtime e si trova nella cartella radice dell'app per le funzioni.The host.json file contains runtime-specific configurations and is in the root folder of the function app. Oggetto bin cartella contiene i pacchetti e altri file di libreria che richiede l'app per le funzioni.A bin folder contains packages and other library files that the function app requires. Vedere i requisiti specifici del linguaggio per un progetto di app per le funzioni:See the language-specific requirements for a function app project:

La struttura di cartelle mostrata sopra è quella predefinita (e consigliata) per un'app per le funzioni.The above is the default (and recommended) folder structure for a Function app. Se si vuole modificare il percorso del file del codice di una funzione, modificare la sezione scriptFile del file function.json.If you wish to change the file location of a function's code, modify the scriptFile section of the function.json file. È anche consigliabile usare la distribuzione di pacchetti per distribuire il progetto nell'app per le funzioni in Azure.We also recommend using package deployment to deploy your project to your function app in Azure. È anche possibile usare gli strumenti esistenti, ad esempio integrazione e distribuzione continue e Azure DevOps.You can also use existing tools like continuous integration and deployment and Azure DevOps.

Nota

Se si distribuisce un pacchetto manualmente, assicurarsi di distribuire il file host.json e le cartelle della funzione direttamente nella cartella wwwroot.If deploying a package manually, make sure to deploy your host.json file and function folders directly to the wwwroot folder. Non includere la cartella wwwroot nelle distribuzioni.Do not include the wwwroot folder in your deployments. In caso contrario, verranno create le cartelle wwwroot\wwwroot.Otherwise, you end up with wwwroot\wwwroot folders.

Usare strumenti e pubblicazione localiUse local tools and publishing

È possibile creare e pubblicare app per le funzioni tramite vari strumenti, tra cui Visual Studio, Visual Studio Code, IntelliJ, Eclipse e Azure Functions Core Tools.Function apps can be authored and published using a variety of tools, including Visual Studio, Visual Studio Code, IntelliJ, Eclipse, and the Azure Functions Core Tools. Per altre informazioni, vedere Scrivere codice per Funzioni di Azure e testarle in locale.For more information, see Code and test Azure Functions locally.

Come modificare le funzioni nel portale di AzureHow to edit functions in the Azure portal

L'editor delle funzioni integrato nel portale di Azure permette di aggiornare il codice e il file function.json direttamente inline.The Functions editor built into the Azure portal lets you update your code and your function.json file directly inline. Si tratta di un approccio consigliato solo per piccole modifiche o modelli di verifica, mentre la procedura consigliata consiste nell'usare uno strumento di sviluppo locale come Visual Studio Code.This is recommended only for small changes or proofs of concept - best practice is to use a local development tool like VS Code.

Esecuzione parallelaParallel execution

Quando si verificano rapidamente più eventi di trigger di quanti il runtime della funzione a thread singolo riesca a elaborare, il runtime chiama la funzione più volte in parallelo.When multiple triggering events occur faster than a single-threaded function runtime can process them, the runtime may invoke the function multiple times in parallel. Se un'app per le funzioni usa il piano di hosting a consumo, il numero di istanze dell'app può aumentare automaticamente.If a function app is using the Consumption hosting plan, the function app could scale out automatically. Ogni istanza dell'app per le funzioni, indipendentemente dal fatto che venga eseguita in un piano di hosting a consumo o in un normale piano di hosting del servizio app, può elaborare chiamate di funzione simultanee in parallelo usando più thread.Each instance of the function app, whether the app runs on the Consumption hosting plan or a regular App Service hosting plan, might process concurrent function invocations in parallel using multiple threads. Il numero massimo di chiamate di funzione simultanee in ogni istanza dell'app per le funzioni dipende dal tipo di trigger usato e dalle risorse usate dalle altre funzioni nell'app per le funzioni.The maximum number of concurrent function invocations in each function app instance varies based on the type of trigger being used as well as the resources used by other functions within the function app.

Controllo delle versioni del runtime di FunzioniFunctions runtime versioning

È possibile configurare la versione del runtime di Funzioni usando le impostazioni dell'app FUNCTIONS_EXTENSION_VERSION.You can configure the version of the Functions runtime using the FUNCTIONS_EXTENSION_VERSION app setting. Ad esempio, il valore "~ 2" indica che l'app per le funzioni userà 2.x come numero di versione principale.For example, the value "~2" indicates that your Function App will use 2.x as its major version. Le app per le funzioni vengono aggiornate a ogni nuova versione secondaria appena rilasciata.Function Apps are upgraded to each new minor version as they are released. Per altre informazioni, incluso come visualizzare la versione esatta dell'app per le funzioni, vedere Come specificare le versioni del runtime per Funzioni di Azure.For more information, including how to view the exact version of your function app, see How to target Azure Functions runtime versions.

RepositoryRepositories

Il codice di Funzioni di Azure è open source e archiviato in repository GitHub:The code for Azure Functions is open source and stored in GitHub repositories:

AssociazioniBindings

La tabella riportata di seguito elenca tutte le associazioni supportate.Here is a table of all supported bindings.

Questa tabella mostra le associazioni supportate nelle due versioni principali del runtime di funzioni di Azure:This table shows the bindings that are supported in the two major versions of the Azure Functions runtime:

TypeType 1.x1.x 2.x12.x1 TriggerTrigger InputInput OutputOutput
Archiviazione BLOBBlob storage
Cosmos DBCosmos DB
Griglia di eventiEvent Grid
Hub eventiEvent Hubs
Webhook & HTTPHTTP & webhooks
Hub IoTIoT Hub
Microsoft Graph
Tabelle di Excel
Microsoft Graph
Excel tables
Microsoft Graph
File di OneDrive
Microsoft Graph
OneDrive files
Microsoft Graph
Indirizzo e-mail Outlook
Microsoft Graph
Outlook email
Eventi
Microsoft Graph
Microsoft Graph
events
Microsoft Graph
Token di autenticazione
Microsoft Graph
Auth tokens
App per dispositivi mobiliMobile Apps
Hub di notifica di AzureNotification Hubs
Archiviazione codeQueue storage
SendGridSendGrid
Bus di servizioService Bus
SignalRSignalR
Archiviazione tabelleTable storage
TimerTimer
TwilioTwilio

1 nella versione 2.x, devono essere registrate tutte le associazioni tranne HTTP e Timer.1 In 2.x, all bindings except HTTP and Timer must be registered. Vedere Registrare le estensioni delle associazioni.See Register binding extensions.

In caso di problemi con errori provenienti dalle associazioni,Having issues with errors coming from the bindings? rivedere la documentazione Azure Functions Binding Error Codes (Codici degli errori di associazione di Funzioni di Azure).Review the Azure Functions Binding Error Codes documentation.

Segnalazione di problemiReporting Issues

ElementoItem DescrizioneDescription CollegamentoLink
RuntimeRuntime Host di script, trigger e associazioni, supporto del linguaggioScript Host, Triggers & Bindings, Language Support Registrare un problemaFile an Issue
ModelliTemplates Problemi di codice nel modello di creazioneCode Issues with Creation Template Registrare un problemaFile an Issue
PortalePortal Problema con l'esperienza utente o l'interfaccia utenteUser Interface or Experience Issue Registrare un problemaFile an Issue

Passaggi successiviNext steps

Per altre informazioni, vedere le seguenti risorse:For more information, see the following resources: