Bagikan melalui


Tutorial: Pengodean dengan Azure Digital Twins SDK

Pengembang yang bekerja dengan Azure Digital Twins biasanya menulis aplikasi klien untuk berinteraksi dengan instans layanan Azure Digital Twins mereka. Tutorial yang berfokus pada pengembang ini menyediakan pengantar pemrograman terhadap layanan Azure Digital Twins, menggunakan Azure Digital Twins SDK untuk .NET (C#). Ini memandu Anda menulis aplikasi klien konsol C# langkah demi langkah, mulai dari awal.

  • Menyiapkan proyek
  • Mulai menggunakan kode proyek
  • Sampel kode lengkap
  • Membersihkan sumber daya
  • Langkah selanjutnya

Prerequisites

Tutorial Azure Digital Twins ini menggunakan baris perintah untuk penyiapan dan pekerjaan proyek. Dengan demikian, Anda dapat menggunakan editor kode apa pun untuk menelusuri latihan.

Apa yang perlu Anda mulai:

  • Editor kode apa pun
  • .NET Core 3.1 pada komputer pengembangan Anda. Anda dapat mengunduh versi .NET Core SDK ini untuk beberapa platform dari Unduh .NET Core 3.1.

Menyiapkan instans Azure Digital Twins

Untuk bekerja dengan Azure Digital Twins dalam artikel ini, Anda memerlukan instans Azure Digital Twins dan izin yang diperlukan untuk menggunakannya. Jika Anda sudah menyiapkan instans Azure Digital Twins, Anda dapat menggunakan instans tersebut dan melompat ke bagian berikutnya. Jika tidak, ikuti instruksi dalam Menyiapkan instans dan autentikasi. Instruksi berisi informasi untuk membantu Anda memverifikasi bahwa Anda berhasil menyelesaikan setiap langkah.

Setelah Anda menyiapkan instans, catat nama host instans. Anda dapat menemukan nama host di portal Microsoft Azure.

Menyiapkan kredensial Azure lokal

Sampel ini menggunakan DefaultAzureCredential (bagian Azure.Identity dari pustaka) untuk mengautentikasi dengan instans Azure Digital Twins saat Anda menjalankan sampel di komputer lokal Anda. DefaultAzureCredential adalah salah satu dari banyak opsi autentikasi. Untuk informasi selengkapnya tentang berbagai cara aplikasi klien dapat mengautentikasi dengan Azure Digital Twins, lihat Menulis kode autentikasi aplikasi.

Dengan DefaultAzureCredential, sampel mencari kredensial di lingkungan lokal Anda, seperti masuk Azure di Azure CLI lokal atau di Visual Studio atau Visual Studio Code. Untuk alasan ini, Anda harus masuk ke Azure secara lokal melalui salah satu mekanisme ini untuk menyiapkan kredensial untuk sampel.

Jika Anda menggunakan Visual Studio atau Visual Studio Code untuk menjalankan sampel kode, pastikan Anda masuk ke editor tersebut dengan kredensial Azure yang sama dengan yang ingin Anda gunakan untuk mengakses instans Azure Digital Twins Anda. Jika Anda menggunakan jendela CLI lokal, jalankan az login perintah untuk masuk ke akun Azure Anda. Setelah Masuk, sampel kode akan mengautentikasi Anda secara otomatis saat dijalankan.

Menyiapkan proyek

Setelah Anda siap untuk menggunakan instans Azure Digital Twins Anda, mulai siapkan proyek aplikasi klien.

Buka jendela konsol di komputer Anda, dan buat direktori proyek kosong tempat Anda ingin menyimpan pekerjaan Anda selama tutorial ini. Beri nama direktori apa pun yang Anda inginkan (misalnya, DigitalTwinsCodeTutorial).

Navigasikan ke direktori baru.

Setelah berada di direktori proyek, buat proyek aplikasi konsol .NET kosong. Di jendela perintah, Anda dapat menjalankan perintah berikut untuk membuat proyek C# minimal untuk konsol:

dotnet new console

Perintah ini membuat beberapa file di dalam direktori Anda, termasuk yang disebut Program.cs tempat Anda menulis sebagian besar kode Anda.

Biarkan jendela perintah terbuka, saat Anda terus menggunakannya di seluruh tutorial.

Selanjutnya, tambahkan dua dependensi ke proyek Anda yang diperlukan untuk bekerja dengan Azure Digital Twins. Dependensi pertama adalah paket untuk Azure Digital Twins SDK untuk .NET. Dependensi kedua menyediakan alat untuk membantu autentikasi terhadap Azure.

dotnet add package Azure.DigitalTwins.Core
dotnet add package Azure.Identity

Mulai menggunakan kode proyek

Di bagian ini, Anda mulai menulis kode untuk proyek aplikasi baru Anda agar berfungsi dengan Azure Digital Twins. Tindakan yang dibahas meliputi:

  • Mengautentikasi terhadap layanan
  • Mengunggah model
  • Menangkap kesalahan
  • Membuat kembar digital
  • Membuat hubungan
  • Mengkueri kembar digital

Ada juga bagian yang menunjukkan kode lengkap di akhir tutorial. Anda dapat menggunakan bagian ini sebagai referensi untuk memeriksa program Anda saat Anda pergi.

Untuk memulai, buka file Program.cs di editor kode apa pun. Anda melihat templat kode minimal yang terlihat seperti ini:

Cuplikan layar cuplikan kode sampel di editor kode.

Pertama, tambahkan beberapa using baris di bagian atas kode untuk menarik dependensi yang diperlukan.

using Azure.DigitalTwins.Core;
using Azure.Identity;

Selanjutnya, Anda menambahkan kode ke file ini untuk mengisi beberapa fungsionalitas.

Mengautentikasi terhadap layanan

Hal pertama yang perlu dilakukan aplikasi Anda adalah mengautentikasi terhadap layanan Azure Digital Twins. Kemudian, Anda dapat membuat kelas klien layanan untuk mengakses fungsi SDK.

Untuk mengautentikasi, Anda memerlukan nama host instans Azure Digital Twins Anda.

Dalam Program.cs, tempelkan kode berikut di bawah baris cetak "Halo, Dunia!" dalam Main metode . Atur nilai adtInstanceUrl ke nama host instans Azure Digital Twins Anda.

string adtInstanceUrl = "https://<your-Azure-Digital-Twins-instance-hostName>"; 

var credential = new DefaultAzureCredential();
var client = new DigitalTwinsClient(new Uri(adtInstanceUrl), credential);
Console.WriteLine($"Service client created – ready to go");

Simpan file tersebut.

Di jendela perintah Anda, jalankan kode dengan perintah ini:

dotnet run

Perintah ini memulihkan dependensi pada eksekusi pertama, lalu menjalankan program.

  • Jika tidak ada kesalahan yang terjadi, program mencetak: "Klien layanan dibuat - siap untuk pergi".
  • Karena belum ada penanganan kesalahan dalam proyek ini, jika ada masalah, Anda akan melihat pengecualian yang dilemparkan oleh kode.

Note

Saat ini ada masalah yang diketahui yang memengaruhi DefaultAzureCredential kelas pembungkus yang mungkin mengakibatkan kesalahan saat mengautentikasi. Jika Anda mengalami masalah ini, Anda dapat mencoba membuat instans DefaultAzureCredential dengan parameter opsional berikut untuk mengatasinya: new DefaultAzureCredential(new DefaultAzureCredentialOptions { ExcludeSharedTokenCacheCredential = true });

Untuk informasi selengkapnya tentang masalah ini, lihat Masalah umum Azure Digital Twins.

Mengunggah model

Azure Digital Twins tidak memiliki kosakata domain intrinsik. Anda menggunakan model untuk menentukan jenis elemen di lingkungan Anda yang dapat Anda wakili di Azure Digital Twins. Model mirip dengan kelas dalam bahasa pemrograman berorientasi objek; mereka menyediakan templat yang ditentukan pengguna untuk diikuti kembar digital dan membuat instans nanti. Mereka ditulis dalam bahasa seperti JSON yang disebut Digital Twins Definition Language (DTDL).

Langkah pertama dalam membuat solusi Azure Digital Twins adalah menentukan setidaknya satu model dalam file DTDL.

Di direktori tempat Anda membuat proyek, buat file .json baru yang disebut SampleModel.json. Tempelkan dalam isi file berikut:

{
  "@id": "dtmi:example:SampleModel;1",
  "@type": "Interface",
  "displayName": "SampleModel",
  "contents": [
    {
      "@type": "Relationship",
      "name": "contains"
    },
    {
      "@type": "Property",
      "name": "data",
      "schema": "string"
    }
  ],
  "@context": "dtmi:dtdl:context;3"
}

Tip

Jika Anda menggunakan Visual Studio untuk tutorial ini, Anda mungkin ingin memilih file JSON yang baru dibuat dan mengatur properti Salin ke Direktori Output di Pemeriksa Properti ke Salin jika Lebih Baru atau Salin Selalu. Nilai properti ini memungkinkan Visual Studio menemukan file JSON dengan jalur default saat Anda menjalankan program dengan F5 selama tutorial lainnya.

Tip

Anda dapat memeriksa dokumen model untuk memastikan DTDL valid menggunakan pustaka DTDLParser. Untuk informasi selengkapnya tentang menggunakan pustaka ini, lihat Mengurai dan memvalidasi model.

Selanjutnya, tambahkan beberapa kode lagi ke Program.cs untuk mengunggah model yang Anda buat ke instans Azure Digital Twins Anda.

Pertama, tambahkan beberapa using pernyataan ke bagian atas file:

using System.Threading.Tasks;
using System.IO;
using System.Collections.Generic;
using Azure;

Selanjutnya, bersiaplah untuk menggunakan metode asinkron di SDK layanan C#, dengan mengubah Main tanda tangan metode untuk memungkinkan eksekusi asinkron.

static async Task Main(string[] args)
{

Note

Penggunaan async tidak benar-benar diperlukan, karena SDK juga menyediakan versi sinkron dari semua panggilan. Tutorial ini berlatih menggunakan async.

Selanjutnya muncul bit kode pertama yang berinteraksi dengan layanan Azure Digital Twins. Kode ini memuat file DTDL yang Anda buat dari disk Anda, lalu mengunggahnya ke instans layanan Azure Digital Twins Anda.

Tempelkan kode berikut di bawah kode otorisasi yang Anda tambahkan sebelumnya.

Console.WriteLine();
Console.WriteLine($"Upload a model");
string dtdl = File.ReadAllText("SampleModel.json");
var models = new List<string> { dtdl };
// Upload the model to the service
await client.CreateModelsAsync(models);

Di jendela perintah Anda, jalankan program dengan perintah ini:

dotnet run

"Unggah model" dicetak dalam output untuk menunjukkan bahwa kode ini tercapai. Namun, belum ada output untuk menunjukkan apakah unggahan berhasil.

Untuk menambahkan pernyataan cetak yang menunjukkan semua model yang berhasil diunggah ke instans, tambahkan kode berikut tepat setelah bagian sebelumnya:

// Read a list of models back from the service
AsyncPageable<DigitalTwinsModelData> modelDataList = client.GetModelsAsync();
await foreach (DigitalTwinsModelData md in modelDataList)
{
    Console.WriteLine($"Model: {md.Id}");
}

Sebelum Anda menjalankan program lagi untuk menguji kode baru ini, ingatlah bahwa terakhir kali Anda menjalankan program, Anda sudah mengunggah model Anda. Azure Digital Twins tidak mengizinkan Anda mengunggah model yang sama dua kali, jadi jika Anda mencoba mengunggah model yang sama lagi, program harus melemparkan pengecualian.

Dengan mengingat informasi ini, jalankan program lagi dengan perintah ini di jendela perintah Anda:

dotnet run

Program harus melemparkan pengecualian. Saat Anda mencoba mengunggah model yang sudah diunggah, layanan mengembalikan kesalahan "permintaan buruk" melalui REST API. Akibatnya, SDK klien Azure Digital Twins memberikan pengecualian, untuk setiap kode pengembalian layanan selain keberhasilan.

Bagian berikutnya berbicara tentang pengecualian seperti ini dan cara menanganinya dalam kode Anda.

Menangkap kesalahan

Agar program tidak crash, Anda dapat menambahkan kode pengecualian di sekitar kode unggahan model. Bungkus panggilan await client.CreateModelsAsync(typeList) klien yang ada dalam handler try/catch, seperti ini:

try
{
    await client.CreateModelsAsync(models);
    Console.WriteLine("Models uploaded to the instance:");
}
catch (RequestFailedException e)
{
    Console.WriteLine($"Upload model error: {e.Status}: {e.Message}");
}

Jalankan program lagi dengan dotnet run di jendela perintah Anda. Anda melihat bahwa Anda mendapatkan kembali detail selengkapnya tentang masalah pengunggahan model, termasuk kode kesalahan yang menyatakan bahwa ModelIdAlreadyExists.

Dari titik ini ke depan, tutorial membungkus semua panggilan ke metode layanan di handler try/catch.

Membuat kembar digital

Sekarang setelah Anda mengunggah model ke Azure Digital Twins, Anda dapat menggunakan definisi model ini untuk membuat kembar digital. Kembar digital adalah instans model, dan mewakili entitas dalam lingkungan bisnis Anda—hal-hal seperti sensor di peternakan, kamar di gedung, atau lampu di dalam mobil. Bagian ini membuat beberapa kembar digital berdasarkan model yang Anda unggah sebelumnya.

Untuk membuat dan menginisialisasi tiga kembar digital berdasarkan model ini, tambahkan kode berikut ke akhir Main metode.

var twinData = new BasicDigitalTwin();
twinData.Metadata.ModelId = "dtmi:example:SampleModel;1";
twinData.Contents.Add("data", $"Hello World!");

string prefix = "sampleTwin-";
for (int i = 0; i < 3; i++)
{
    try
    {
        twinData.Id = $"{prefix}{i}";
        await client.CreateOrReplaceDigitalTwinAsync<BasicDigitalTwin>(twinData.Id, twinData);
        Console.WriteLine($"Created twin: {twinData.Id}");
    }
    catch(RequestFailedException e)
    {
        Console.WriteLine($"Create twin error: {e.Status}: {e.Message}");
    }
}

Di jendela perintah Anda, jalankan program dengan dotnet run. Dalam output, cari pesan cetak yang dibuat sampleTwin-0, sampleTwin-1, dan sampleTwin-2.

Kemudian, jalankan program lagi.

Perhatikan bahwa tidak ada kesalahan yang dilemparkan ketika kembar dibuat untuk kedua kalinya, meskipun kembar sudah ada setelah eksekusi pertama. Tidak seperti pembuatan model, pembuatan kembar adalah panggilan PUT dengan semantik upsert di tingkat REST. Menggunakan panggilan REST semacam ini berarti bahwa jika kembar sudah ada, upaya untuk membuat kembar yang sama lagi hanya menggantikan kembar asli. Tidak ada kesalahan yang dilemparkan.

Buat hubungan

Selanjutnya, Anda dapat membuat hubungan antara kembar yang Anda buat, untuk menyambungkannya ke grafik kembar. Grafik kembar digunakan untuk mewakili seluruh lingkungan Anda.

Tambahkan metode statis baru ke Program kelas , di bawah Main metode (kode sekarang memiliki dua metode):

public async static Task CreateRelationshipAsync(DigitalTwinsClient client, string srcId, string targetId)
{
    var relationship = new BasicRelationship
    {
        TargetId = targetId,
        Name = "contains"
    };

    try
    {
        string relId = $"{srcId}-contains->{targetId}";
        await client.CreateOrReplaceRelationshipAsync(srcId, relId, relationship);
        Console.WriteLine("Created relationship successfully");
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine($"Create relationship error: {e.Status}: {e.Message}");
    }
}

Selanjutnya, tambahkan kode berikut ke akhir Main metode, untuk memanggil CreateRelationship metode dan menggunakan kode yang baru saja Anda tulis:

// Connect the twins with relationships
await CreateRelationshipAsync(client, "sampleTwin-0", "sampleTwin-1");
await CreateRelationshipAsync(client, "sampleTwin-0", "sampleTwin-2");

Di jendela perintah Anda, jalankan program dengan dotnet run. Dalam output, cari pernyataan cetak yang mengatakan bahwa kedua hubungan berhasil dibuat.

Azure Digital Twins tidak memungkinkan Anda membuat hubungan jika hubungan lain dengan ID yang sama sudah ada. Akibatnya, Anda melihat pengecualian pada pembuatan hubungan jika Anda menjalankan program beberapa kali. Kode ini menangkap pengecualian dan mengabaikannya.

Mencantumkan hubungan

Kode berikutnya yang akan Anda tambahkan memungkinkan Anda melihat daftar hubungan yang Anda buat.

Tambahkan metode baru berikut ke Program kelas :

public async static Task ListRelationshipsAsync(DigitalTwinsClient client, string srcId)
{
    try
    {
        AsyncPageable<BasicRelationship> results = client.GetRelationshipsAsync<BasicRelationship>(srcId);
        Console.WriteLine($"Twin {srcId} is connected to:");
        await foreach (BasicRelationship rel in results)
        {
            Console.WriteLine($" -{rel.Name}->{rel.TargetId}");
        }
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine($"Relationship retrieval error: {e.Status}: {e.Message}");
    }
}

Kemudian, tambahkan kode berikut ke akhir Main metode untuk memanggil ListRelationships kode:

//List the relationships
await ListRelationshipsAsync(client, "sampleTwin-0");

Di jendela perintah Anda, jalankan program dengan dotnet run. Anda akan melihat daftar semua hubungan yang Anda buat dalam pernyataan output yang terlihat seperti ini:

Cuplikan layar konsol yang menampilkan output program, yang menghasilkan pesan yang mencantumkan hubungan kembar.

Mengkueri kembar digital

Fitur utama Azure Digital Twins adalah kemampuan untuk mengkueri grafik kembar Anda dengan mudah dan efisien untuk menjawab pertanyaan tentang lingkungan Anda.

Bagian terakhir kode yang akan ditambahkan dalam tutorial ini menjalankan kueri terhadap instans Azure Digital Twins. Kueri yang digunakan dalam contoh ini mengembalikan semua kembar digital dalam instans.

Tambahkan pernyataan ini using untuk mengaktifkan penggunaan JsonSerializer kelas untuk membantu menyajikan informasi kembar digital:

using System.Text.Json;

Kemudian, tambahkan kode berikut ke akhir Main metode:

// Run a query for all twins
string query = "SELECT * FROM digitaltwins";
AsyncPageable<BasicDigitalTwin> queryResult = client.QueryAsync<BasicDigitalTwin>(query);

await foreach (BasicDigitalTwin twin in queryResult)
{
    Console.WriteLine(JsonSerializer.Serialize(twin));
    Console.WriteLine("---------------");
}

Di jendela perintah Anda, jalankan program dengan dotnet run. Anda akan melihat semua kembar digital dalam instans ini dalam output.

Note

Setelah membuat perubahan pada data dalam grafik Anda, mungkin ada latensi hingga 10 detik sebelum perubahan akan tercermin dalam kueri.

API DigitalTwins segera mencerminkan perubahan, jadi jika Anda memerlukan respons instan, gunakan permintaan API (DigitalTwins GetById) atau panggilan SDK (GetDigitalTwin) untuk mendapatkan data kembar alih-alih kueri.

Contoh kode lengkap

Pada titik ini dalam tutorial, Anda memiliki aplikasi klien lengkap yang dapat melakukan tindakan dasar terhadap Azure Digital Twins. Sebagai referensi, contoh berikut mencantumkan kode lengkap program dalam Program.cs:

using System;
// <Azure_Digital_Twins_dependencies>
using Azure.DigitalTwins.Core;
using Azure.Identity;
// </Azure_Digital_Twins_dependencies>
// <Model_dependencies>
using System.Threading.Tasks;
using System.IO;
using System.Collections.Generic;
using Azure;
// </Model_dependencies>
// <Query_dependencies>
using System.Text.Json;
// </Query_dependencies>

namespace DigitalTwins_Samples
{
    class DigitalTwinsClientAppSample
    {
        // <Async_signature>
        static async Task Main(string[] args)
        {
        // </Async_signature>
            Console.WriteLine("Hello World!");
            // <Authentication_code>
            string adtInstanceUrl = "https://<your-Azure-Digital-Twins-instance-hostName>"; 
            
            var credential = new DefaultAzureCredential();
            var client = new DigitalTwinsClient(new Uri(adtInstanceUrl), credential);
            Console.WriteLine($"Service client created – ready to go");
            // </Authentication_code>

            // <Model_code>
            Console.WriteLine();
            Console.WriteLine("Upload a model");
            string dtdl = File.ReadAllText("SampleModel.json");
            var models = new List<string> { dtdl };

            // Upload the model to the service
            // <Model_try_catch>
            try
            {
                await client.CreateModelsAsync(models);
                Console.WriteLine("Models uploaded to the instance:");
            }
            catch (RequestFailedException e)
            {
                Console.WriteLine($"Upload model error: {e.Status}: {e.Message}");
            }
            // </Model_try_catch>

            // <Print_model>
            // Read a list of models back from the service
            AsyncPageable<DigitalTwinsModelData> modelDataList = client.GetModelsAsync();
            await foreach (DigitalTwinsModelData md in modelDataList)
            {
                Console.WriteLine($"Model: {md.Id}");
            }
            // </Print_model>
            // </Model_code>

            // <Initialize_twins>
            var twinData = new BasicDigitalTwin();
            twinData.Metadata.ModelId = "dtmi:example:SampleModel;1";
            twinData.Contents.Add("data", $"Hello World!");
            
            string prefix = "sampleTwin-";
            for (int i = 0; i < 3; i++)
            {
                try
                {
                    twinData.Id = $"{prefix}{i}";
                    await client.CreateOrReplaceDigitalTwinAsync<BasicDigitalTwin>(twinData.Id, twinData);
                    Console.WriteLine($"Created twin: {twinData.Id}");
                }
                catch(RequestFailedException e)
                {
                    Console.WriteLine($"Create twin error: {e.Status}: {e.Message}");
                }
            }
            // </Initialize_twins>

            // <Use_create_relationship>
            // Connect the twins with relationships
            await CreateRelationshipAsync(client, "sampleTwin-0", "sampleTwin-1");
            await CreateRelationshipAsync(client, "sampleTwin-0", "sampleTwin-2");
            // </Use_create_relationship>

            // <Use_list_relationships>
            //List the relationships
            await ListRelationshipsAsync(client, "sampleTwin-0");
            // </Use_list_relationships>

            // <Query_twins>
            // Run a query for all twins
            string query = "SELECT * FROM digitaltwins";
            AsyncPageable<BasicDigitalTwin> queryResult = client.QueryAsync<BasicDigitalTwin>(query);
            
            await foreach (BasicDigitalTwin twin in queryResult)
            {
                Console.WriteLine(JsonSerializer.Serialize(twin));
                Console.WriteLine("---------------");
            }
            // </Query_twins>
        }

        // <Create_relationship>
        public async static Task CreateRelationshipAsync(DigitalTwinsClient client, string srcId, string targetId)
        {
            var relationship = new BasicRelationship
            {
                TargetId = targetId,
                Name = "contains"
            };
        
            try
            {
                string relId = $"{srcId}-contains->{targetId}";
                await client.CreateOrReplaceRelationshipAsync(srcId, relId, relationship);
                Console.WriteLine("Created relationship successfully");
            }
            catch (RequestFailedException e)
            {
                Console.WriteLine($"Create relationship error: {e.Status}: {e.Message}");
            }
        }
        // </Create_relationship>
        
        // <List_relationships>
        public async static Task ListRelationshipsAsync(DigitalTwinsClient client, string srcId)
        {
            try
            {
                AsyncPageable<BasicRelationship> results = client.GetRelationshipsAsync<BasicRelationship>(srcId);
                Console.WriteLine($"Twin {srcId} is connected to:");
                await foreach (BasicRelationship rel in results)
                {
                    Console.WriteLine($" -{rel.Name}->{rel.TargetId}");
                }
            }
            catch (RequestFailedException e)
            {
                Console.WriteLine($"Relationship retrieval error: {e.Status}: {e.Message}");
            }
        }
        // </List_relationships>
    }
}

Membersihkan sumber daya

Setelah menyelesaikan tutorial ini, Anda dapat memilih sumber daya mana yang ingin Anda hapus, tergantung pada apa yang ingin Anda lakukan selanjutnya.

  • Jika Anda berencana untuk melanjutkan ke tutorial berikutnya, instans yang digunakan dalam tutorial ini dapat digunakan kembali di tutorial berikutnya. Anda dapat menyimpan sumber daya Azure Digital Twins yang Anda siapkan di sini dan melewati sisa bagian ini.
  • Jika Anda ingin terus menggunakan instans Azure Digital Twins dari artikel ini, tetapi menghapus semua model, kembar, dan hubungannya, jalankan perintah CLI penghapusan pekerjaan az dt berikut:

    az dt job deletion create -n <name-of-Azure-Digital-Twins-instance> -y
    

    Jika Anda hanya ingin menghapus beberapa elemen ini, Anda dapat menggunakan perintah az dt twin relationship delete, az dt twin delete, dan az dt model delete untuk secara selektif menghapus elemen yang ingin Anda hapus.

  • Jika Anda tidak memerlukan sumber daya apa pun yang Anda buat dalam tutorial ini, Anda dapat menghapus instans Azure Digital Twins dan semua sumber daya lainnya dari artikel ini dengan perintah az group delete CLI. Ini menghapus semua sumber daya Azure dalam grup sumber daya, serta grup sumber daya itu sendiri.

    Important

    Menghapus grup sumber daya tidak dapat diubah. Grup sumber daya dan semua sumber daya yang terkandung di dalamnya dihapus secara permanen. Pastikan Anda tidak secara tidak sengaja menghapus grup sumber daya atau sumber daya yang salah.

    Buka Azure Cloud Shell atau jendela CLI lokal, dan jalankan perintah berikut untuk menghapus grup sumber daya dan semua yang ada di dalamnya.

    az group delete --name <your-resource-group>
    

Anda mungkin juga ingin menghapus folder proyek dari komputer lokal Anda.

Langkah selanjutnya

Dalam tutorial ini, Anda membuat aplikasi klien konsol .NET dari awal. Anda menulis kode untuk aplikasi klien ini untuk melakukan tindakan dasar pada instans Azure Digital Twins.

Lanjutkan ke tutorial berikutnya untuk menjelajahi hal-hal yang dapat Anda lakukan dengan aplikasi klien sampel seperti itu: