기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
.NET용 AWS 비동기식 API
AWS SDK for .NET는 비동기 구현을 위해 작업 기반 비동기식 패턴(TAP)을 사용합니다. TAP에 대한 자세한 내용은 docs.microsoft.com의 작업 기반 비동기식 패턴(TAP)
이 주제에서는 AWS 서비스 클라이언트에 대한 호출에서 TAP를 사용하는 방법의 개요를 제공합니다.
AWS SDK for .NET API의 비동기 메서드는 Task
클래스 또는 Task<TResult>
클래스를 기반으로 하는 작업입니다. Task 클래스
코드에서 이러한 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 서비스 클라이언트에 대한 비동기 호출의 전체 예는 빠른 둘러보기 섹션(간단한 교차 플랫폼 앱 및 간단한 Windows 기반 앱)과 지침이 포함된 코드 예제에서 확인할 수 있습니다.