All Products
Search
Document Center

Object Storage Service:Pemrosesan Asinkron (C# SDK V2)

Last Updated:Nov 09, 2025

Pemrosesan asinkron (x-oss-async-process) memungkinkan program menjalankan tugas lain tanpa menunggu penyelesaian tugas saat ini. Topik ini menjelaskan cara menggunakan C# SDK V2 untuk mentransformasi dokumen secara asinkron.

Catatan

Kode contoh dalam topik ini menggunakan Wilayah China (Hangzhou) (cn-hangzhou) sebagai contoh. Secara default, titik akhir publik digunakan. Untuk mengakses OSS dari layanan Alibaba Cloud lainnya di wilayah yang sama, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang pemetaan antara wilayah OSS dan titik akhir, lihat Wilayah dan Titik Akhir.

Kode Contoh

Berikut adalah kode contoh yang menunjukkan cara menggunakan C# SDK V2 untuk mentransformasi dokumen ke format yang diperlukan.

using System.Text;
using OSS = AlibabaCloud.OSS.V2;  // Buat alias untuk Alibaba Cloud OSS SDK untuk menyederhanakan penggunaan selanjutnya.

var region = "cn-hangzhou";  // Diperlukan. Wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
var endpoint = null as string;  // Opsional. Titik akhir yang digunakan untuk mengakses OSS. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com.
var bucket = "nama bucket Anda";  // Diperlukan. Nama bucket.
var key = "kunci objek Anda";  // Diperlukan. Nama objek yang ingin Anda transformasikan.

// Muat konfigurasi default dari OSS SDK. Konfigurasi ini secara otomatis membaca informasi kredensial (seperti AccessKey) dari variabel lingkungan.
var cfg = OSS.Configuration.LoadDefault();
// Secara eksplisit atur penggunaan variabel lingkungan untuk mendapatkan kredensial untuk verifikasi identitas (Format: OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET).
cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
// Atur wilayah bucket dalam konfigurasi.
cfg.Region = region;   
// Jika titik akhir ditentukan, itu akan menimpa titik akhir default. 
if(endpoint != null) 
{
    cfg.Endpoint = endpoint;
} 

// Buat instance klien OSS menggunakan informasi konfigurasi.
using var client = new OSS.Client(cfg); 

// Tentukan bucket tujuan untuk menyimpan file yang telah ditransformasi.
var targetBucket = bucket!;
// Tentukan kunci file yang telah ditransformasi. Tambahkan awalan "process-" untuk pembeda.
var targetKey = $"process-{key}";
// Bangun string gaya pemrosesan dokumen untuk menentukan parameter transformasi dokumen.
// Konfigurasi ini menentukan aturan untuk mentransformasi dokumen Docx sumber menjadi citra PNG.
// Deskripsi format: doc/convert,target_{target_format},source_{source_format}
var style = "doc/convert,target_png,source_docx";

// Enkode nama bucket tujuan dalam Base64.
var targetNameBase64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(targetBucket));
// Enkode kunci objek tujuan dalam Base64.
var targetKeyBase64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(targetKey));

// Bangun instruksi pemrosesan lengkap:
// 1. Terapkan gaya transformasi dokumen (doc/convert).
// 2. Gunakan operasi sys/saveas untuk menyimpan hasilnya.
//    - b_{bucket_name_yang_diencode_Base64} menentukan bucket tujuan.
//    - o_{kunci_yang_diencode_Base64} menentukan kunci tujuan.
//    - /notify mengaktifkan mode pemrosesan asinkron.
var process = $"{style}|sys/saveas,b_{targetNameBase64},o_{targetKeyBase64}/notify";

// Panggil metode AsyncProcessObjectAsync untuk melakukan transformasi dokumen.
var result = await client.AsyncProcessObjectAsync(new OSS.Models.AsyncProcessObjectRequest()
{
    Bucket = bucket,
    Key = key,
    Process = process
});

// Cetak informasi hasil.
Console.WriteLine("AsyncProcessObject selesai");  // Menunjukkan bahwa operasi telah selesai.
Console.WriteLine($"Kode Status: {result.StatusCode}");  // Kode status HTTP
Console.WriteLine($"ID Permintaan: {result.RequestId}");  // ID permintaan, yang digunakan untuk pemecahan masalah di Alibaba Cloud.
Console.WriteLine("Header Respons:");  // Informasi header respons.
result.Headers.ToList().ForEach(x => Console.WriteLine(x.Key + " : " + x.Value));  // Telusuri dan cetak semua header respons.
Console.WriteLine($"Hasil Pemrosesan: {result.ProcessResult}");  // Keluaran hasil pemrosesan.

Referensi