全部產品
Search
文件中心

Alibaba Cloud SDK:整合SDK

更新時間:Jun 17, 2025

在採用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 SECRET
        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 SECRET
                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);
        }
    }
}