

La AWS SDK per .NET V3 è entrata in modalità manutenzione.

[Ti consigliamo di migrare alla V4.AWS SDK per .NET](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/welcome.html) Per ulteriori dettagli e informazioni su come eseguire la migrazione, consulta il nostro annuncio sulla modalità di [manutenzione](https://aws.amazon.com/blogs/developer/aws-sdk-for-net-v3-maintenance-mode-announcement/).

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à.

# Personalizzazione del framework di elaborazione dei AWS messaggi per.NET
<a name="msg-proc-fw-customize"></a>

Il AWS Message Processing Framework per .NET crea, invia e gestisce i messaggi in tre diversi «livelli»:

1. Al livello più esterno, il framework crea la richiesta o la risposta AWS-native specifica per un servizio. Con Amazon SQS, ad esempio, crea [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)richieste e lavora con gli [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_Message.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_Message.html)oggetti definiti dal servizio.

1. [All'interno della richiesta e della risposta SQS, il framework imposta l'`MessageBody`elemento (o `Message` per Amazon SNS `Detail` o EventBridge Amazon) su un formato JSON. CloudEvent](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/formats/json-format.md) Contiene i metadati impostati dal framework accessibile sull'oggetto durante la gestione di un messaggio. `MessageEnvelope`

1. Al livello più interno, l'`data`attributo all'interno dell'oggetto CloudEvent JSON contiene una serializzazione JSON dell'oggetto.NET che è stato inviato o ricevuto come messaggio.

   ```
   {
       "id":"b02f156b-0f02-48cf-ae54-4fbbe05cffba",
       "source":"/aws/messaging",
       "specversion":"1.0",
       "type":"Publisher.Models.ChatMessage",
       "time":"2023-11-21T16:36:02.8957126+00:00",
       "data":"<the ChatMessage object serialized as JSON>"
   }
   ```

È possibile personalizzare la modalità di configurazione e lettura della busta del messaggio:
+ `"id"`identifica in modo univoco il messaggio. Per impostazione predefinita è impostato su un nuovo GUID, ma questo può essere sovrascritto implementando il proprio `IMessageIdGenerator` e inserendolo nel contenitore DI. 
+ `"type"`controlla come il messaggio viene indirizzato ai gestori. Per impostazione predefinita, utilizza il nome completo del tipo.NET che corrisponde al messaggio. È possibile sovrascriverlo tramite il `messageTypeIdentifier` parametro durante la mappatura del tipo di messaggio alla destinazione tramite `AddSQSPublisher``AddSNSPublisher`, o. `AddEventBridgePublisher`
+ `"source"`indica quale sistema o server ha inviato il messaggio.
  + Questo sarà il nome della funzione in caso di pubblicazione da AWS Lambda, il nome del cluster e l'ARN dell'attività se su Amazon ECS, l'ID dell'istanza se su Amazon EC2, altrimenti un valore di fallback di. `/aws/messaging` 
  + Puoi sovrascriverlo tramite `AddMessageSource` o su. `AddMessageSourceSuffix` `MessageBusBuilder`
+ `"time"`impostato sulla corrente DateTime in UTC. Questo può essere sovrascritto implementando il proprio `IDateTimeHandler` e iniettandolo nel contenitore DI.
+ `"data"`contiene una rappresentazione JSON dell'oggetto.NET che è stato inviato o ricevuto come messaggio:
  + `ConfigureSerializationOptions`on `MessageBusBuilder` consente di configurare [https://learn.microsoft.com/en-us/dotnet/api/system.text.json.jsonserializeroptions](https://learn.microsoft.com/en-us/dotnet/api/system.text.json.jsonserializeroptions)ciò che verrà utilizzato durante la serializzazione e la deserializzazione del messaggio.
  + Per inserire attributi aggiuntivi o trasformare la busta del messaggio una volta creata dal framework, puoi implementarla e registrarla tramite on. `ISerializationCallback` `AddSerializationCallback` `MessageBusBuilder`