集成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);
        }
    }
}