在採用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.18Package Manager
Install-Package aliyun-net-sdk-ecs
# 通過 -Version 指定版本
Install-Package aliyun-net-sdk-ecs -Version 4.24.18PackageReference
<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);
}
}
}