

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Comprendere il modello di programmazione Lambda
<a name="foundation-progmodel"></a>

Lambda offre due modelli di programmazione: funzioni standard che durano fino a 15 minuti e Durable Functions che possono funzionare fino a un anno. Sebbene entrambi condividano i concetti fondamentali, Durable Functions aggiunge funzionalità per flussi di lavoro di lunga durata e caratterizzati da uno stato.

Lambda fornisce un modello di programmazione comune a tutti i tempi di esecuzione. Il modello di programmazione definisce l'interfaccia tra il codice e il sistema Lambda. Comunica a Lambda il punto di ingresso alla funzione definendo un *gestore* nella configurazione della funzione. Il runtime trasferisce al gestore gli oggetti che contengono l'*evento* di chiamata e il *contesto*, ad esempio il nome della funzione e l'ID della richiesta.

**Per Durable Functions, il gestore riceve anche un oggetto che fornisce: DurableContext **
+ Funzionalità di checkpoint tramite step ()
+ Gestione dello stato di attesa tramite wait () e waitForCallback ()
+ Persistenza automatica dello stato tra le chiamate

Quando l'handler termina l'elaborazione del primo evento, il runtime ne invia un altro. Per Durable Functions, il gestore può sospendere l'esecuzione tra i passaggi e Lambda salverà e ripristinerà automaticamente lo stato quando la funzione riprende. La classe della funzione rimane in memoria, quindi i client e le variabili dichiarate al di fuori del metodo del gestore nel *codice di inizializzazione* possono essere riutilizzati. Per risparmiare tempo di elaborazione sugli eventi successivi, crea risorse riutilizzabili come i client SDK AWS durante l'inizializzazione. Una volta inizializzata, ogni istanza della tua funzione può elaborare migliaia di richieste.

La funzione ha anche accesso allo spazio di archiviazione locale nella directory `/tmp`, una cache transitoria che può essere utilizzata per più invocazioni. Per ulteriori informazioni, consulta [Ambiente di esecuzione](lambda-runtime-environment.md).

Quando la [traccia AWS X-Ray](services-xray.md) è abilitata, il runtime registra sottosegmenti separati per l'inizializzazione e l'esecuzione.

Il runtime acquisisce l'output di registrazione dalla tua funzione e lo invia ad Amazon CloudWatch Logs. Oltre a registrare l'output della funzione, il runtime registra anche le voci all'avvio e alla fine dell'invocazione. Questo include un log del report con l'ID della richiesta, la durata fatturata, la durata di inizializzazione e altri dettagli. Se la funzione genera un errore, il runtime restituisce tale errore all'invoker.

**Nota**  
[La registrazione è soggetta alle quote di log. CloudWatch ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch_limits_cwl.html) È possibile perdere i dati di log a causa del throttling o, in alcuni casi, quando un'istanza della funzione viene interrotta.

**Principali differenze per le funzioni durevoli:**
+ Lo stato viene mantenuto automaticamente tra i passaggi
+ Le funzioni possono sospendere l'esecuzione senza consumare risorse
+ I passaggi vengono ritentati automaticamente in caso di errore
+ I progressi vengono tracciati tramite checkpoint

Lambda dimensiona la funzione eseguendone altre istanze in base all'aumento della domanda e interrompendo le istanze in base alla diminuzione della domanda. Questo modello porta a variazioni nell'architettura delle applicazioni, come ad esempio:
+ Salvo diversa indicazione, le richieste in entrata possono essere elaborate fuori ordine o simultaneamente.
+ Non fare affidamento sulla durata delle istanze della funzione, ma archivia lo stato dell'applicazione in altri servizi.
+ Utilizza lo storage locale e gli oggetti a livello di classe per migliorare le prestazioni, mantenendo al minimo le dimensioni del pacchetto di distribuzione e la quantità di dati trasferiti nell'ambiente di esecuzione.

Per un'introduzione pratica al modello di programmazione preferito, consulta i seguenti capitoli.
+ [Compilazione di funzioni Lambda con Node.js](lambda-nodejs.md)
+ [Compilazione di funzioni Lambda con Python](lambda-python.md)
+ [Compilazione di funzioni Lambda con Ruby](lambda-ruby.md)
+ [Compilazione di funzioni Lambda con Java](lambda-java.md)
+ [Compilazione di funzioni Lambda con Go](lambda-golang.md)
+ [Compilazione di funzioni Lambda con C\$1](lambda-csharp.md)
+ [Creazione di funzioni Lambda con PowerShell](lambda-powershell.md)