مشاركة عبر


سيناريوهات 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();
        }
    }
}

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

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

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

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

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

[FunctionName("ProcessorFunction")]
public static async Task Run(
    [EventHubTrigger(
        "%Input_EH_Name%",
        Connection = "InputEventHubConnectionSetting",
        ConsumerGroup = "%Input_EH_ConsumerGroup%")] EventData[] inputMessages,
    [EventHub(
        "%Output_EH_Name%",
        Connection = "OutputEventHubConnectionSetting")] 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 لتبسيط إنشاء التطبيقات الذكية المستضافة على السحابة. يمكنك استخدام نموذج برمجة الوظائف لإنشاء واستضافة خوادم بروتوكول محتوى النموذج البعيد (MCP) وتنفيذ أدوات الذكاء الاصطناعي المختلفة. لمزيد من المعلومات، راجع الأدوات وخوادم MCP.

يتيح لك امتداد الربط في Azure OpenAI دمج ميزات وسلوكيات الذكاء الاصطناعي لخدمة Azure OpenAI، مثل توليد السحب المعزز (RAG)، في تنفيذ كود الوظائف الخاص بك. لمزيد من المعلومات، انظر التوليد المعزز بالاسترجاع.

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

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

لمزيد من المعلومات، راجع استخدام أدوات ونماذج الذكاء الاصطناعي في Azure Functions.

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

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

انظر إلى إنشاء دالة في بوابة 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 باستخدام webhook مع 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();
}

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

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

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

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

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

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

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

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

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

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

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

توضح هذه المقالات كيفية التفعيل من طابور أو موضوع حافلة خدمة Azure.

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