

# .NET 및 DAX
<a name="DAX.client.run-application-dotnet"></a>

Amazon EC2 인스턴스에서 .NET 샘플을 실행하려면 다음 단계를 따릅니다.

**참고**  
본 자습서에서는 .NET 9 SDK를 사용합니다. 기본 Amazon VPC에서 프로그램을 실행하여 Amazon DynamoDB Accelerator(DAX) 클러스터에 액세스하는 방법을 보여줍니다. [.NET용 AWS SDK v4](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/welcome.html)에서 작동합니다. V4의 변경 사항과 마이그레이션에 대한 자세한 내용은 [.NET용 AWS SDK 버전 4로 마이그레이션](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)을 참조하세요. 원하는 경우 AWS Toolkit for Visual Studio를 사용하여 .NET 애플리케이션을 작성하고 VPC에 배포할 수 있습니다.  
자세한 내용은 *AWS Elastic Beanstalk 개발자 설명서*에서 [AWS Toolkit for Visual Studio를 사용한 .NET 내 Elastic Beanstalk 애플리케이션 생성 및 배포](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_NET.html)를 참조하세요.

**DAX에 대한 .NET 샘플을 실행하려면**

1. [Microsoft 다운로드 페이지](https://www.microsoft.com/net/download?initial-os=linux)로 이동하여 최신 버전의 .NET 9 SDK for Linux를 다운로드합니다. 다운로드된 파일은 `dotnet-sdk-{{N.N.N}}-linux-x64.tar.gz`입니다.

1. SDK 파일의 압축을 풉니다.

   ```
   mkdir dotnet
   tar zxvf dotnet-sdk-{{N.N.N}}-linux-x64.tar.gz -C dotnet
   ```

   `{{N.N.N}}`을 .NET SDK의 실제 버전 번호로 바꿉니다.(예: `9.0.305`).

1. 설치를 확인합니다.

   ```
   alias dotnet=$HOME/dotnet/dotnet
   dotnet --version
   ```

   .NET SDK의 버전 번호를 인쇄합니다.
**참고**  
버전 번호 대신 다음 오류를 수신할 수 있습니다.  
error: libunwind.so.8: cannot open shared object file: No such file or directory  
오류를 해결하려면 `libunwind` 패키지를 설치합니다.  

   ```
   sudo yum install -y libunwind
   ```
이를 완료한 후에는 오류 없이 `dotnet --version` 명령을 실행할 수 있습니다.

1. 새로운 .NET 프로젝트 생성.

   ```
   dotnet new console -o myApp 
   ```

   일회성 설정을 수행하는 데 몇 분이 걸릴 수 있습니다. 완료되고 나면 샘플 프로젝트를 실행합니다.

   ```
   dotnet run --project myApp
   ```

   다음과 같은 메시지를 받게 됩니다. `Hello World!` 

1. `myApp/myApp.csproj` 파일에는 프로젝트 관련 메타데이터가 포함되어 있습니다. 애플리케이션에서 DAX 클라이언트를 사용하려면 파일을 다음과 같이 수정해야 합니다.

   ```
   <Project Sdk="Microsoft.NET.Sdk">
       <PropertyGroup>
           <OutputType>Exe</OutputType>
           <TargetFramework>net9.0</TargetFramework>
       </PropertyGroup>
       <ItemGroup>
           <PackageReference Include="AWSSDK.DAX.Client" Version="*" />
       </ItemGroup>
   </Project>
   ```

1. 샘플 프로그램 소스 코드(`.zip` 파일)를 다운로드합니다.

   ```
   wget http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/samples/TryDax.zip
   ```

   다운로드가 완료되면 소스 파일의 압축을 풉니다.

   ```
   unzip TryDax.zip
   ```

1. 이제 *dotNet*의 샘플 프로그램을 한 번에 하나씩 실행합니다. 각 프로그램에서 내용을 `myApp/Program.cs`로 복사한 다음 `MyApp` 프로젝트를 실행합니다.

   다음 .NET 프로그램을 실행합니다. 첫 프로그램은 `TryDaxTable`이라는 DynamoDB 테이블을 생성합니다. 두 번째 프로그램은 해당 테이블에 데이터를 씁니다.

   ```
   cp TryDax/dotNet/01-CreateTable.cs myApp/Program.cs
   dotnet run --project myApp
   
   cp TryDax/dotNet/02-Write-Data.cs myApp/Program.cs
   dotnet run --project myApp
   ```

1. 다음으로 일부 프로그램을 실행하여 DAX 클러스터에서 `GetItem`, `Query` 및 `Scan` 작업을 수행합니다. DAX 클러스터의 엔드포인트를 정의하려면 다음 중 하나를 선택합니다.
   +  **Using the DynamoDB console(DynamoDB 콘솔 사용)** - DAX 클러스터를 선택합니다. 다음 예제와 같이 클러스터 엔드포인트가 콘솔에 표시됩니다.

     ```
     dax://my-cluster.l6fzcv.dax-clusters.us-east-1.amazonaws.com
     ```
   + **AWS CLI 사용** - 다음 명령을 입력합니다.

     ```
     aws dax describe-clusters --query "Clusters[*].ClusterDiscoveryEndpoint"
     ```

     다음 예제와 같이 클러스터 엔드포인트가 출력에 표시됩니다.

     ```
     {
         "Address": "my-cluster.l6fzcv.dax-clusters.us-east-1.amazonaws.com",
         "Port": 8111,
         "URL": "dax://my-cluster.l6fzcv.dax-clusters.us-east-1.amazonaws.com"
     }
     ```

   다음 프로그램을 실행하여 클러스터 엔드포인트를 명령줄 파라미터로 지정합니다. (샘플 엔드포인트를 실제 DAX 클러스터 엔드포인트로 바꿉니다.)

   ```
   cp TryDax/dotNet/03-GetItem-Test.cs myApp/Program.cs
   dotnet run --project myApp {{dax://my-cluster.l6fzcv.dax-clusters.us-east-1.amazonaws.com}}
   
   cp TryDax/dotNet/04-Query-Test.cs myApp/Program.cs
   dotnet run --project myApp {{dax://my-cluster.l6fzcv.dax-clusters.us-east-1.amazonaws.com}}
                           
   cp TryDax/dotNet/05-Scan-Test.cs myApp/Program.cs
   dotnet run --project myApp {{dax://my-cluster.l6fzcv.dax-clusters.us-east-1.amazonaws.com}}
   ```

   `GetItem`, `Query` 및 `Scan` 테스트에 필요한 시간 정보(밀리초)를 기록해 둡니다.

1. 다음 .NET 프로그램을 실행하여 `TryDaxTable`를 삭제합니다.

   ```
   cp TryDax/dotNet/06-DeleteTable.cs myApp/Program.cs
   dotnet run --project myApp
   ```

이러한 프로그램에 대한 자세한 내용은 다음 단원을 참조하세요.
+ [01-CreateTable.cs](DAX.client.run-application-dotnet.01-CreateTable.md)
+ [02-Write-Data.cs](DAX.client.run-application-dotnet.02-Write-Data.md)
+ [03-GetItem-Test.cs](DAX.client.run-application-dotnet.03-GetItem-Test.md)
+ [04-Query-Test.cs](DAX.client.run-application-dotnet.04-Query-Test.md)
+ [05-Scan-Test.cs](DAX.client.run-application-dotnet.05-Scan-Test.md)
+ [06-DeleteTable.cs](DAX.client.run-application-dotnet.06-DeleteTable.md)