سيناريوهات Azure Functions

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

في كثير من الحالات، فإن الدالة تتكامل مع مجموعة من الخدمات السحابية لتقديم تطبيقات ثرية بالميزات. فيما يلي مجموعة شائعة (ولكن ليس شاملة) من السيناريوهات ل Azure Functions.

حدد لغة التطوير في أعلى المقالة.

معالجة تحميلات الملفات

هناك عدة طرق لاستخدام الدالات لمعالجة الملفات داخل حاوية تخزين كائن ثنائي كبير الحجم أو خارجها. لمعرفة المزيد حول خيارات التشغيل على حاوية كائن ثنائي كبير الحجم، راجع العمل مع الكائنات الثنائية كبيرة الحجم في وثائق أفضل الممارسات.

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

رسم تخطيطي لعملية تحميل ملف باستخدام Azure Functions.

تستخدم البرامج التعليمية التالية مشغل Blob (يستند إلى Event Grid) لمعالجة الملفات في حاوية كائن ثنائي كبير الحجم:

على سبيل المثال، استخدام مشغل كائن ثنائي كبير الحجم مع اشتراك حدث على حاويات الكائن الثنائي كبير الحجم:

[FunctionName("ProcessCatalogData")]
public static async Task Run([BlobTrigger("catalog-uploads/{name}", Source = BlobTriggerSource.EventGrid, Connection = "<NAMED_STORAGE_CONNECTION>")]Stream myCatalogData, string name, ILogger log)
{
    log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myCatalogData.Length} Bytes");

    using (var reader = new StreamReader(myCatalogData))
    {
        var catalogEntry = await reader.ReadLineAsync();
        while(catalogEntry !=null)
        {
            // Process the catalog entry
            // ...

            catalogEntry = await reader.ReadLineAsync();
        }
    }
}

التدفق في الوقت الحقيقي ومعالجة الأحداث

يتم إنشاء الكثير من بيانات تتبع الاستخدام وجمعها من التطبيقات السحابية وأجهزة IoT وأجهزة الشبكات. يمكن ل Azure Functions معالجة تلك البيانات في الوقت الفعلي تقريبا كمسار ساخن، ثم تخزينها في Azure Cosmos DB لاستخدامها في لوحة معلومات التحليلات.

يمكن أن تستخدم وظائفك أيضا مشغلات الأحداث ذات زمن انتقال منخفض، مثل Event Grid، والمخرجات في الوقت الفعلي مثل SignalR لمعالجة البيانات في الوقت الفعلي تقريبا.

رسم تخطيطي لعملية دفق في الوقت الحقيقي باستخدام Azure Functions.

على سبيل المثال، استخدام مشغل مراكز الأحداث للقراءة من مركز أحداث وربط الإخراج للكتابة إلى مركز أحداث بعد تصحيح الأحداث وتحويلها:

[FunctionName("ProcessorFunction")]
public static async Task Run(
    [EventHubTrigger(
        "%Input_EH_Name%",
        Connection = "InputEventHubConnectionString",
        ConsumerGroup = "%Input_EH_ConsumerGroup%")] EventData[] inputMessages,
    [EventHub(
        "%Output_EH_Name%",
        Connection = "OutputEventHubConnectionString")] IAsyncCollector<SensorDataRecord> outputMessages,
    PartitionContext partitionContext,
    ILogger log)
{
    var debatcher = new Debatcher(log);
    var debatchedMessages = await debatcher.Debatch(inputMessages, partitionContext.PartitionId);

    var xformer = new Transformer(log);
    await xformer.Transform(debatchedMessages, partitionContext.PartitionId, outputMessages);
}

التعلم الآلي والذكاء الاصطناعي

بالإضافة إلى معالجة البيانات، يمكن استخدام Azure Functions للاستدلال على النماذج. يتيح ملحق ربط Azure OpenAI دمج ميزات وسلوكيات خدمة Azure OpenAI بسهولة في عمليات تنفيذ التعليمات البرمجية للدالة.

يمكن للوظائف الاتصال بموارد OpenAI لتمكين إكمال النص والدردشة، واستخدام المساعدين، والاستفادة من عمليات التضمين والبحث الدلالي.

قد تستدعي الدالة أيضا نموذج TensorFlow أو خدمات Azure الذكاء الاصطناعي لمعالجة وتصنيف دفق من الصور.

رسم تخطيطي للتعلم الآلي وعملية الذكاء الاصطناعي باستخدام Azure Functions.

تشغيل المهام المجدولة

تمكنك الوظائف من تشغيل التعليمات البرمجية الخاصة بك استنادا إلى جدول cron الذي تحدده.

تحقق من كيفية إنشاء دالة في مدخل Microsoft Azure التي تعمل على جدول زمني.

على سبيل المثال، قد يتم تحليل قاعدة بيانات عملاء الخدمات المالية للإدخالات المكررة كل 15 دقيقة لتجنب الاتصالات المتعددة التي تخرج إلى نفس العميل.

رسم تخطيطي لمهمة مجدولة حيث تقوم الوظيفة بتنظيف قاعدة بيانات كل 15 دقيقة لإلغاء تكرار الإدخالات استنادا إلى منطق العمل.

[FunctionName("TimerTriggerCSharp")]
public static void Run([TimerTrigger("0 */15 * * * *")]TimerInfo myTimer, ILogger log)
{
    if (myTimer.IsPastDue)
    {
        log.LogInformation("Timer is running late!");
    }
    log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");

    // Perform the database deduplication
}

إنشاء واجهة برمجة تطبيقات ويب قابلة للتطوير

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

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

رسم تخطيطي لمعالجة طلب HTTP باستخدام Azure Functions.

على سبيل المثال، راجع ما يلي:

[FunctionName("InsertName")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequest req,
    [CosmosDB(
        databaseName: "my-database",
        collectionName: "my-container",
        ConnectionStringSetting = "CosmosDbConnectionString")]IAsyncCollector<dynamic> documentsOut,
    ILogger log)
{
    string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
    dynamic data = JsonConvert.DeserializeObject(requestBody);
    string name = data?.name;

    if (name == null)
    {
        return new BadRequestObjectResult("Please pass a name in the request body json");
    }

    // Add a JSON document to the output container.
    await documentsOut.AddAsync(new
    {
        // create a random ID
        id = System.Guid.NewGuid().ToString(), 
        name = name
    });

    return new OkResult();
}

إنشاء سير عمل بلا خادم

غالبا ما تكون الوظائف مكون الحساب في مخطط سير عمل بلا خادم، مثل سير عمل Logic Apps. يمكنك أيضا إنشاء تنسيقات طويلة الأمد باستخدام ملحق Durable Functions. لمزيد من المعلومات، راجع نظرة عامة على Durable Functions.

رسم تخطيطي مختلط لسلسلة من مهام سير عمل محددة بلا خادم باستخدام Azure Functions.

الاستجابة لتغييرات قاعدة البيانات

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

رسم تخطيطي لدالة يتم استخدامها للاستجابة لتغييرات قاعدة البيانات.

تأمل الأمثلة التالية:

إنشاء أنظمة رسائل موثوقة

يمكنك استخدام Functions مع خدمات مراسلة Azure لإنشاء حلول مراسلة متقدمة تستند إلى الحدث.

على سبيل المثال، يمكنك استخدام المشغلات في قوائم انتظار Azure Storage كطريقة لربط سلسلة من عمليات تنفيذ الوظائف معا. أو استخدم قوائم انتظار ومشغلات ناقل الخدمة لنظام طلب عبر الإنترنت.

رسم تخطيطي لوظائف Azure في نظام رسائل موثوق به.

توضح المقالة التالية كيفية كتابة الإخراج إلى قائمة انتظار تخزين.

وتظهر هذه المقالات كيفية التشغيل من قائمة انتظار أو موضوع ناقل خدمة Azure.

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