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 pengenalan pemrograman terhadap layanan Azure Digital Twins, menggunakan SDK Azure Digital Twins untuk .NET (C#). Ini memandu Anda melalui penulisan aplikasi klien konsol C# selangkah demi selangkah, mulai dari awal.

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

Prasyarat

Tutorial ini menggunakan baris perintah untuk pengaturan dan pekerjaan proyek. Dengan demikian, Anda dapat menggunakan editor kode apa pun untuk menjalankan latihan.

Apa yang perlu Anda mulai:

  • Penyunting kode apa pun
  • .NET Core 3.1 pada mesin 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 telah menyelesaikan setiap langkah dengan sukses.

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

Siapkan kredensial Azure lokal

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

Dengan DefaultAzureCredential, sampel akan 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 tersebut.

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 ini, saat menjalankan sampel kode, Anda harus diautentikasi secara otomatis.

Menyiapkan proyek

Setelah Anda siap menggunakan instans Azure Digital Twins, 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).

Navigasi 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 minimal C# untuk konsol:

dotnet new console

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

Tetap buka jendela perintah, karena Anda akan terus menggunakannya di seluruh tutorial.

Selanjuutnya, tambahkan dua dependensi ke proyek Anda yang akan diperlukan untuk bekerja dengan Azure Digital Twins. Yang pertama adalah paket untuk Azure Digital Twins SDK untuk .NET, dan yang 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 akan mulai menulis kode untuk proyek aplikasi baru Anda agar berfungsi dengan Azure Digital Twins. Tindakan yang dibahas meliputi:

  • Autentikasi terhadap layanan
  • Mengunggah model
  • Kesalahan penangkapan
  • Menghapus kembar digital
  • Membuat hubungan
  • Meng-kueri kembar digital

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

Untuk memulai, buka program file.cs penyunting kode apa pun. Anda akan melihat templat kode minimal yang terlihat seperti ini:

Cuplikan layar cuplikan kode sampel di penyunting kode.

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

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

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

Autentikasi 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.

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.

Di jendela perintah Anda, jalankan kode dengan perintah ini:

dotnet run

Perintah ini akan memulihkan dependensi saat pertama kali dijalankan, lalu jalankan program.

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

Catatan

Saat ini ada masalah yang diketahui yang memengaruhi DefaultAzureCredential kelas pembungkus yang dapat 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.

Unggah model

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

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

Di direktori tempat Anda membuat proyek, buat file .json baru yang disebut SampleModel.jsdi. 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 untuk Menyalin jika Lebih Baru atau Salin Selalu. Ini akan memungkinkan Visual Studio untuk menemukan file JSON dengan jalur default saat Anda menjalankan program dengan F5 selama sisa tutorial.

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 baru saja Anda buat ke instans Azure Digital Twins Anda.

Pertama, tambahkan beberapa pernyataan using ke bagian atas file:

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

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

static async Task Main(string[] args)
{

Catatan

Penggunaan async tidak sepenuhnya diperlukan, karena SDK juga menyediakan versi sinkron dari semua panggilan. Tutorial ini praktek menggunakan async.

Selanjutnya muncul sedikit 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 kode dengan perintah ini:

dotnet run

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

Untuk menambahkan pernyataan cetak yang memperlihatkan semua model yang telah 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 akan mengizinkan Anda mengunggah model yang sama dua kali, jadi jika Anda mencoba mengunggah model yang sama lagi, program akan mengeluarkan pengecualian.

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

dotnet run

Program harus mengeluarkan pengecualian. Saat Anda mencoba mengunggah model yang sudah diunggah, layanan mengembalikan kesalahan "bad request" melalui REST API. Akibatnya, SDK klien Azure Digital Twins pada gilirannya akan 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 macet, Anda dapat menambahkan kode pengecualian di sekitar kode unggahan model. Bungkus panggilan klien yang ada await client.CreateModelsAsync(typeList) dalam handel coba/tangkap, 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 akan melihat bahwa Anda mendapatkan kembali detail selengkapnya tentang masalah pengunggahan model, termasuk kode kesalahan yang menyatakan bahwa ModelIdAlreadyExists.

Mulai saat ini, tutorial akan membungkus semua panggilan ke metode layanan di handel coba/tangkap.

Membuat digital twin

Setelah mengunggah model ke Azure Digital Twins, Anda dapat menggunakan definisi model ini untuk membuat digital twins. 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.

Tambahkan kode berikut ke akhir metode untuk membuat Main dan menginisialisasi tiga kembar digital berdasarkan model ini.

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 kode dengan dotnet run. Dalam output, cari pesan cetak yang dibuat oleh sampleTwin-0, sampleTwin-1, dan sampleTwin-2.

Kemudian, jalankan kembali programnya.

Perhatikan bahwa tidak ada kesalahan yang dilontarkan saat kembar dibuat untuk kedua kalinya, meskipun kembar sudah ada setelah putaran pertama. Tidak seperti pembuatan model, penciptaan twin adalah, pada tingkat REST, panggilan PUT dengan semantik upsert. Ini berarti bahwa jika twin sudah ada, upaya untuk membuat twin yang sama lagi hanya akan menggantikan twin aslinya. Tidak ada kesalahan yang dilemparkan.

Buat hubungan

Selanjutnya, Anda dapat membuat hubungan antara twin yang telah Anda buat, untuk menghubungkannya ke dalam grafik twin. Grafik twin 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 metode Main, untuk memanggil metode CreateRelationship 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 kode dengan dotnet run. Dalam output, cari pernyataan cetak yang mengatakan bahwa kedua hubungan berhasil dibuat.

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

Mendaftarkan hubungan

Kode berikutnya yang akan Anda tambahkan memungkinkan Anda melihat daftar hubungan yang telah 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 metode Main untuk memanggil kode ListRelationships:

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

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

Cuplikan layar konsol yang memperlihatkan output program, yang menghasilkan pesan yang mencantumkan hubungan twin.

Kueri kembar digital

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

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

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

using System.Text.Json;

Kemudian, tambahkan kode berikut ke akhir metode Main:

// 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 kode dengan dotnet run. Anda akan melihat semua kembar digital dalam contoh ini dalam output.

Catatan

Setelah mengubah data di grafik Anda, terdapat kemungkinan latensi hingga 10 detik sebelum perubahan tersebut tercermin dalam kueri.

API DigitalTwins mencerminkan perubahan secara langsung, 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 mampu melakukan tindakan dasar terhadap Azure Digital Twins. Sebagai referensi, kode lengkap program di Program.cs dicantumkan di bawah ini:

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 bagian lainnya.
  • 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. Tindakan ini menghapus semua sumber daya Azure dalam grup sumber daya, serta grup sumber daya itu sendiri.

    Penting

    Penghapusan grup sumber daya tidak bisa dipulihkan. Grup sumber daya dan semua sumber daya yang tercakup di dalamnya akan dihapus secara permanen. Pastikan Anda tidak menghapus grup atau sumber daya yang salah secara tidak sengaja.

    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 berikutnya

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 contoh aplikasi klien: