البرنامج التعليمي: إنشاء رسم بياني لتوائم Azure الرقمية باستخدام نموذج لتطبيق العميل
في هذا البرنامج التعليمي، سوف تنشيء رسمًا بيانيًا في توائم Azure الرقمية باستخدام نماذج وتوائم وعلاقات. أداة هذا البرنامج التعليمي هي نموذج تطبيق عميل سطر الأوامر للتفاعل مع مثيل توائم Azure الرقمية. تطبيق العميل مشابه لذلك المكتوب في Code a client app.
يمكنك استخدام هذه العينة لتنفيذ الإجراءات الأساسية لتوائم Azure الرقمية مثل تحميل النماذج وإنشاء التوائم وتعديلها وإنشاء علاقات. يمكنك أيضًا إلقاء نظرة على code of the sample للتعرف على واجهات برمجة تطبيقات Azure للتوائم الرقمية، وممارسة تنفيذ أوامرك الخاصة عن طريق تعديل نموذج المشروع كيفما تشاء.
في هذا البرنامج التعليمي، سوف تتعلم...
- نمذجة البيئة
- إنشاء التوائم الرقمية
- إضافة علاقات لتشكيل رسم بياني
- الاستعلام عن الرسم البياني للإجابة عن الأسئلة
المتطلبات الأساسية
قبل البدء في هذا البرنامج التعليمي، ابدأ بهذه المتطلبات الأساسية:
- في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.
- يستخدم هذا البرنامج التعليمي .NET. يمكنك تنزيل أحدث إصدار من .NET SDK لأنظمة أساسية متعددة من تنزيل .NET.
ثم تابع خلال بقية هذا القسم لإعداد المتطلبات الأساسية المتبقية.
الحصول على عينة من الموارد
يتم توجيه البرنامج التعليمي بواسطة نموذج المشروع نهاية إلى نهاية لمنصة Azure Digital Twins المكتوب بلغة C#. احصل على نموذج المشروع على جهازك عن طريق الانتقال إلى نموذج الارتباط، وتحديد الزر Browse code أسفل العنوان.
سينقلك هذا إلى مستودع GitHub للعينات، والتي يمكنك تنزيلها ك .zip عن طريق تحديد الزر Code متبوعا بتنزيل ZIP.
سيؤدي ذلك إلى تنزيل مجلد .zip إلى جهازك ك digital-twins-samples-main.zip. قم بفك ضغط المجلد واستخراج الملفات.
إعداد مثيل Azure Digital Twins
للعمل مع Azure Digital Twins في هذه المقالة، ستحتاج إلى مثيل Azure Digital Twins والأذونات المطلوبة لاستخدامه. إذا كان لديك بالفعل مثيل Azure Digital Twins تم إعداده، يمكنك استخدام هذا المثيل والتخطي إلى القسم التالي. وإلا، فاتبع الإرشادات الموجودة في إعداد نمذجة ومصادقة. تحتوي الإرشادات على معلومات لمساعدتك في التحقق من إكمال كل خطوة بنجاح.
بعد إعداد المثيل الخاص بك، دون اسم مضيف المثيل. يمكنك العثور على اسم المضيف في بوابة Azure.
تكوين نموذج المشروع
بعد ذلك، قم بإعداد تطبيق عميل نموذجي سيتفاعل مع مثيل Azure Digital Twins.
انتقل على جهازك إلى المجلد الذي قمت بتنزيله سابقا من نماذج Azure Digital Twins الشاملة (وقم بفك ضغطه إذا لم تكن قد قمت بذلك بالفعل).
بمجرد دخول المجلد، انتقل إلى digital-twins-samples-main\AdtSampleApp\SampleClientApp وافتح ملف appsettings.json. يحتوي ملف JSON هذا على متغير تكوين ضروري لتشغيل المشروع.
في نص الملف، قم بتغيير instanceUrl
إلى عنوان URL لاسم مضيف مثيل Azure Digital Twins (عن طريق إضافة https:// أمام اسم المضيف، كما هو موضح أدناه).
{
"instanceUrl": "https://<your-Azure-Digital-Twins-instance-host-name>"
}
احفظ الملف وأغلقه.
إعداد بيانات اعتماد Azure المحلية
تستخدم هذه العينة DefaultAzureCredential (جزء من مكتبة Azure.Identity
) لمصادقة المستخدمين مع مثيل Azure Digital Twins عند تشغيله على جهازك المحلي. لمزيد من المعلومات حول الطرق المختلفة التي يمكن لتطبيق العميل مصادقتها باستخدام Azure Digital Twins، راجع كتابة تعليمات برمجية لمصادقة التطبيق.
سيبحث النموذج باستخدام DefaultAzureCredential
عن بيانات اعتماد في بيئتك المحلية، مثل تسجيل الدخول إلى Microsoft Azure في Azure CLI محلي أو في Visual Studio أو Visual Studio Code. ولهذا السبب، يجب تسجيل الدخول محلياً إلى Microsoft Azure من خلال أحد هذه الآليات المخصصة لإعداد بيانات الاعتماد للنموذج.
إذا كنت تستخدم Visual Studio أو Visual Studio Code لتشغيل نماذج التعليمات البرمجية، فتأكد من تسجيل الدخول إلى هذا المحرر بنفس بيانات اعتماد Azure التي تريد استخدامها للوصول إلى مثيل Azure Digital Twins. إذا كنت تستخدم نافذة CLI محلية az login
، فقم بتشغيل الأمر لتسجيل الدخول إلى حساب Azure الخاص بك. بعد ذلك، عند تشغيل نموذج التعليمات البرمجية، يجب أن تتم مصادقتك تلقائيا.
تشغيل مشروع العينة
الآن بعد إعداد التطبيق والمصادقة، افتح نافذة وحدة تحكم محلية ستستخدمها لتشغيل المشروع. انتقل في وحدة التحكم إلى المجلد digital-twins-samples-main\AdtSampleApp\SampleClientApp ، وقم بتشغيل المشروع باستخدام أمر dotnet هذا:
dotnet run
سيبدأ تشغيل المشروع وتنفيذ المصادقة وانتظار أمر.
فيما يلي لقطة شاشة لما تبدو عليه وحدة تحكم المشروع:
تلميح
للحصول على قائمة بكافة الأوامر الممكنة التي يمكنك استخدامها مع هذا المشروع، أدخل help
في وحدة تحكم المشروع واضغط على الإرجاع.
بمجرد التأكد من تشغيل التطبيق بنجاح، يمكنك إيقاف تشغيل المشروع. ستقوم بتشغيله مرة أخرى لاحقا في البرنامج التعليمي.
نمذجة بيئة فعلية بواسطة DTDL
الآن بعد أن تم إعداد مثيل توائم Azure الرقمية والتطبيق النموذجي، يمكنك البدء في إنشاء رسم بياني لسيناريو.
الخطوة الأولى في إنشاء حل توائم Azure الرقمية هي تحديد نماذج توأم لبيئة عملك.
النماذج مشابهة للفئات في لغات البرمجة الموجهة للكائنات؛ إنها قوالب معرفة من قبل المستخدم يمكنك إنشاء مثيل لها لإنشاء توائم رقمية. تتم كتابة نماذج Azure Digital Twins بلغة تشبه JSON تسمى لغة تعريف التوائم الرقمية (DTDL)، وتحدد نوع التوأم من حيث خصائصه وعلاقاته ومكوناته.
إشعار
DTDL يسمح أيضًا لتعريف الأوامر على التوائم الرقمية. ومع ذلك، فالأوامر غير معتمدة حاليًا في خدمة توائم Azure الرقمية.
في مجلد نموذج المشروع الذي قمت بتنزيله سابقا، انتقل إلى المجلد digital-twins-samples-main\AdtSampleApp\SampleClientApp\Models . يحتوي هذا المجلد على عينة من النماذج.
افتح Room.json للتحرير، وقم بإجراء التغييرات التالية على التعليمات البرمجية:
حدّث رقم الإصدار، للإشارة إلى أنك ستوفر إصدار أكثر تحديثاّ من هذا النموذج. يمكنك فعل ذلك عن طريق تغيير 1 في نهاية قيمة
@id
إلى 2. أي رقم أكبر من رقم الإصدار الحالي سيعمل أيضاً.تحرير خاصية. قم بتغيير اسم الخاصية
Humidity
إلى HumidityLevel (أو شيء مختلف إذا كنت تريد ذلك. إذا كنت تستخدم شيئا مختلفا عن HumidityLevel، فتذكر ما استخدمته وتابع استخدام ذلك بدلا من HumidityLevel طوال البرنامج التعليمي).إضافة خاصية. أسفل الخاصية
HumidityLevel
التي تنتهي عند السطر 15، الصق التعليمة البرمجية التالية لإضافة خاصيةRoomName
إلى الغرفة:,{ "@type": "Property", "name": "RoomName", "schema": "string" }
إضافة علاقة. أسفل الخاصية
RoomName
التي أضفتها للتو، الصق التعليمات البرمجية التالية لإضافة القدرة لهذا النوع من التوائم على تشكيلcontains
علاقات مع توائم أخرى:,{ "@type": "Relationship", "name": "contains" }
عند الانتهاء، يجب أن يطابق النموذج المحدث التالي:
{
"@id": "dtmi:example:Room;2",
"@type": "Interface",
"displayName": "Room",
"contents": [
{
"@type": "Property",
"name": "Temperature",
"schema": "double"
},
{
"@type": "Property",
"name": "HumidityLevel",
"schema": "double"
}
,{
"@type": "Property",
"name": "RoomName",
"schema": "string"
}
,{
"@type": "Relationship",
"name": "contains"
}
],
"@context": "dtmi:dtdl:context;3"
}
تأكد من حفظ الملف قبل المتابعة.
تحميل النماذج إلى توائم Azure الرقمية
بعد تصميم النماذج، تحتاج إلى تحميلها إلى مثيل توائم Azure الرقمية الخاص بك. يؤدي القيام بذلك إلى تكوين مثيل خدمة Azure Digital Twins باستخدام مصطلحات مجال مخصص خاص بك. بمجرد انتهائك من تحميل النماذج، يمكنك إنشاء مثيلات مزدوجة تستخدمها.
ارجع إلى نافذة وحدة التحكم المفتوحة في المجلد digital-twins-samples-main\AdtSampleApp\SampleClientApp ، ثم قم بتشغيل تطبيق وحدة التحكم مرة أخرى باستخدام
dotnet run
.في نافذة وحدة تحكم المشروع، قم بتشغيل الأمر التالي لتحميل نموذج Room المحدث الخاص بك مع نموذج Floor الذي ستستخدمه أيضاً في القسم التالي لإنشاء أنواع مختلفة من التوائم الرقمية.
CreateModels Room Floor
يجب أن يشير الإخراج إلى أن النماذج قد تم إنشاؤها بنجاح.
تحقق من أن النماذج تم إنشاؤها بواسطة تشغيل الأمر
GetModels true
. سيقوم هذا الأمر بطباعة المعلومات الكاملة لجميع النماذج التي تم تحميلها إلى مثيل Azure Digital Twins. ابحث عن نموذج الغرفة المحررة في النتائج:
حافظ على تشغيل تطبيق وحدة التحكم للخطوات التالية.
Errors
يعالج التطبيق أيضًا الأخطاء من الخدمة.
لاختبار ذلك، أعد تشغيل CreateModels
الأمر لمحاولة إعادة تحميل نموذج الغرفة الذي قمت بتحميله بالفعل:
CreateModels Room
نظرا لتعذر الكتابة فوق النماذج، سيقوم هذا الأمر الآن بإرجاع خطأ خدمة يشير إلى أن بعض معرفات النموذج التي تحاول إنشاؤها موجودة بالفعل.
للحصول على تفاصيل حول كيفية حذف النماذج الموجودة، راجع إدارة نماذج DTDL.
إنشاء التوائم الرقمية
الآن بعد أن تم تحميل بعض النماذج إلى مثيل توائم Azure الرقمية الخاص بك، يمكنك إنشاء digital twins استنادًا إلى تعريفات النموذج. تمثل التوائم الرقمية الكيانات داخل بيئة عملك—أشياء مثل أجهزة الاستشعار في مزرعة أو غرف المبنى أو الأضواء في السيارة.
لإنشاء توأم رقمي، استخدم CreateDigitalTwin
الأمر. يجب أن تشير إلى النموذج الذي يعتمد عليه التوأم، ويمكنك تعريف القيم الأولية لأي خصائص في النموذج بشكل اختياري. ليس عليك تمرير أي معلومات عن العلاقة في هذه المرحلة.
قم بتشغيل هذا الرمز في وحدة تحكم المشروع قيد التشغيل لإنشاء عدة توائم بناءً على نموذج الغرفة الذي قمت بتحديثه مسبقًا ونموذج آخر، Floor. تذكر أن نموذج Room له ثلاث خصائص، لذا يمكنك تقديم وسيطات مع القيم الأولية لهذه الخصائص. (تعد تهيئة قيم الخصائص أمرًا اختياريًا بشكل عام، ولكنها ضرورية لهذا البرنامج التعليمي.)
CreateDigitalTwin dtmi:example:Room;2 room0 RoomName string Room0 Temperature double 70 HumidityLevel double 30 CreateDigitalTwin dtmi:example:Room;2 room1 RoomName string Room1 Temperature double 80 HumidityLevel double 60 CreateDigitalTwin dtmi:example:Floor;1 floor0 CreateDigitalTwin dtmi:example:Floor;1 floor1
يجب أن يشير الناتج من هذه الأوامر إلى أن التوائم قد تم إنشاؤها بنجاح.
يمكنك التحقق من أن التوائم قد تم إنشاؤها عن طريق تشغيل
Query
الأمر. يستعلم هذا الأمر عن مثيل توائم Azure الرقمية الخاص بك لجميع التوائم الرقمية التي يحتوي عليها. ابحث عن توائم room0 و room1 و floor0 و floor1 في النتائج.
إشعار
بعد إجراء تغيير على البيانات في الرسم البياني، قد يكون هناك زمن انتقال مدته 10 ثوان بحد أقصى قبل ظهور التغييرات في الاستعلامات.
يُظهر DigitalTwins API التغييرات على الفور، لذا، إذا كنت بحاجة إلى استجابة فورية، استخدم طلب API(DigitalTwins GetById) أو استدعاء SDK (GetDigitalTwin) للحصول على بيانات مزدوجة بدلاً من استعلام.
تعديل توأم رقمي
يمكنك أيضًا تعديل خصائص التوأم الذي أنشأته.
إشعار
تستخدم واجهة برمجة تطبيقات REST الأساسية تنسيق JSON Patch لتعريف التحديثات على التوأم. يستخدم تطبيق سطر الأوامر هذا التنسيق أيضًا، لإعطاء تجربة أكثر واقعية مع ما تتوقعه واجهات برمجة التطبيقات الأساسية.
قم بتشغيل هذا الأمر لتغيير Room0's RoomName من "Room0" إلى "PresidentialSuite":
UpdateDigitalTwin room0 add /RoomName string PresidentialSuite
يجب أن يشير الناتج إلى أن التوأم قد تم تحديثه بنجاح.
يمكنك التحقق من نجاح التحديث عن طريق تشغيل هذا الأمر للاطلاع على معلومات room0
GetDigitalTwin room0
يجب أن يعكس الإخراج الاسم المحدث.
إنشاء رسم بياني بإضافة علاقات
بعد ذلك، يمكنك إنشاء بعض العلاقات بين هذه التوائم، لتوصيلها في رسم بياني مزدوج. يتم استخدام الرسوم البيانية المزدوجة لتمثيل بيئة بأكملها.
يتم تحديد أنواع العلاقات التي يمكنك إنشاؤها من توأم إلى آخر ضمن النماذج التي قمت بتحميلها مسبقًا. يحدد تعريف نموذج Floor أن الأرضيات يمكن أن يكون لها نوع من العلاقة يسمى contains
، ما يجعل من الممكن إنشاء contains
علاقة -type من كل توأم طابق إلى الغرفة المقابلة التي يحتوي عليها.
لإضافة علاقة، استخدم CreateRelationship
الأمر. حدد التوأم الذي تأتي منه العلاقة ونوع العلاقة والتوأم الذي تتصل به العلاقة. وأخيرًا، امنح العلاقة معرفًا فريدًا.
قم بتشغيل الأوامر التالية لإضافة
contains
علاقة من كل من توائم Floor التي أنشأتها سابقا إلى توأم غرفة مطابق. يتم تسمية العلاقات العلاقة 0 والعلاقة1.CreateRelationship floor0 contains room0 relationship0 CreateRelationship floor1 contains room1 relationship1
تلميح
تم أيضا تعريف العلاقة
contains
في نموذج Floor بخاصيتين لسلسلة، وownershipDepartment
،ownershipUser
بحيث يمكنك أيضا توفير وسيطات مع القيم الأولية لهذه عند إنشاء العلاقات. إليك إصدار بديل من الأمر أعلاه لإنشاء relationship0 يحدد أيضًا القيم الأولية لهذه الخصائص:CreateRelationship floor0 contains room0 relationship0 ownershipUser string MyUser ownershipDepartment string myDepartment
يؤكد الإخراج من هذه الأوامر أن العلاقات قد تم إنشاؤها بنجاح:
يمكنك التحقق من العلاقات باستخدام أي من الأوامر التالية، والتي ستطبع العلاقات في مثيل Azure Digital Twins.
- لمشاهدة جميع العلاقات القادمة من كل طابق (عرض العلاقات من جانب واحد):
GetRelationships floor0 GetRelationships floor1
- لمشاهدة جميع العلاقات التي تصل إلى كل غرفة (عرض العلاقة من الجانب "الآخر"):
GetIncomingRelationships room0 GetIncomingRelationships room1
- للبحث عن هذه العلاقات بشكل فردي، حسب المعرف:
GetRelationship floor0 relationship0 GetRelationship floor1 relationship1
- لمشاهدة جميع العلاقات القادمة من كل طابق (عرض العلاقات من جانب واحد):
تشكل التوائم والعلاقات التي أعددتها في هذا البرنامج التعليمي الرسم البياني التصوري التالي:
استعلم عن الرسم البياني المزدوج للإجابة عن أسئلة البيئة
الميزة الرئيسية لـ Azure Digital Twins هي القدرة على الاستعلام عن الرسم البياني للتوأم بسهولة وكفاءة للإجابة عن الأسئلة حول بيئتك.
إشعار
بعد إجراء تغيير على البيانات في الرسم البياني، قد يكون هناك زمن انتقال مدته 10 ثوان بحد أقصى قبل ظهور التغييرات في الاستعلامات.
يُظهر DigitalTwins API التغييرات على الفور، لذا، إذا كنت بحاجة إلى استجابة فورية، استخدم طلب API(DigitalTwins GetById) أو استدعاء SDK (GetDigitalTwin) للحصول على بيانات مزدوجة بدلاً من استعلام.
قم بتشغيل الأوامر التالية في وحدة تحكم المشروع قيد التشغيل للإجابة على بعض الأسئلة حول بيئة العينة.
ما هي جميع الكيانات من بيئتي ممثلة في توائم Azure الرقمية؟ (الاستعلام عن الكل)
Query
يسمح لك هذا الأمر بتقييم بيئتك في لمحة، والتأكد من تمثيل كل شيء كما تريده داخل Azure Digital Twins. نتيجة هذا الأمر هي إخراج يحتوي على كل توأم رقمي بتفاصيله. فيما يلي جزء:
تلميح
في المشروع العينة، يكون الأمر
Query
بدون أي وسيطات إضافية مكافئًا لـQuery SELECT * FROM DIGITALTWINS
. للاستعلام عن كافة التوائم في المثيل الخاص بك باستخدام واجهات برمجة التطبيقات Query أو أوامر CLI، استخدم الاستعلام الأطول (الكامل).ما هي جميع الغرف في بيئتي؟ (الاستعلام حسب النموذج)
Query SELECT * FROM DIGITALTWINS T WHERE IS_OF_MODEL(T, 'dtmi:example:Room;2')
يمكنك تقييد استعلامك على التوائم من نوع معين، للحصول على معلومات أكثر تحديدًا حول ما يتم تمثيله. تظهر نتيجة هذا room0 و room1، ولكن لا تظهر floor0 أو floor1 (نظرا لأنها أرضيات، وليست غرفا).
ما هي جميع الغرف في الطابق0؟ (الاستعلام حسب العلاقة)
Query SELECT room FROM DIGITALTWINS floor JOIN room RELATED floor.contains where floor.$dtId = 'floor0'
يمكنك الاستعلام بناءً على العلاقات في الرسم البياني الخاص بك، للحصول على معلومات حول كيفية اتصال التوائم أو لتقييد الاستعلام الخاص بك بمنطقة معينة. room0 فقط في floor0، لذلك هي الغرفة الوحيدة في النتيجة.
ما هي جميع التوائم في بيئتي مع درجة حرارة أعلى من 75؟ (الاستعلام حسب الخاصية)
Query SELECT * FROM DigitalTwins T WHERE T.Temperature > 75
يمكنك الاستعلام عن الرسم البياني بناءً على الخصائص للإجابة على أسئلة مختلفة، بما في ذلك البحث عن القيم المتطرفة في بيئتك التي قد تحتاج إلى الاهتمام. كما يتم دعم عوامل تشغيل المقارنة الأخرى ( <,>, =,!=). room1 يظهر في النتائج هنا، لأنه يحتوي على درجة حرارة 80.
ما هي جميع الغرف في floor0 مع درجة حرارة أعلى من 75؟ (استعلام مركب)
Query SELECT room FROM DIGITALTWINS floor JOIN room RELATED floor.contains where floor.$dtId = 'floor0' AND IS_OF_MODEL(room, 'dtmi:example:Room;2') AND room.Temperature > 75
يمكنك أيضًا دمج الاستعلامات السابقة كما تفعل في SQL، باستخدام عوامل تشغيل تركيبة مثل
AND
، وOR
، وNOT
. يستخدم هذا الاستعلامAND
لجعل الاستعلام السابق حول درجات الحرارة المزدوجة أكثر تحديدًا. تتضمن النتيجة الآن فقط الغرف التي تزيد درجة حرارتها عن 75، والتي تقع في floor0—وهي في هذه الحالة ليست أيًا منها. مجموعة النتائج فارغة.
الآن بعد أن قمت بتشغيل العديد من الاستعلامات على السيناريو الذي قمت بإعداده، اكتمل البرنامج التعليمي. توقف عن تشغيل المشروع وأغلق نافذة وحدة التحكم.
تنظيف الموارد
بعد الانتهاء من هذا البرنامج التعليمي، يمكنك اختيار الموارد التي تريد إزالتها، اعتمادًا على ما تريد القيام به بعد ذلك.
إذا كنت تخطط لمتابعة البرنامج التعليمي المقبل، فيمكنك الاحتفاظ بالموارد التي قمت بإعدادها هنا لمواصلة استخدام مثيل توائم Azure الرقمية هذا وتكوين نموذج التطبيق للبرنامج التعليمي المقبل
إذا كنت ترغب في الاستمرار في استخدام مثيل Azure Digital Twins، ولكن مسح جميع نماذجه وتوائمه وعلاقاته، يمكنك استخدام نموذج التطبيق
DeleteAllTwins
والأوامرDeleteAllModels
لمسح التوائم والنماذج في المثيل الخاص بك، على التوالي.
إذا لم تكن بحاجة إلى أي من الموارد التي قمت بإنشائها في هذا البرنامج التعليمي، يمكنك حذف مثيل Azure Digital Twins وجميع الموارد الأخرى من هذه المقالة باستخدام الأمر az group delete CLI. يؤدي هذا إلى حذف جميع موارد Azure الموجودة في مجموعة مورد ما، بالإضافة إلى مجموعة الموارد نفسها.
هام
حذف مجموعة الموارد لا يمكن التراجع عنه. يتم حذف مجموعة الموارد وكافة الموارد المضمنة فيها بشكل دائم. يُرجى التأكد من عدم حذف مجموعة الموارد أو الموارد غير الصحيحة عن طريق الخطأ.
افتح Azure Cloud Shell أو نافذة CLI محلية، ثم قم بتشغيل الأمر التالي لحذف مجموعة الموارد وكل ما تحتوي عليه.
az group delete --name <your-resource-group>
قد تحتاج أيضا إلى حذف مجلد المشروع الذي تم تنزيله من جهازك المحلي.
الخطوات التالية
في هذا البرنامج التعليمي، كنت قد بدأت مع توائم Azure الرقمية عن طريق إنشاء رسم بياني في المثيل الخاص بك باستخدام نموذج تطبيق عميل. لقد قمت بإنشاء نماذج وتوائم رقمية وعلاقات لتشكيل رسم بياني. وقمت أيضًا بتشغيل بعض الاستعلامات على الرسم البياني للحصول على فكرة عن أنواع الأسئلة التي يمكن أن تجيب عنها توائم Azure الرقمية حول البيئة.
تابع البرنامج التعليمي التالي لتكامل Azure Digital Twins مع خدمات Azure الأخرى لإكمال سيناريو شامل يعتمد على البيانات: