

 AWS SDK for .NET V3가 유지 관리 모드로 전환되었습니다.

[AWS SDK for .NET V4](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/welcome.html)로 마이그레이션하는 것이 좋습니다. 마이그레이션 방법에 대한 자세한 내용과 정보는 [유지 관리 모드 공지](https://aws.amazon.com/blogs/developer/aws-sdk-for-net-v3-maintenance-mode-announcement/)를 참조하세요.

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

# AWS.NET용 비동기식 API
<a name="sdk-net-async-api"></a>

AWS SDK for .NET는 비동기 구현을 위해 *작업 기반 비동기식 패턴(TAP)*을 사용합니다. TAP에 대한 자세한 내용은 docs.microsoft.com의 [작업 기반 비동기식 패턴(TAP)](https://learn.microsoft.com/en-us/dotnet/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap)을 참조하세요.

이 주제에서는 AWS 서비스 클라이언트에 대한 호출에서 TAP를 사용하는 방법의 개요를 제공합니다.

AWS SDK for .NET API의 비동기 메서드는 `Task` 클래스 또는 `Task<TResult>` 클래스를 기반으로 하는 작업입니다. [Task 클래스](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task), [Task<TResult> 클래스](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1)와 같은 클래스에 대한 자세한 내용은 docs.microsoft.com을 참조하세요.

코드에서 이러한 API 메서드를 호출할 때는 다음 예제와 같이 `async` 키워드로 선언된 함수 내에서 호출해야 합니다.

```
static async Task Main(string[] args)
{
  ...
  // Call the function that contains the asynchronous API method.
  // Could also call the asynchronous API method directly from Main
  //  because Main is declared async
  var response = await ListBucketsAsync();
  Console.WriteLine($"Number of buckets: {response.Buckets.Count}");
  ...
}

// Async method to get a list of Amazon S3 buckets.
private static async Task<ListBucketsResponse> ListBucketsAsync()
{
  ...
  var response = await s3Client.ListBucketsAsync();
  return response;
}
```

위 코드 조각에서 볼 수 있듯이 `async` 선언 시 선호되는 범위는 `Main` 함수입니다. 이 `async` 범위를 설정하면 AWS 서비스 클라이언트에 대한 모든 호출이 비동기식이어야 합니다. 어떤 이유로 `Main`을 비동기식으로 선언할 수 없는 경우 다음 예제와 같이 `async` 키워드를 `Main` 이외의 함수에서 사용한 다음 해당 함수에서 API 메서드를 호출할 수 있습니다.

```
static void Main(string[] args)
{
  ...
  Task<ListBucketsResponse> response = ListBucketsAsync();
  Console.WriteLine($"Number of buckets: {response.Result.Buckets.Count}");
  ...
}

// Async method to get a list of Amazon S3 buckets.
private static async Task<ListBucketsResponse> ListBucketsAsync()
{
  ...
  var response = await s3Client.ListBucketsAsync();
  return response;
}
```

이 패턴을 사용할 때 `Main`에서 필요한 특수 `Task<>` 구문에 유의해야 합니다. 또한 데이터를 가져오려면 응답의 **`Result`** 멤버를 사용해야 합니다.

AWS 서비스 클라이언트에 대한 비동기 호출의 전체 예는 [빠른 둘러보기](quick-start.md) 섹션([간단한 교차 플랫폼 앱](quick-start-s3-1-cross.md) 및 [간단한 Windows 기반 앱](quick-start-s3-1-winvs.md))과 [지침이 포함된 코드 예제개요 수준 라이브러리 및 프레임워크](tutorials-examples.md)에서 확인할 수 있습니다.