集成SDK
在采用V1.0代系的SDK进行开发时,正确集成核心SDK与云产品SDK是至关重要的步骤,本文为您详细介绍如何添加并管理这些依赖。
云产品的V1.0 SDK依赖信息
云产品的V1.0 SDK中主要包括OpenAPI的Request以及Response对象,还有包含了返回值序列化逻辑的Unmarshaller对象。以云产品ECS的V1.0 SDK的为例,引入云产品SDK依赖的方式如下:
.NET CLI
dotnet add package aliyun-net-sdk-ecs
# 通过 -Version 指定版本
dotnet add package aliyun-net-sdk-ecs --version 4.24.18
Package Manager
Install-Package aliyun-net-sdk-ecs
# 通过 -Version 指定版本
Install-Package aliyun-net-sdk-ecs -Version 4.24.18
PackageReference
<PackageReference Include="aliyun-net-sdk-ecs" Version="4.24.18" />
Paket CLI
paket add aliyun-net-sdk-ecs --version 4.24.18
F# Interactive
#r "nuget: aliyun-net-sdk-ecs, 4.24.18"
V1.0 SDK的命名格式为aliyun-net-sdk-${产品名}
。开发者亦可通过SDK信息中心查阅特定云产品的V1.0 SDK相关信息。
核心SDK的依赖信息
核心SDK包括对OpenAPI的HTTP请求、认证信息、签名算法、异常处理等主要逻辑。依赖信息如下:
dotnet add package aliyun-net-sdk-core
使用SDK
1. 初始化客户端
在V1.0 SDK中,所有云产品的SDK均共享一个SDK Core,因此可以通过该共用SDK Core中的方法初始化并生成一个client对象,以处理所有产品的请求。以下是V1.0 SDK客户端初始化的示例,更多客户端初始化方式,请参见管理访问凭据。
static void Main(string[] args)
{
IClientProfile profile = DefaultProfile.GetProfile(
// 地域ID
"<REGION_ID>",
// 从环境变量获取RAM用户的AccessKey ID
Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
// 从环境变量获取RAM用户的AccessKey ID
Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
DefaultAcsClient client = new DefaultAcsClient(profile);
}
单Client的模式存在线程不安全的问题,而且通过一个profile信息在不同产品之间混用造成的权限管理问题,建议使用V2.0 SDK。
2. 构造请求对象并发起请求
V1.0 SDK通过SDK Core发起对OpenAPI的请求。开发者可以利用云产品SDK提供的Request对象传递请求参数,随后通过已初始化的客户端发起请求,最终返回一个Response对象以接收OpenAPI的返回参数。以使用ECS V1.0 SDK并调用查询一台或多台ECS实例详细信息的接口为例:
每个OpenAPI都有独立的Request和Response对象,命名方式为:
${API}${Request},例如DescribeInstancesRequest。
${API}${Response},例如DescribeInstancesResponse。
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Ecs.Model.V20140526;
namespace AlibabaCloud.SDK.Sample
{
public class Sample
{
static void Main(string[] args)
{
IClientProfile profile = DefaultProfile.GetProfile(
// 地域ID
"<REGION_ID>",
// 从环境变量获取RAM用户的AccessKey ID
Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
// 从环境变量获取RAM用户的AccessKey ID
Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
DefaultAcsClient client = new DefaultAcsClient(profile);
// 构造请求对象
DescribeInstancesRequest request = new DescribeInstancesRequest{
RegionId = "<REGION_ID>"
};;
// 通过client发起请求,将返回的结果序列化为Response对象
DescribeInstancesResponse response = client.GetAcsResponse(request);
System.Console.WriteLine(response.TotalCount);
}
}
}