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