البرنامج التعليمي: استخدام التكوين الديناميكي في تطبيق وظائف Azure

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

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

  • قم بإعداد تطبيق وظائف Azure لتحديث تكوينه استجابة للتغييرات في متجر تكوين التطبيقات.
  • قم بإدخال أحدث التكوينات إلى مكالمات Azure Functions.

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

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

تدعم وظائف Azure تشغيل قيد المعالجة أو عملية معزولة. الفرق الرئيسي في استخدام App Configuration بين الوضعين هو كيفية تحديث التكوين. في الوضع قيد المعالجة، يجب إجراء استدعاء في كل وظيفة لتحديث التكوين. في وضع العملية المعزولة، هناك دعم للبرامج الوسيطة. يمكن البرنامج الوسيط App Configuration، Microsoft.Azure.AppConfiguration.Functions.Worker، استدعاء تحديث التكوين تلقائيًا قبل تنفيذ كل وظيفة.

  1. حدث التعليمات البرمجية التي تتصل بـ App Configuration وأضف شروط تحديث البيانات.

    افتح Startup.cs، وقم بتحديث ConfigureAppConfiguration الأسلوب.

    public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder)
    {
        builder.ConfigurationBuilder.AddAzureAppConfiguration(options =>
        {
            options.Connect(Environment.GetEnvironmentVariable("ConnectionString"))
                    // Load all keys that start with `TestApp:` and have no label
                    .Select("TestApp:*")
                    // Configure to reload configuration if the registered sentinel key is modified
                    .ConfigureRefresh(refreshOptions =>
                        refreshOptions.Register("TestApp:Settings:Sentinel", refreshAll: true));
        });
    }
    

    يقوم الأسلوب ConfigureRefresh بتسجيل إعداد ليتم التحقق من التغييرات عند تشغيل تحديث داخل التطبيق. ترشد refreshAll المعلمة موفر App Configuration لإعادة تحميل التكوين بأكمله كلما تم الكشف عن تغيير في الإعداد المسجل.

    جميع الإعدادات المسجلة للتحديث لها صلاحية افتراضية لذاكرة التخزين المؤقت تبلغ 30 ثانية قبل محاولة تحديث جديد. يمكن تحديثه عن طريق استدعاء AzureAppConfigurationRefreshOptions.SetCacheExpiration الأسلوب .

    تلميح

    عندما تقوم بتحديث قيم مفاتيح متعددة في App Configuration، فإنك عادة لا تريد أن يعيد تطبيقك تحميل التكوين قبل إجراء كافة التغييرات. يمكنك تسجيل مفتاح sentinel وتحديثه فقط عند اكتمال كافة تغييرات التكوين الأخرى. يساعد هذا على ضمان تناسق التكوين في التطبيق الخاص بك.

    يمكنك أيضًا القيام بما يلي لتقليل مخاطر التناقضات:

    • صمم التطبيق الخاص بك ليكون مقبولاً في حالة عدم اتساق التكوين العابر
    • قم بتهيئة طلبك قبل تقديمه عبر الإنترنت (طلبات التقديم)
    • تنفيذ التكوين الافتراضي في التطبيق الخاص بك واستخدامه عند فشل التحقق من صحة التكوين
    • اختر إستراتيجية تحديث التكوين التي تقلل من التأثير على تطبيقك، على سبيل المثال، انخفاض توقيت نسبة استخدام الشبكة.
  1. Configure قم بتحديث الأسلوب لجعل خدمات Azure App Configuration متاحة من خلال إدخال التبعية.

    public override void Configure(IFunctionsHostBuilder builder)
    {
        builder.Services.AddAzureAppConfiguration();
    }
    
  2. افتح Function1.cs، وأضف مساحات الأسماء التالية.

    using System.Linq;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    

    قم بتحديث الدالة الإنشائية للحصول على مثيل من IConfigurationRefresherProvider خلال حقن التبعية، والتي يمكنك من خلالها الحصول على مثيل IConfigurationRefresher.

    private readonly IConfiguration _configuration;
    private readonly IConfigurationRefresher _configurationRefresher;
    
    public Function1(IConfiguration configuration, IConfigurationRefresherProvider refresherProvider)
    {
        _configuration = configuration;
        _configurationRefresher = refresherProvider.Refreshers.First();
    }
    
  3. Run قم بتحديث الأسلوب والإشارة لتحديث التكوين باستخدام TryRefreshAsync الأسلوب في بداية استدعاء Functions. ستكون حالة عدم التشغيل إذا لم يتم الوصول إلى نافذة وقت انتهاء صلاحية ذاكرة التخزين المؤقت. قم بإزالة await عامل التشغيل إذا كنت تفضل تحديث التكوين دون حظر استدعاء Functions الحالي. في هذه الحالة، ستحصل استدعاءات Functions اللاحقة على قيمة محدثة.

    public async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log)
    {
        log.LogInformation("C# HTTP trigger function processed a request.");
    
        await _configurationRefresher.TryRefreshAsync(); 
    
        string keyName = "TestApp:Settings:Message";
        string message = _configuration[keyName];
    
        return message != null
            ? (ActionResult)new OkObjectResult(message)
            : new BadRequestObjectResult($"Please create a key-value with the key '{keyName}' in App Configuration.");
    }
    

اختبِر الدالة محليًا

  1. قم بتعيين متغير بيئة يسمى الاتصال ionString، وقم بتعيينه إلى مفتاح الوصول إلى متجر تكوين التطبيق. إذا كنت تستخدم موجه الأوامر Windows، فشغل الأمر التالي، ثم أعد تشغيل موجه الأوامر للسماح للتغيير بتنفيذ الأمر:

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

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

    $Env:ConnectionString = "connection-string-of-your-app-configuration-store"
    

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

    export ConnectionString='connection-string-of-your-app-configuration-store'
    
  2. لاختبار الوظيفة الخاصة بك، اضغط F5. إذا طُلب منك ذلك، فاقبل الطلب من Visual Studio لتنزيل وتثبيت أدوات Azure Functions Core (CLI). قد تحتاج أيضًا إلى تمكين استثناء جدار حماية حيث يتسنى للأدوات معالجة طلبات HTTP.

  3. يُرجى نسخ عنوان URL الخاص بدالتك من إخراج وقت التشغيل في Azure Functions.

    Quickstart Function debugging in VS

  4. الصق عنوان URL لطلب HTTP في شريط عنوان المتصفح لديك. تظهر الصورة التالية الاستجابة في المستعرض لطلب GET المحلي الذي تم إرجاعه بواسطة الدالة.

    Quickstart Function launch local

  5. قم بتسجيل الدخول إلى بوابة Azure. حدد All resources، وحدد App Configuration store الذي أنشأته في التشغيل السريع.

  6. حدد مستكشف التكوين، وقم بتحديث قيمة المفتاح التالي:

    مفتاح القيمة
    TestApp:الإعدادات:رسالة بيانات من تكوين تطبيق Azure - مُحدَّثة

    ثم قم بإنشاء المفتاح الحارس، أو تعديل قيمته إذا كان موجودًا بالفعل، على سبيل المثال،

    مفتاح القيمة
    TestApp: الإعدادات: Sentinel v1
  7. قم بتحديث المتصفح عدة مرات. عند انتهاء صلاحية الإعداد المخزن مؤقتًا بعد 30 ثانية، تظهر الصفحة استجابة استدعاء دالات بقيمة محدثة.

    Quickstart Function refresh local

إشعار

يمكن تنزيل مثال التعليمات البرمجية المستخدمة في هذا البرنامج التعليمي من مستودع GitHub لتكوين التطبيق.

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

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

هام

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

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

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

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

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