إنشاء مركز إنترنت الأشياء باستخدام موفر الموارد REST API (.NET)

يمكنك استخدام واجهة برمجة تطبيقات REST لمورد موارد IoT Hub لإنشاء موزعات Azure IoT وإدارتها برمجيا. يوضح لك هذا البرنامج التعليمي كيفية استخدام واجهة برمجة تطبيقات REST لمزود موارد IoT Hub لإنشاء مركز إنترنت الأشياء من برنامج C #.

ملاحظة

تستخدم هذه المقالة الوحدة النمطية Azure Az PowerShell، وهي الوحدة النمطية PowerShell الموصى بها للتفاعل مع Azure. لبدء استخدام الوحدة النمطية Az PowerShell، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

لاستكمال هذا البرنامج التعليمي، ستحتاج إلى ما يلي:

الاستعداد لمصادقة طلبات Azure Resource Manager

يجب مصادقة كافة العمليات التي تقوم بها على الموارد باستخدام Azure Resource Manager باستخدام Azure Active Directory (AD). أسهل طريقة لتكوين هذا هي استخدام PowerShell أو Azure CLI.

قم بتثبيت cmdlets Azure PowerShell قبل المتابعة.

توضح الخطوات التالية كيفية إعداد مصادقة كلمة المرور لتطبيق AD باستخدام PowerShell. يمكنك تشغيل هذه الأوامر في جلسة عمل PowerShell قياسية.

  1. سجل الدخول إلى اشتراكك في Azure باستخدام الأمر التالي:

    Connect-AzAccount
    
  2. إذا كان لديك اشتراكات Azure متعددة، فإن تسجيل الدخول إلى Azure يمنحك حق الوصول إلى جميع اشتراكات Azure المقترنة ببيانات الاعتماد الخاصة بك. استخدم الأمر التالي لسرد اشتراكات Azure المتوفرة لك لاستخدامها:

    Get-AzSubscription
    

    استخدم الأمر التالي لتحديد الاشتراك الذي تريد استخدامه لتشغيل الأوامر لإدارة مركز إنترنت الأشياء. يمكنك استخدام اسم الاشتراك، أو معرف ID من إخراج الأمر السابق:

    Select-AzSubscription `
        -SubscriptionName "{your subscription name}"
    
  3. قم بتدوين معرف المستأجر ومعرفالاشتراك. أنت في حاجة إليها لاحقا.

  4. قم بإنشاء تطبيق Azure Active Directory جديد باستخدام الأمر التالي، ليحل محل العناصر النائبة:

    • {اسم العرض}: اسم عرض للتطبيق الخاص بك مثل MySampleApp

    • {عنوان URL للصفحة الرئيسية}: عنوان URL للصفحة الرئيسية لتطبيقك مثل http://mysampleapp/home. لا يحتاج عنوان URL هذا إلى الإشارة إلى تطبيق حقيقي.

    • {معرف التطبيق}: معرف فريد مثل http://mysampleapp. لا يحتاج عنوان URL هذا إلى الإشارة إلى تطبيق حقيقي.

    • {كلمة المرور}: كلمة مرور تستخدمها للمصادقة مع تطبيقك.

      $SecurePassword=ConvertTo-SecureString {password} –asplaintext –force
      New-AzADApplication -DisplayName {Display name} -HomePage {Home page URL} -IdentifierUris {Application identifier} -Password $SecurePassword
      
  5. قم بتدوين ApplicationId الخاص بالتطبيق الذي قمت بإنشائه. أنت بحاجة إلى هذا لاحقا.

  6. قم بإنشاء أصل خدمة جديد باستخدام الأمر التالي، واستبدال {MyApplicationId} ب ApplicationId من الخطوة السابقة:

    New-AzADServicePrincipal -ApplicationId {MyApplicationId}
    
  7. قم بإعداد تعيين دور باستخدام الأمر التالي، واستبدال {MyApplicationId} بمعرفالتطبيق.

    New-AzRoleAssignment -RoleDefinitionName Owner -ServicePrincipalName {MyApplicationId}
    

لقد انتهيت الآن من إنشاء تطبيق Azure AD الذي يمكنك من المصادقة من تطبيق C # المخصص. تحتاج إلى القيم التالية لاحقا في هذا البرنامج التعليمي:

  • TenantID
  • SubscriptionId
  • معرف التطبيق
  • كلمة المرور

قم بإعداد مشروع Visual Studio الخاص بك

  1. في Visual Studio، قم بإنشاء مشروع سطح مكتب Visual C# Windows الكلاسيكي باستخدام قالب مشروع تطبيق وحدة التحكم (.NET Framework). قم بتسمية المشروع CreateIoTHubREST.

  2. في مستكشف الحلول، انقر بزر الماوس الأيمن فوق مشروعك ثم انقر فوق إدارة حزم NuGet.

  3. في NuGet مدير الحِزَم، حدد تضمين الإصدار التجريبي، وعلى صفحة استعراض البحث عن Microsoft.Azure.Management.ResourceManager. حدد الحزمة، انقر فوق تثبيت، في مراجعة التغييرات ، انقر فوق موافق، ثم انقر فوق أوافق لقبول التراخيص.

  4. في مدير الحِزَم NuGet، ابحث عن Microsoft.IdentityModel.Clients.ActiveDirectory. انقر فوق تثبيت، في مراجعة التغييرات، انقر فوق موافق، ثم انقر فوق أوافق لقبول الترخيص.

  5. في البرنامج.cs، استبدل العبارات الموجودة باستخدام التعليمات البرمجية التالية:

    using System;
    using System.Net.Http;
    using System.Net.Http.Headers;
    using System.Text;
    using Microsoft.Azure.Management.ResourceManager;
    using Microsoft.Azure.Management.ResourceManager.Models;
    using Microsoft.IdentityModel.Clients.ActiveDirectory;
    using Newtonsoft.Json;
    using Microsoft.Rest;
    using System.Linq;
    using System.Threading;
    
  6. في البرنامج.cs، أضف المتغيرات الثابتة التالية لتحل محل قيم العناصر النائبة. لقد قمت بتدوين ApplicationID و SubscriptionId و TenantID و Password في وقت سابق من هذا البرنامج التعليمي. اسم مجموعة الموارد هو اسم مجموعة الموارد التي تستخدمها عند إنشاء مركز إنترنت الأشياء. يمكنك استخدام مجموعة موارد موجودة مسبقا أو جديدة. اسم IoT Hub هو اسم IoT Hub الذي تقوم بإنشائه، مثل MyIoTHub. يجب أن يكون اسم مركز إنترنت الأشياء فريدا عالميا. اسم النشر هو اسم للنشر، مثل Deployment_01.

    static string applicationId = "{Your ApplicationId}";
    static string subscriptionId = "{Your SubscriptionId}";
    static string tenantId = "{Your TenantId}";
    static string password = "{Your application Password}";
    
    static string rgName = "{Resource group name}";
    static string iotHubName = "{IoT Hub name including your initials}";
    

    هام

    لأن مركز IoT مُكتشف بشكل عام كنقطة نهاية DNS، يُرجى التأكد من تجنب إدخال أي معلومات تعريف حساسة أو شخصية عند إضافة اسم لها.

الحصول على رمز Azure Resource Manager مميز

يجب أن يقوم Azure Active Directory بمصادقة كافة المهام التي تقوم بتنفيذها على الموارد باستخدام Resource Manager Azure. يستخدم المثال الموضح هنا مصادقة كلمة المرور، للاطلاع على الأساليب الأخرى، راجع مصادقة طلبات Resource Manager Azure.

  1. أضف التعليمة البرمجية التالية إلى الطريقة الرئيسية في البرنامج.cs لاسترداد رمز مميز من Azure AD باستخدام معرف التطبيق وكلمة المرور.

    var authContext = new AuthenticationContext(string.Format  
      ("https://login.microsoftonline.com/{0}", tenantId));
    var credential = new ClientCredential(applicationId, password);
    AuthenticationResult token = authContext.AcquireTokenAsync
      ("https://management.core.windows.net/", credential).Result;
    
    if (token == null)
    {
      Console.WriteLine("Failed to obtain the token");
      return;
    }
    
  2. إنشاء كائن ResourceManagementClient يستخدم الرمز المميز عن طريق إضافة التعليمة البرمجية التالية إلى نهاية الأسلوب الرئيسي :

    var creds = new TokenCredentials(token.AccessToken);
    var client = new ResourceManagementClient(creds);
    client.SubscriptionId = subscriptionId;
    
  3. قم بإنشاء مجموعة الموارد التي تستخدمها أو الحصول على مرجع إليها:

    var rgResponse = client.ResourceGroups.CreateOrUpdate(rgName,
        new ResourceGroup("East US"));
    if (rgResponse.Properties.ProvisioningState != "Succeeded")
    {
      Console.WriteLine("Problem creating resource group");
      return;
    }
    

استخدام واجهة برمجة تطبيقات REST لموفر الموارد لإنشاء مركز إنترنت الأشياء

استخدم واجهة برمجة تطبيقات REST لموفر موارد IoT Hub لإنشاء مركز إنترنت الأشياء في مجموعة الموارد الخاصة بك. يمكنك أيضا استخدام واجهة برمجة تطبيقات REST لموفر الموارد لإجراء تغييرات على مركز إنترنت الأشياء الحالي.

  1. أضف الطريقة التالية إلى البرنامج.cs:

    static void CreateIoTHub(string token)
    {
    
    }
    
  2. قم بإضافة التعليمة البرمجية التالية إلى الأسلوب CreateIoTHub . يقوم هذا الرمز بإنشاء كائن HttpClient مع الرمز المميز للمصادقة في الرؤوس:

    HttpClient client = new HttpClient();
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
    
  3. قم بإضافة التعليمة البرمجية التالية إلى الأسلوب CreateIoTHub . يصف هذا الرمز مركز إنترنت الأشياء لإنشاء تمثيل JSON وإنشائه. للحصول على القائمة الحالية للمواقع التي تدعم IoT Hub، راجع حالة Azure:

    var description = new
    {
      name = iotHubName,
      location = "East US",
      sku = new
      {
        name = "S1",
        tier = "Standard",
        capacity = 1
      }
    };
    
    var json = JsonConvert.SerializeObject(description, Formatting.Indented);
    
  4. قم بإضافة التعليمة البرمجية التالية إلى الأسلوب CreateIoTHub . يرسل هذا الرمز طلب REST إلى Azure. ثم تتحقق التعليمة البرمجية من الاستجابة وتسترد عنوان URL الذي يمكنك استخدامه لمراقبة حالة مهمة النشر:

    var content = new StringContent(JsonConvert.SerializeObject(description), Encoding.UTF8, "application/json");
    var requestUri = string.Format("https://management.azure.com/subscriptions/{0}/resourcegroups/{1}/providers/Microsoft.devices/IotHubs/{2}?api-version=2016-02-03", subscriptionId, rgName, iotHubName);
    var result = client.PutAsync(requestUri, content).Result;
    
    if (!result.IsSuccessStatusCode)
    {
      Console.WriteLine("Failed {0}", result.Content.ReadAsStringAsync().Result);
      return;
    }
    
    var asyncStatusUri = result.Headers.GetValues("Azure-AsyncOperation").First();
    
  5. قم بإضافة التعليمة البرمجية التالية إلى نهاية الأسلوب CreateIoTHub . يستخدم هذا الرمز عنوان asyncStatusUri الذي تم استرداده في الخطوة السابقة لانتظار اكتمال النشر:

    string body;
    do
    {
      Thread.Sleep(10000);
      HttpResponseMessage deploymentstatus = client.GetAsync(asyncStatusUri).Result;
      body = deploymentstatus.Content.ReadAsStringAsync().Result;
    } while (body == "{\"status\":\"Running\"}");
    
  6. قم بإضافة التعليمة البرمجية التالية إلى نهاية الأسلوب CreateIoTHub . يسترد هذا الرمز مفاتيح مركز إنترنت الأشياء الذي قمت بإنشائه ويطبعها على وحدة التحكم:

    var listKeysUri = string.Format("https://management.azure.com/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Devices/IotHubs/{2}/IoTHubKeys/listkeys?api-version=2016-02-03", subscriptionId, rgName, iotHubName);
    var keysresults = client.PostAsync(listKeysUri, null).Result;
    
    Console.WriteLine("Keys: {0}", keysresults.Content.ReadAsStringAsync().Result);
    

إكمال التطبيق وتشغيله

يمكنك الآن إكمال التطبيق عن طريق استدعاء طريقة CreateIoTHub قبل إنشائه وتشغيله.

  1. قم بإضافة التعليمة البرمجية التالية إلى نهاية الأسلوب الرئيسي :

    CreateIoTHub(token.AccessToken);
    Console.ReadLine();
    
  2. انقر فوق إنشاء ثم فوق إنشاء حل. تصحيح أي أخطاء.

  3. انقر فوق تصحيح الأخطاء ثم ابدأ تصحيح الأخطاء لتشغيل التطبيق. قد يستغرق الأمر عدة دقائق لتشغيل النشر.

  4. للتحقق من أن تطبيقك أضاف مركز إنترنت الأشياء الجديد، تفضل بزيارة مدخل Azure واعرض قائمة الموارد. بدلا من ذلك، استخدم cmdlet Get-AzResource PowerShell.

ملاحظة

يضيف تطبيق المثال هذا S1 Standard IoT Hub الذي تتم محاسبتك عليه. عند الانتهاء، يمكنك حذف لوحة وصل إنترنت الأشياء من خلال مدخل Azure أو باستخدام cmdlet Remove-AzResource PowerShell عند الانتهاء.

الخطوات التالية

الآن قمت بنشر مركز إنترنت الأشياء باستخدام واجهة برمجة تطبيقات REST لموفر الموارد ، قد ترغب في استكشاف المزيد:

لمعرفة المزيد حول التطوير ل IoT Hub، راجع المقالات التالية:

لمزيد من استكشاف إمكانات IoT Hub، راجع: