Öğretici: Azure Digital Twins SDK'sı ile kodlama
Azure Digital Twins ile çalışan geliştiriciler genellikle Kendi Azure Digital Twins hizmeti örnekleriyle etkileşime yönelik istemci uygulamaları yazar. Bu geliştirici odaklı öğretici, .NET için Azure Digital Twins SDK'sını (C#) kullanarak Azure Digital Twins hizmetine karşı programlamaya giriş sağlar. Sıfırdan başlayarak adım adım bir C# konsol istemci uygulaması yazma işleminde size yol gösterir.
- Projeyi ayarlama
- Proje kodunu kullanmaya başlama
- Tam kod örneği
- Kaynakları temizleme
- Sonraki adımlar
Önkoşullar
Bu Azure Digital Twins öğreticisi, kurulum ve proje çalışması için komut satırını kullanır. Bu nedenle, alıştırmalarda gezinmek için herhangi bir kod düzenleyicisini kullanabilirsiniz.
Başlamak için gerekenler:
- Herhangi bir kod düzenleyicisi
- Geliştirme makinenizde .NET Core 3.1. .NET Core 3.1'i İndir'den birden çok platform için .NET Core SDK'sının bu sürümünü indirebilirsiniz.
Azure Digital Twins örneği hazırlama
Bu makalede Azure Digital Twins ile çalışmak için bir Azure Digital Twins örneğine ve bunu kullanmak için gerekli izinlere sahip olmanız gerekir. Zaten ayarlanmış bir Azure Digital Twins örneğiniz varsa bu örneği kullanabilir ve sonraki bölüme atlayabilirsiniz. Aksi takdirde, Örnek ve kimlik doğrulaması ayarlama başlığındaki yönergeleri izleyin. Yönergeler, her adımı başarıyla tamamladığınızdan emin olmanıza yardımcı olacak bilgiler içerir.
Örneğinizi ayarladıktan sonra, örneğin ana bilgisayar adını not edin. Konak adını Azure portalında bulabilirsiniz.
Yerel Azure kimlik bilgilerini ayarlama
Bu örnek, yerel makinenizde çalıştırdığınızda Azure Digital Twins örneğiyle kullanıcıların kimliğini doğrulamak için DefaultAzureCredential (kitaplığın bir parçasıAzure.Identity
) kullanır. bir istemci uygulamasının Azure Digital Twins ile kimlik doğrulaması yapmanın farklı yolları hakkında daha fazla bilgi için bkz . Uygulama kimlik doğrulama kodu yazma.
ileDefaultAzureCredential
, örnek yerel ortamınızda yerel Azure CLI'da veya Visual Studio ya da Visual Studio Code'da Azure oturumu açma gibi kimlik bilgilerini arar. Bu nedenle, örneğin kimlik bilgilerini ayarlamak için bu mekanizmalardan biriyle Azure'da yerel olarak oturum açmanız gerekir.
Kod örneklerini çalıştırmak için Visual Studio veya Visual Studio Code kullanıyorsanız, Azure Digital Twins örneğine erişmek için kullanmak istediğiniz Azure kimlik bilgileriyle bu düzenleyicide oturum açtığınızdan emin olun. Yerel CLI penceresi kullanıyorsanız Azure hesabınızda oturum açmak için komutunu çalıştırın az login
. Bundan sonra, kod örneğinizi çalıştırdığınızda otomatik olarak kimliğiniz doğrulanmalıdır.
Projeyi ayarlama
Azure Digital Twins örneğinizle çalışmaya hazır olduğunuzda istemci uygulama projesini ayarlamaya başlayın.
Makinenizde bir konsol penceresi açın ve bu öğretici sırasında çalışmanızı depolamak istediğiniz boş bir proje dizini oluşturun. Dizine istediğiniz adı verin (örneğin, DigitalTwinsCodeTutorial).
Yeni dizine gidin.
Proje dizinine girdikten sonra boş bir .NET konsol uygulaması projesi oluşturun. Komut penceresinde aşağıdaki komutu çalıştırarak konsol için en düşük C# projesini oluşturabilirsiniz:
dotnet new console
Bu komut, kodunuzun çoğunu yazdığınız Program.cs adlı bir dosya da dahil olmak üzere dizininizin içinde birkaç dosya oluşturur.
Öğretici boyunca kullanmaya devam ettikçe komut penceresini açık tutun.
Ardından projenize Azure Digital Twins ile çalışmak için gereken iki bağımlılık ekleyin. İlk bağımlılık, .NET için Azure Digital Twins SDK'sının paketidir. İkinci bağımlılık, Azure'da kimlik doğrulamasına yardımcı olacak araçlar sağlar.
dotnet add package Azure.DigitalTwins.Core
dotnet add package Azure.Identity
Proje kodunu kullanmaya başlama
Bu bölümde, yeni uygulama projenizin Azure Digital Twins ile çalışması için kodu yazmaya başlayacaksınız. Kapsanan eylemler şunlardır:
- Hizmette kimlik doğrulaması
- Modeli karşıya yükleme
- Hataları yakalama
- Dijital ikizler oluşturma
- İlişki oluşturma
- Dijital ikizleri sorgulama
Öğreticinin sonunda kodun tamamını gösteren bir bölüm de vardır. Bu bölümü, devam ettikçe programınızı denetlemek için başvuru olarak kullanabilirsiniz.
Başlamak için dosya Program.cs herhangi bir kod düzenleyicisinde açın. Aşağıdakine benzer en küçük bir kod şablonu görürsünüz:
İlk olarak, gerekli bağımlılıkları çekmek için kodun en üstüne bazı using
satırlar ekleyin.
using Azure.DigitalTwins.Core;
using Azure.Identity;
Ardından, bazı işlevleri doldurmak için bu dosyaya kod ekleyebilirsiniz.
Hizmette kimlik doğrulaması
Uygulamanızın yapması gereken ilk şey Azure Digital Twins hizmetinde kimlik doğrulaması yapmaktır. Ardından, SDK işlevlerine erişmek için bir hizmet istemci sınıfı oluşturabilirsiniz.
Kimlik doğrulaması yapmak için Azure Digital Twins örneğinizin ana bilgisayar adına ihtiyacınız vardır.
Program.cs aşağıdaki kodu yöntemindeki "Hello, World!" yazdırma satırının altına yapıştırınMain
.
değerini adtInstanceUrl
Azure Digital Twins örneği ana bilgisayar adı olarak ayarlayın.
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");
Dosyayı kaydedin.
Komut pencerenizde kodu şu komutla çalıştırın:
dotnet run
Bu komut ilk çalıştırmada bağımlılıkları geri yükler ve ardından programı yürütür.
- Hata oluşmazsa, program şunu yazdırır: "Hizmet istemcisi oluşturuldu - kullanıma hazır".
- Bu projede henüz herhangi bir hata işleme olmadığından, herhangi bir sorun varsa kod tarafından bir özel durum oluştuğunı görürsünüz.
Not
Şu anda sarmalayıcı sınıfını DefaultAzureCredential
etkileyen ve kimlik doğrulaması sırasında hataya neden olabilecek bilinen bir sorun vardır. Bu sorunla karşılaşırsanız, çözmek için aşağıdaki isteğe bağlı parametreyle örnek DefaultAzureCredential
oluşturmayı deneyebilirsiniz: new DefaultAzureCredential(new DefaultAzureCredentialOptions { ExcludeSharedTokenCacheCredential = true });
Bu sorun hakkında daha fazla bilgi için bkz . Azure Digital Twins bilinen sorunlar.
Modeli karşıya yükleme
Azure Digital Twins'in iç etki alanı sözlüğü yoktur. Azure Digital Twins'de gösterebileceğiniz ortamınızdaki öğe türlerini tanımlamak için modelleri kullanırsınız. Modeller nesne odaklı programlama dillerindeki sınıflara benzer; dijital ikizlerin daha sonra takip edip örnek oluşturması için kullanıcı tanımlı şablonlar sağlar. Bunlar Digital Twins Tanım Dili (DTDL) adlı JSON benzeri bir dilde yazılır.
Azure Digital Twins çözümü oluşturmanın ilk adımı, DTDL dosyasında en az bir model tanımlamaktır.
Projenizi oluşturduğunuz dizinde SampleModel.json adlı yeni bir .json dosyası oluşturun. Aşağıdaki dosya gövdesine yapıştırın:
{
"@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"
}
İpucu
Bu öğretici için Visual Studio kullanıyorsanız, yeni oluşturulan JSON dosyasını seçip Özellik denetçisindeki Çıkış Dizinine Kopyala özelliğini Daha Yeniyse Kopyala veya Her Zaman Kopyala olarak ayarlamak isteyebilirsiniz. Bu özellik değeri, öğreticinin geri kalanında programı F5 ile çalıştırdığınızda Visual Studio'nun varsayılan yola sahip JSON dosyasını bulmasını sağlar.
İpucu
DTDLParser kitaplığını kullanarak DTDL'nin geçerli olduğundan emin olmak için model belgelerini de kontrol edebilirsiniz. Bu kitaplığı kullanma hakkında daha fazla bilgi için bkz . Modelleri ayrıştırma ve doğrulama.
Ardından, oluşturduğunuz modeli Azure Digital Twins örneğinize yüklemek için Program.cs biraz daha kod ekleyin.
İlk olarak, dosyanın en üstüne birkaç using
deyim ekleyin:
using System.Threading.Tasks;
using System.IO;
using System.Collections.Generic;
using Azure;
Ardından, yöntem imzasını zaman uyumsuz yürütmeye izin verecek şekilde değiştirerek C# hizmet SDK'sında zaman uyumsuz yöntemleri kullanmaya hazırlanın Main
.
static async Task Main(string[] args)
{
Not
async
SDK tüm çağrıların zaman uyumlu sürümlerini de sağladığından, kullanmak kesinlikle gerekli değildir. Bu öğreticide kullanılarak async
kullanılır.
Ardından Azure Digital Twins hizmetiyle etkileşim kuran ilk kod biti gelir. Bu kod, diskinizde oluşturduğunuz DTDL dosyasını yükler ve ardından Azure Digital Twins hizmet örneğine yükler.
Daha önce eklediğiniz yetkilendirme kodunun altına aşağıdaki kodu yapıştırın.
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);
Komut pencerenizde şu komutla programı çalıştırın:
dotnet run
Bu koda ulaşıldığını belirtmek için çıkışta "Modeli karşıya yükleme" yazdırılır. Ancak, karşıya yüklemenin başarılı olup olmadığını belirten bir çıkış henüz yok.
Örneğe başarıyla yüklenen tüm modelleri gösteren bir print deyimi eklemek için, önceki bölümden hemen sonra aşağıdaki kodu ekleyin:
// 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}");
}
Bu yeni kodu test etmek için programı yeniden çalıştırmadan önce, programı en son çalıştırdığınızda modelinizi zaten karşıya yüklediğinizi hatırlayın. Azure Digital Twins aynı modeli iki kez karşıya yüklemenize izin vermez, bu nedenle aynı modeli yeniden karşıya yüklemeye çalışırsanız program bir özel durum oluşturmalıdır.
Bu bilgileri göz önünde bulundurarak, komut pencerenizde şu komutla programı yeniden çalıştırın:
dotnet run
Program bir özel durum oluşturmalıdır. Zaten karşıya yüklenmiş bir modeli karşıya yüklemeyi denediğinizde, hizmet REST API aracılığıyla "hatalı istek" hatası döndürür. Sonuç olarak, Azure Digital Twins istemci SDK'sı başarı dışındaki her hizmet dönüş kodu için bir özel durum oluşturur.
Sonraki bölümde bunun gibi özel durumlar ve bunların kodunuzda nasıl işleneceğini anlatacağız.
Hataları yakalama
Programın kilitlenmesini korumak için modelin karşıya yükleme kodunun çevresine özel durum kodu ekleyebilirsiniz. Var olan istemci çağrısını await client.CreateModelsAsync(typeList)
aşağıdaki gibi bir try/catch işleyicisine sarmalama:
try
{
await client.CreateModelsAsync(models);
Console.WriteLine("Models uploaded to the instance:");
}
catch (RequestFailedException e)
{
Console.WriteLine($"Upload model error: {e.Status}: {e.Message}");
}
Komut pencerenizde ile dotnet run
programı yeniden çalıştırın. Modeli karşıya yükleme sorunu hakkında daha fazla ayrıntı aldığınızı ve bunu ModelIdAlreadyExists
belirten bir hata kodu aldığınızı görürsünüz.
Bu noktadan sonra öğretici, try/catch işleyicilerindeki tüm çağrıları hizmet yöntemlerine sarmalar.
Dijital ikizleri oluşturma
Azure Digital Twins'e bir model yüklediğinize göre bu model tanımını kullanarak dijital ikizler oluşturabilirsiniz. Dijital ikizler bir modelin örnekleridir ve iş ortamınızdaki varlıkları temsil eder; örneğin, bir çiftlikteki algılayıcılar, bir binadaki odalar veya bir arabadaki ışıklar. Bu bölüm, daha önce yüklediğiniz modeli temel alan birkaç dijital ikiz oluşturur.
Bu modeli temel alan üç dijital ikiz oluşturmak ve başlatmak için yönteminin sonuna Main
aşağıdaki kodu ekleyin.
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}");
}
}
Komut pencerenizde programı ile dotnet run
çalıştırın. Çıktıda sampleTwin-0, sampleTwin-1 ve sampleTwin-2'nin oluşturulduğu yazdırma iletilerini arayın.
Ardından programı yeniden çalıştırın.
İlk çalıştırmadan sonra ikizler zaten mevcut olsa bile, ikizler ikinci kez oluşturulduğunda hiçbir hatanın oluşmadığını göreceksiniz. Model oluşturmanın aksine ikiz oluşturma, REST düzeyinde upsert semantiği olan bir PUT çağrısıdır. Bu tür bir REST çağrısının kullanılması, bir ikiz zaten varsa, aynı ikizi yeniden oluşturma girişiminin yalnızca özgün ikizin yerini alma anlamına gelir. Hata oluşmaz.
İlişki oluşturma
Ardından, oluşturduğunuz ikizler arasında ilişkiler oluşturarak bunları bir ikiz grafı içine bağlayabilirsiniz. İkiz grafikler tüm ortamınızı temsil etmek için kullanılır.
sınıfının altına Main
yeni bir statik yöntem Program
ekleyin (kodda artık iki yöntem vardır):
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}");
}
}
Ardından aşağıdaki kodu yönteminin Main
sonuna ekleyerek yöntemini çağırın CreateRelationship
ve az önce yazdığınız kodu kullanın:
// Connect the twins with relationships
await CreateRelationshipAsync(client, "sampleTwin-0", "sampleTwin-1");
await CreateRelationshipAsync(client, "sampleTwin-0", "sampleTwin-2");
Komut pencerenizde programı ile dotnet run
çalıştırın. Çıktıda, iki ilişkinin başarıyla oluşturulduğunu belirten print deyimlerini arayın.
Azure Digital Twins, aynı kimlikle başka bir ilişki zaten varsa ilişki oluşturmanıza izin vermez. Sonuç olarak, programı birden çok kez çalıştırırsanız ilişki oluşturma işleminde özel durumlar görürsünüz. Bu kod özel durumları yakalar ve yoksayar.
Liste ilişkileri
Ekleyeceğiniz bir sonraki kod, oluşturduğunuz ilişkilerin listesini görmenizi sağlar.
Program
sınıfına aşağıdaki yeni yöntemi ekleyin:
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}");
}
}
Ardından aşağıdaki kodu yönteminin Main
sonuna ekleyerek kodu çağırın ListRelationships
:
//List the relationships
await ListRelationshipsAsync(client, "sampleTwin-0");
Komut pencerenizde programı ile dotnet run
çalıştırın. Oluşturduğunuz tüm ilişkilerin listesini aşağıdakine benzer bir çıkış deyiminde görmeniz gerekir:
Dijital ikizleri sorgulama
Azure Digital Twins'in temel özelliklerinden biri, ortamınızla ilgili soruları yanıtlamak için ikiz grafınızı kolayca ve verimli bir şekilde sorgulama olanağıdır.
Bu öğreticide eklenecek kodun son bölümü, Azure Digital Twins örneğine karşı bir sorgu çalıştırır. Bu örnekte kullanılan sorgu, örnekteki tüm dijital ikizleri döndürür.
Dijital ikiz bilgilerinin sunulmasına yardımcı olmak için sınıfının kullanımını JsonSerializer
etkinleştirmek için bu using
deyimi ekleyin:
using System.Text.Json;
Ardından aşağıdaki kodu yönteminin Main
sonuna ekleyin:
// 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("---------------");
}
Komut pencerenizde programı ile dotnet run
çalıştırın. Çıktıda bu örnekteki tüm dijital ikizleri görmeniz gerekir.
Not
Grafiğinizdeki verilerde değişiklik yaptıktan sonra değişikliklerin sorgulara yansıtılması için 10 saniyeye kadar gecikme süresi olabilir.
DigitalTwins API'sinde değişiklikler hemen yansıtılır. Bu nedenle anlık yanıta ihtiyacınız varsa sorgu yerine ikizi veri almak için API isteği (DigitalTwins GetById) veya SDK çağrısı (GetDigitalTwin) kullanın.
Tam kod örneği
Öğreticinin bu noktasında, Azure Digital Twins'e karşı temel eylemler gerçekleştirebilen eksiksiz bir istemci uygulamanız vardır. Başvuru için, aşağıdaki örnekte programın tam kodu Program.cs listelenmiştir:
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>
}
}
Kaynakları temizleme
Bu öğreticiyi tamamladıktan sonra, bundan sonra ne yapmak istediğinize bağlı olarak hangi kaynakları kaldırmak istediğinizi seçebilirsiniz.
- Sonraki öğreticiye devam etmek istiyorsanız, bu öğreticide kullanılan örnek bir sonraki öğreticide yeniden kullanılabilir. Burada ayarladığınız Azure Digital Twins kaynaklarını tutabilir ve bu bölümün geri kalanını atlayabilirsiniz.
Bu makaledeki Azure Digital Twins örneğini kullanmaya devam etmek, ancak tüm modellerini, ikizlerini ve ilişkilerini temizlemek istiyorsanız aşağıdaki az dt job delete CLI komutunu çalıştırın:
az dt job deletion create -n <name-of-Azure-Digital-Twins-instance> -y
Bu öğelerden yalnızca bazılarını silmek istiyorsanız, yalnızca kaldırmak istediğiniz öğeleri seçmeli olarak silmek için az dt twin relationship delete, az dt twin delete ve az dt model delete komutlarını kullanabilirsiniz.
Bu öğreticide oluşturduğunuz kaynaklardan herhangi birine ihtiyacınız yoksa az group delete CLI komutuyla Azure Digital Twins örneğini ve diğer tüm kaynakları bu makaleden silebilirsiniz . Bu işlem, kaynak grubundaki tüm Azure kaynaklarının yanı sıra kaynak grubunun kendisini de siler.
Önemli
Silinen kaynak grupları geri alınamaz. Kaynak grubu ve içindeki tüm kaynaklar kalıcı olarak silinir. Yanlış kaynak grubunu veya kaynakları yanlışlıkla silmediğinizden emin olun.
Azure Cloud Shell'i veya yerel cli penceresini açın ve kaynak grubunu ve içerdiği her şeyi silmek için aşağıdaki komutu çalıştırın.
az group delete --name <your-resource-group>
Proje klasörünü yerel makinenizden de silmek isteyebilirsiniz.
Sonraki adımlar
Bu öğreticide sıfırdan bir .NET konsol istemci uygulaması oluşturdunuz. Azure Digital Twins örneğinde temel eylemleri gerçekleştirmek için bu istemci uygulaması için kod yazdınız.
Bu tür bir örnek istemci uygulamasıyla yapabileceklerini keşfetmek için sonraki öğreticiye geçin: