البرنامج التعليمي: استخدام التكوين الديناميكي في تطبيق .NET Framework

يمكن تحميل البيانات من App Configuration كإعدادات تطبيق في تطبيق .NET Framework. لمزيد من المعلومات، راجع البداية السريعة. ومع ذلك، كما هو مصمم بواسطة .NET Framework، يمكن تحديث إعدادات التطبيق فقط عند إعادة تشغيل التطبيق. إن موفر App Configuration .NET عبارة عن مكتبة قياسية.NET. يدعم التخزين المؤقت وتحديث التكوين بشكل ديناميكي دون إعادة تشغيل التطبيق. يوضح هذا البرنامج التعليمي كيف يمكنك تنفيذ تحديثات التكوين الديناميكية في تطبيق وحدة تحكم .NET Framework.

في هذا البرنامج التعليمي، تتعلم كيفية:

  • إعداد تطبيق .NET Framework لتحديث تكوينه استجابة للتغييرات في متجر تكوين التطبيق.
  • إدخال أحدث تكوين في تطبيقك.

المتطلبات الأساسية

إضافة قيمة مفتاح

أضف قيمة المفتاح التالية إلى متجر App Configuration واترك Label و Content Type بقيمهما الافتراضية. لمزيد من المعلومات حول كيفية إضافة قيم المفاتيح إلى مخزن باستخدام مدخل Microsoft Azure أو CLI، انتقل إلى إنشاء قيمة مفتاح.

مفتاح القيمة
TestApp:الإعدادات:Message البيانات من Azure App Configuration

إنشاء تطبيق وحدة تحكم .NET Framework

  1. افتح Visual Studio، وحدد Create a new project.

  2. في إنشاء مشروع جديد، قم بالتصفية على نوع المشروع من حيث وحدة التحكم وحدد تطبيق وحدة التحكم (.NET Framework) مع C# من قائمة قالب المشروع. اضغط Next.

  3. في تكوين المشروع الجديد،أدخل اسم المشروع. ضمن Framework، حدد .NET Framework 4.7.2 أو أعلى. اضغط على إنشاء.

إعادة تحميل البيانات من App Configuration

  1. حدد بزر الماوس الأيمن على المشروع، وحدد Manage NuGet Packages. في علامة التبويب Browse، ابحث عن أحدث إصدار من حزمة NuGet التالية وقم بإضافته إلى المشروع الخاص بك.

    Microsoft.Extensions.Configuration.AzureAppConfiguration

  2. افتح Program.cs وأضف مساحات الأسماء التالية.

    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    
  3. إضافة متغيرين لتخزين الكائنات المرتبطة بالتكوين.

    private static IConfiguration _configuration;
    private static IConfigurationRefresher _refresher;
    
  4. تحديث Main الأسلوب للاتصال بـ App Configuration مع خيارات التحديث المحددة.

    static void Main(string[] args)
    {
        var builder = new ConfigurationBuilder();
        builder.AddAzureAppConfiguration(options =>
        {
            options.Connect(Environment.GetEnvironmentVariable("ConnectionString"))
                    // Load all keys that start with `TestApp:`.
                    .Select("TestApp:*")
                    // Configure to reload the key 'TestApp:Settings:Message' if it is modified.
                    .ConfigureRefresh(refresh =>
                    {
                        refresh.Register("TestApp:Settings:Message")
                               .SetCacheExpiration(TimeSpan.FromSeconds(10));
                    });
    
            _refresher = options.GetRefresher();
        });
    
        _configuration = builder.Build();
        PrintMessage().Wait();
    }
    

    في الأسلوب ConfigureRefresh، يُسجَّل مفتاح داخل متجر إعدادات التطبيق لمراقبة التغييرات. يحتوي الأسلوب Registerعلى معلمة متغير منطقي اختياري يمكن refreshAll استخدامها للإشارة إلى ما إذا كان يجب تحديث كافة قيم الإعدادات إذا تغير المفتاح المسجل. في هذا المثال، سيتم تحديث TestApp:Settings:Message الرئيسي فقط. SetCacheExpirationيحدد الأسلوب الحد الأدنى من الوقت الذي يجب أن ينقضي قبل إجراء طلب جديد إلى App Configuration للتحقق من أي تغييرات في التكوين. في هذا المثال، تجاوزت وقت انتهاء الصلاحية الافتراضي وهو 30 ثانية، مع تحديد وقت قدره 10 ثوانٍ بدلاً من ذلك لأغراض العرض التوضيحي.

  5. أضف أسلوباً يُطلق عليه PrintMessage() يُشغل التحديث لبيانات التكوين من App Configuration.

    private static async Task PrintMessage()
    {
        Console.WriteLine(_configuration["TestApp:Settings:Message"] ?? "Hello world!");
    
        // Wait for the user to press Enter
        Console.ReadLine();
    
        await _refresher.TryRefreshAsync();
        Console.WriteLine(_configuration["TestApp:Settings:Message"] ?? "Hello world!");
    }
    

    استدعاء ConfigureRefresh الأسلوب وحده لن يؤدي إلى تحديث التكوين تلقائياً. تستدعِ الأسلوب TryRefreshAsync من الواجهة IConfigurationRefresherلتشغيل تحديث. هذا التصميم هو لتجنب الطلبات المرسلة إلى App Configuration حتى عندما يكون التطبيق الخاص بك الخاما. يمكنك تضمين الاستدعاء TryRefreshAsync حيث تعتبر تطبيقك نشطًا. على سبيل المثال، يمكن أن يكون عند معالجة رسالة واردة أو ترتيب أو تكرار لمهمة معقدة. ويمكن أيضًا أن يكون في جهاز توقيت إذا كان التطبيق الخاص بك نشطًا في كل وقت. في هذا المثال، تستدعِ TryRefreshAsync عندما تضغط فيها على مفتاح Enter. إذا فشل الاستدعاء TryRefreshAsync لأي سبب، فسيواصل التطبيق استخدام الإعدادات المخزنة مؤقتًا. سيتم إجراء محاولة أخرى عند مرور وقت انتهاء صلاحية ذاكرة التخزين المؤقت المكونة مرة أخرى، ويتم الاستخدام TryRefreshAsync بواسطة طلب جديد إلى التطبيق الخاص بك. يعتبر الاستدعاء TryRefreshAsync غير موجود قبل انقضاء وقت انتهاء صلاحية ذاكرة التخزين المؤقت المكونة، لذا فإن تأثير الأداء الخاص به هو الحد الأدنى.

يوصى بإنشاء التطبيق وتشغيله محليًا

  1. قم بتعيين متغير بيئة باسم ConnectionString إلى سلسلة اتصال المفتاح للقراءة فقط التي تم الحصول عليها أثناء إنشاء مخزن App Configuration.

    إذا كنت تستخدم مطالبة أوامر Windows، فقم بتشغيل الأمر التالي:

    setx ConnectionString "connection-string-of-your-app-configuration-store"
    

    إذا كنت تستخدم Windows PowerShell، فقم بإجراء الأمر التالي:

    $Env:ConnectionString = "connection-string-of-your-app-configuration-store"
    
  2. أعد تشغيل Visual Studio للسماح بتغييرات حيز التنفيذ.

  3. اضغط على Ctrl + F5 لإنشاء تطبيق وحدة التحكم وتشغيله.

    App launch local

  4. في مدخل Azure، انتقل إلى Configuration explorer الخاص بالمتجر الخاص بـ App Configuration، ثم قم بتحديث قيمة المفاتيح التالية.

    مفتاح القيمة
    TestApp:الإعدادات:Message البيانات من Azure App Configuration - محدثة
  5. خطوة للخلف في التطبيق قيد التشغيل، اضغط على مفتاح Enter لتشغيل تحديث وطباعة القيمة المحدثة في موجه الأوامر أو PowerShell window.

    App refresh local

    إشعار

    منذ تعيين وقت انتهاء صلاحية ذاكرة التخزين المؤقت إلى 10 ثوانٍ باستخدام SetCacheExpiration الأسلوب أثناء تحديد التكوين لعملية التحديث، تُحدَث قيمة إعداد التكوين فقط إذا انقضت 10 ثوان على الأقل منذ التحديث الأخير لهذا الإعداد.

تنظيف الموارد

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

هام

حذف مجموعة الموارد لا يمكن التراجع عنه. يتم حذف مجموعة الموارد وجميع الموارد المضمنة فيها نهائيًا. تأكد من عدم حذفك للموارد أو مجموعة المورد الخاطئة عن غير قصد. في حالة إنشاء الموارد لهذه المقالة داخل مجموعة موارد تشتمل على موارد أخرى تريد الاحتفاظ بها، احذف كل مورد على حدة من الجزء الخاص به بدلًا من حذف مجموعة الموارد.

  1. سجل الدخول إلى مدخل Microsoft Azure، وحدد Resource groups.
  2. في المربع تصفية حسب الاسم ، أدخل اسم مجموعة الموارد الخاصة بك.
  3. في قائمة النتائج، حدد اسم مجموعة الموارد لاستعراض نظرة عامة.
  4. حدد Delete resource group.
  5. يُطلب منك تأكيد حذف مجموعة الموارد. أدخل اسم مجموعة الموارد للتأكيد وحدد "Delete".

بعد بضع لحظات، يتم حذف مجموعة الموارد وكافة مواردها.

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

في هذا البرنامج التعليمي، يمكنك تمكين تطبيق .NET Framework لتحديث إعدادات التكوين بشكل ديناميكي من App Configuration. لمعرفة كيفية تمكين التكوين الديناميكي في تطبيق ويب ASP.NET (.NET Framework)، تابع البرنامج التعليمي التالي:

لمعرفة كيفية استخدام هوية Azure المدارة لتبسيط الوصول إلى تكوين التطبيق، تابع البرنامج التعليمي التالي: