

버전 4(V4) AWS SDK for .NET 가 릴리스되었습니다.

변경 사항 해제 및 애플리케이션 마이그레이션에 대한 자세한 내용은 [마이그레이션 주제를](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)

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# .NET용 AWS 메시지 처리 프레임워크 사용자 지정
<a name="msg-proc-fw-customize"></a>

.NET용 AWS 메시지 처리 프레임워크는 세 가지 "계층"으로 메시지를 빌드, 전송 및 처리합니다.

1. 가장 바깥쪽 계층에서 프레임워크는 서비스와 관련된 AWS네이티브 요청 또는 응답을 빌드합니다. 예를 들어 Amazon SQS를 사용하면 [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html) 요청을 빌드하고 서비스에서 정의한 [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_Message.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_Message.html) 객체와 함께 작동합니다.

1. SQS 요청 및 응답 내에서 프레임워크는 `MessageBody` 요소(또는 Amazon SNS`Message`의 경우 또는 Amazon EventBridge의 `Detail` 경우)를 [JSON 형식의 CloudEvent](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/formats/json-format.md)로 설정합니다. 여기에는 메시지를 처리할 때 `MessageEnvelope` 객체에서 액세스할 수 있는 프레임워크에서 설정한 메타데이터가 포함됩니다.

1. 가장 안쪽 계층에서 CloudEvent JSON 객체 내부의 `data` 속성에는 메시지로 전송되거나 수신된 .NET 객체의 JSON 직렬화가 포함됩니다.

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

메시지 봉투를 구성하고 읽는 방법을 사용자 지정할 수 있습니다.
+ `"id"`는 메시지를 고유하게 식별합니다. 기본적으로 새 GUID로 설정되지만 자체 GUID를 구현`IMessageIdGenerator`하고 이를 DI 컨테이너에 주입하여 재정의할 수 있습니다.
+ `"type"`는 메시지가 핸들러로 라우팅되는 방식을 제어합니다. 기본적으로 메시지에 해당하는 .NET 유형의 전체 이름을 사용합니다. `AddSQSPublisher`, `AddSNSPublisher`또는를 통해 메시지 유형을 대상에 매핑할 때 `messageTypeIdentifier` 파라미터를 통해 이를 재정의할 수 있습니다`AddEventBridgePublisher`.
+ `"source"`는 메시지를 전송한 시스템 또는 서버를 나타냅니다.
  + 이는에서 게시하는 경우 함수 이름 AWS Lambda, Amazon ECS에서 게시하는 경우 클러스터 이름 및 작업 ARN, Amazon EC2에서 게시하는 경우 인스턴스 ID, 그렇지 않으면 폴백 값 입니다`/aws/messaging`.
  + 를 통해 `AddMessageSource` 또는 `AddMessageSourceSuffix`에서 이를 재정의할 수 있습니다`MessageBusBuilder`.
+ `"time"`를 UTC의 현재 DateTime으로 설정합니다. 이는 자체를 구현`IDateTimeHandler`하고 이를 DI 컨테이너에 주입하여 재정의할 수 있습니다.
+ `"data"` 에는 메시지로 전송되거나 수신된 .NET 객체의 JSON 표현이 포함되어 있습니다.
  + `ConfigureSerializationOptions`의를 `MessageBusBuilder` 사용하면 메시지를 직렬화 및 역직렬화할 때 사용할를 구성할 [https://learn.microsoft.com/en-us/dotnet/api/system.text.json.jsonserializeroptions](https://learn.microsoft.com/en-us/dotnet/api/system.text.json.jsonserializeroptions) 수 있습니다.
  + 프레임워크가 빌드되면 추가 속성을 주입하거나 메시지 봉투를 변환하려면 `AddSerializationCallback`의를 통해 해당 속성을 구현`ISerializationCallback`하고 등록할 수 있습니다`MessageBusBuilder`.