

# .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 开发人员指南》中的[在 .NET 中使用 AWS Toolkit for Visual Studio 创建和部署 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. 提取开发工具包文件。

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

   将 `{{N.N.N}}` 替换为 .NET 开发工具包的实际版本号（例如：`9.0.305`）。

1. 验证安装。

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

   这应会打印 .NET 开发工具包的版本号。
**注意**  
您收到的可能不是版本号而是以下错误：  
error: libunwind.so.8: cannot open shared object file: No such file or directory (错误: libunwind.so.8: 无法打开共享对象文件。没有此文件或目录  
要解决此问题，请安装 `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 集群的端点，请选择下列选项之一：
   +  **使用 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)