

¡Se AWS SDK para .NET ha publicado la versión 4 (V4) del\$1

Para obtener información sobre los cambios más importantes y la migración de sus aplicaciones, consulte el [tema sobre migración](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html).

 [https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Personalice el marco de procesamiento de AWS mensajes para.NET
<a name="msg-proc-fw-customize"></a>

El marco de procesamiento de AWS mensajes para .NET crea, envía y gestiona los mensajes en tres «capas» diferentes:

1. En la capa más externa, el marco crea la solicitud o respuesta AWS nativa específica de un servicio. Con Amazon SQS, por ejemplo, crea [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)solicitudes y trabaja con los [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_Message.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_Message.html)objetos definidos por el servicio.

1. [Dentro de la solicitud y respuesta de SQS, el marco establece el `MessageBody` elemento (o `Message` para Amazon SNS `Detail` o EventBridge Amazon) en formato JSON. CloudEvent](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/formats/json-format.md) Contiene los metadatos establecidos por el marco a los que se puede acceder en el `MessageEnvelope` objeto cuando se gestiona un mensaje.

1. En la capa más interna, el `data` atributo del objeto CloudEvent JSON contiene una serialización en JSON del objeto .NET que se envió o recibió como mensaje.

   ```
   {
       "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>"
   }
   ```

Puede personalizar la forma en que se configura y lee el sobre del mensaje:
+ `"id"`identifica el mensaje de forma exclusiva. De forma predeterminada, se establece en un nuevo GUID, pero esto se puede anular implementando el suyo propio `IMessageIdGenerator` e inyectándolo en el contenedor del DI. 
+ `"type"`controla cómo se enruta el mensaje a los controladores. De forma predeterminada, utiliza el nombre completo del tipo.NET que corresponde al mensaje. Puede anularlo mediante el `messageTypeIdentifier` parámetro al asignar el tipo de mensaje al destino mediante `AddSQSPublisher``AddSNSPublisher`, o`AddEventBridgePublisher`.
+ `"source"`indica qué sistema o servidor envió el mensaje.
  + Este será el nombre de la función si se publica desde AWS Lambda, el nombre del clúster y el ARN de la tarea si está en Amazon ECS, el ID de la instancia si está en Amazon; de lo contrario EC2, será un valor alternativo de. `/aws/messaging` 
  + Puede anular esto a través de `AddMessageSource` o `AddMessageSourceSuffix` en. `MessageBusBuilder`
+ `"time"`establecido en el valor actual DateTime en UTC. Esto se puede anular implementando el suyo `IDateTimeHandler` e inyectándolo en el contenedor DI.
+ `"data"`contiene una representación en JSON del objeto.NET que se envió o recibió como mensaje:
  + `ConfigureSerializationOptions`on `MessageBusBuilder` le permite configurar el [https://learn.microsoft.com/en-us/dotnet/api/system.text.json.jsonserializeroptions](https://learn.microsoft.com/en-us/dotnet/api/system.text.json.jsonserializeroptions)que se utilizará al serializar y deserializar el mensaje.
  + Para añadir atributos adicionales o transformar el sobre del mensaje una vez que el framework lo haya creado, puede implementarlos `ISerializationCallback` y registrarlos mediante on. `AddSerializationCallback` `MessageBusBuilder`