مشاركة عبر


مشغلات وروابط Azure Functions

في هذه المقالة، ستتعرف على المفاهيم عالية المستوى المحيطة بالمشغلات والروابط للوظائف.

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

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

يمكنك مزج الروابط ومطابقتها لتناسب السيناريو المحدد لوظيفتك. الروابط اختيارية ، وقد تحتوي الوظيفة على واحد أو عدة روابط إدخال و / أو إخراج.

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

ضع في اعتبارك الأمثلة التالية لكيفية تنفيذ الوظائف:

سيناريو مثال المشغِّل ربط بيانات الإدخال ربط بيانات الإخراج
تصل رسالة قائمة انتظار جديدة، والتي تقوم بتشغيل وظيفة للكتابة إلى قائمة انتظار أخرى. رتل* بلا رتل*
تقرأ المهمة المجدولة محتويات Azure Blob Storage وتنشئ مستند Azure Cosmos DB جديدا. ⁧⁩عدّاد الوقت⁧⁩ مخزن البيانات الثنائية الكبيرة Azure Cosmos DB
يتم استخدام Azure Event Grid لقراءة صورة من Blob Storage ومستند من Azure Cosmos DB لإرسال بريد إلكتروني. شبكة الأحداث Blob Storage وAzure Cosmos DB SendGrid

* يمثل قوائم انتظار مختلفة.

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

تلميح

لا تتطلب منك Azure Functions استخدام روابط الإدخال والإخراج للاتصال بخدمات Azure. يمكنك دائما إنشاء عميل Azure SDK في التعليمات البرمجية واستخدامه بدلا من ذلك لنقل البيانات. لمزيد من المعلومات، راجع الاتصال بالخدمات.

تعريفات المشغل والربط

يوضح المثال التالي دالة يتم تشغيلها بواسطة HTTP مع ربط إخراج يكتب رسالة إلى قائمة انتظار Azure Storage.

بالنسبة لوظائف مكتبة فئة C#، يمكنك تكوين المشغلات والروابط عن طريق تزيين الأساليب والمعلمات بسمات C#. قد تعتمد السمة المحددة التي تقوم بتطبيقها على نموذج وقت تشغيل C#‎:

يتم تعريف مشغل HTTP (HttpTrigger) على Run الأسلوب لدالة تسمى HttpExample تقوم بإرجاع كائن MultiResponse :

[Function("HttpExample")]
public static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req,
    FunctionContext executionContext)
{

يوضح هذا المثال تعريف الكائن MultiResponse . يعود HttpResponse تعريف الكائن إلى طلب HTTP ويكتب رسالة إلى قائمة انتظار تخزين باستخدام QueueOutput ربط:

public class MultiResponse
{
    [QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
    public string[] Messages { get; set; }
    public HttpResponseData HttpResponse { get; set; }
}

لمزيد من المعلومات، راجع دليل C# لنماذج العمال المعزولين.

تستخدم function.json وظائف البرنامج النصي القديم C # ملف تعريف. لمزيد من المعلومات، راجع مرجع مطور البرنامج النصي Azure Functions C# (.csx).

بالنسبة لوظائف Java، يمكنك تكوين المشغلات والروابط عن طريق التعليق على طرق ومعلمات محددة. يتم تعريف مشغل HTTP (@HttpTrigger) هذا على run طريقة دالة تسمى HttpTriggerQueueOutput. تكتب الدالة إلى قائمة انتظار التخزين التي يحددها التعليق @QueueOutput التوضيحي على المعلمة message :

@FunctionName("HttpExample")
public HttpResponseMessage run(
        @HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) 
        HttpRequestMessage<Optional<String>> request, 
        @QueueOutput(name = "msg", queueName = "outqueue", 
        connection = "AzureWebJobsStorage") OutputBinding<String> msg, 
        final ExecutionContext context) {
    context.getLogger().info("Java HTTP trigger processed a request.");

لمزيد من المعلومات، راجع دليل مطور Java.

تعتمد الطريقة التي تحدد بها المشغلات والروابط لوظائف Node.js على الإصدار المحدد من Node.js ل Azure Functions:

في Node.js الإصدار 4 من Azure Functions، يمكنك تكوين المشغلات والروابط باستخدام الكائنات التي تم تصديرها من الوحدة @azure/functions النمطية. لمزيد من المعلومات، راجع دليل المطور Node.js.

تحدد الطريقة http الموجودة على الكائن المصدر app مشغل HTTP. storageQueue تحدد الطريقة الموجودة output ربط الإخراج على هذا المشغل.

const { app, output } = require('@azure/functions');

const queueOutput = output.storageQueue({
    queueName: 'outqueue',
    connection: 'MyStorageConnectionAppSetting',
});

app.http('httpTrigger1', {
    methods: ['GET', 'POST'],
    authLevel: 'anonymous',
    extraOutputs: [queueOutput],
    handler: async (request, context) => {
        const body = await request.text();
        context.extraOutputs.set(queueOutput, body);
        return { body: 'Created queue item.' };
    },
});

تحدد الطريقة http الموجودة على الكائن المصدر app مشغل HTTP. storageQueue تحدد الطريقة الموجودة output ربط الإخراج على هذا المشغل.

import { app, HttpRequest, HttpResponseInit, InvocationContext, output } from '@azure/functions';

const queueOutput = output.storageQueue({
    queueName: 'outqueue',
    connection: 'MyStorageConnectionAppSetting',
});

export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
    const body = await request.text();
    context.extraOutputs.set(queueOutput, body);
    return { body: 'Created queue item.' };
}

app.http('httpTrigger1', {
    methods: ['GET', 'POST'],
    authLevel: 'anonymous',
    extraOutputs: [queueOutput],
    handler: httpTrigger1,
});

يعرف ملف المثال function.json هذا الدالة:

    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    },
    {
      "type": "queue",
      "direction": "out",
      "name": "msg",
      "queueName": "outqueue",
      "connection": "AzureWebJobsStorage"
    }
  ]
}

لمزيد من المعلومات، راجع دليل مطور PowerShell.

تعتمد الطريقة التي يتم بها تعريف الدالة على إصدار Python ل Azure Functions:

في Python for Azure Functions الإصدار 2، يمكنك تحديد الدالة مباشرة في التعليمات البرمجية باستخدام مصممي الديكور:

app = func.FunctionApp(http_auth_level=func.AuthLevel.ANONYMOUS)

@app.route(route="HttpExample")
@app.queue_output(arg_name="msg", queue_name="outqueue", connection="AzureWebJobsStorage")
def HttpExample(req: func.HttpRequest, msg: func.Out [func.QueueMessage]) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

اعتبارات ملزمة

  • لا تدعم جميع الخدمات روابط الإدخال والإخراج. راجع ملحق الربط الخاص بك للحصول على أمثلة تعليمات برمجية محددة للروابط.

  • التعرف على المشغلات والروابط بشكل مختلف اعتمادًا على لغة التطوير. تأكد من تحديد لغتك في أعلى هذه المقالة.

  • تقتصر أسماء المشغل والربط على الأحرف الأبجدية الرقمية _، والتسطير السفلي.

مهمة إضافة روابط إلى دالة

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

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

ارتباطات البيانات المدعومة

يعرض هذا الجدول الروابط المعتمدة في الإصدارات الرئيسية من وقت تشغيل Azure Functions:

نوع 1.x1 2.x والإصدارات الأحدث2 المشغِّل الإدخال الإخراج
تخزين كائن ثنائي كبير الحجم
Azure Cosmos DB
مستكشف بيانات Azure
عنوان SQL لـ Azure
Dapr4
شبكة الأحداث
مراكز الأحداث
HTTP وخطافات الويب
مركز IoT
Kafka3
تطبيقات الجوّال
بروتوكول سياق النموذج
مراكز الإعلامات
تخزين قائمة الانتظار
ريديس
RabbitMQ3
SendGrid
ناقل الخدمة
خدمة Azure SignalR
تخزين الجدول
المؤقت
Twilio

1سينتهي الدعم للإصدار 1.x من وقت تشغيل Azure Functions في 14 سبتمبر 2026. نوصي بشدة بترحيل تطبيقاتك إلى الإصدار 4.x للحصول على الدعم الكامل.

2 بدءا من وقت تشغيل الإصدار 2.x، يجب تسجيل جميع الروابط باستثناء HTTP والمؤقت راجع تسجيل ملحقات ربط Azure Functions.

3 المشغلات غير مدعومة في خطة الاستهلاك. يتطلب هذا النوع من الربط مشغلات تعتمد على وقت التشغيل.

4 يتم دعم نوع الربط هذا في Kubernetes وAzure IoT Edge والأوضاع الأخرى المستضافة ذاتيا فقط.

للحصول على معلومات حول الروابط قيد المعاينة أو المعتمدة لاستخدام الإنتاج، راجع اللغات المدعومة.

يتم دعم إصدارات معينة من ملحقات الربط فقط أثناء دعم SDK للخدمة الأساسية. تؤثر التغييرات التي يتم إجراؤها على الدعم في إصدار SDK للخدمة الأساسية على دعم الملحق المستهلك.

أمثلة على التعليمات البرمجية للروابط

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

تعتمد التعليمات البرمجية الملزمة ل C# على نموذج العملية المحدد.

الخدمة الأمثلة العينات
مخزن البيانات الثنائية الكبيرة المشغِّل
الادخال
الناتج
الارتباط
Azure Cosmos DB المشغِّل
الادخال
الناتج
الارتباط
Azure Data Explorer ‏(Kusto) الادخال
الناتج
الارتباط
عنوان SQL لـ Azure المشغِّل
الادخال
الناتج
الارتباط
شبكة الأحداث المشغِّل
الناتج
الارتباط
مراكز الأحداث المشغِّل
الناتج
مركز IoT المشغِّل
الناتج
HTTP المشغِّل الارتباط
مخزن قائمة الانتظار المشغِّل
الناتج
الارتباط
RabbitMQ المشغِّل
الناتج
SendGrid الناتج
ناقل الخدمة المشغِّل
الناتج
الارتباط
خدمة Azure SignalR المشغِّل
الادخال
الناتج
مخزن الجداول الادخال
الناتج
⁧⁩عدّاد الوقت⁧⁩ المشغِّل الارتباط
Twilio الناتج الارتباط
الخدمة الأمثلة العينات
مخزن البيانات الثنائية الكبيرة المشغِّل
الادخال
الناتج
الارتباط
Azure Cosmos DB المشغِّل
الادخال
الناتج
الارتباط
Azure Data Explorer ‏(Kusto) الادخال
الناتج
الارتباط
عنوان SQL لـ Azure المشغِّل
الادخال
الناتج
شبكة الأحداث المشغِّل
الناتج
الارتباط
مراكز الأحداث المشغِّل
الناتج
مركز IoT المشغِّل
الناتج
HTTP المشغِّل الارتباط
مخزن قائمة الانتظار المشغِّل
الناتج
الارتباط
RabbitMQ المشغِّل
الناتج
SendGrid الناتج
ناقل الخدمة المشغِّل
الناتج
الارتباط
خدمة Azure SignalR المشغِّل
الادخال
الناتج
مخزن الجداول الادخال
الناتج
⁧⁩عدّاد الوقت⁧⁩ المشغِّل الارتباط
Twilio الناتج
الخدمة الأمثلة العينات
مخزن البيانات الثنائية الكبيرة المشغِّل
الادخال
الناتج
الارتباط
Azure Cosmos DB المشغِّل
الادخال
الناتج
الارتباط
Azure Data Explorer ‏(Kusto) الادخال
الناتج
عنوان SQL لـ Azure المشغِّل
الادخال
الناتج
الارتباط
شبكة الأحداث المشغِّل
الناتج
مراكز الأحداث المشغِّل
الناتج
مركز IoT المشغِّل
الناتج
HTTP المشغِّل الارتباط
مخزن قائمة الانتظار المشغِّل
الناتج
الارتباط
RabbitMQ المشغِّل
الناتج
SendGrid الناتج
ناقل الخدمة المشغِّل
الناتج
الارتباط
خدمة Azure SignalR المشغِّل
الادخال
الناتج
مخزن الجداول الادخال
الناتج
⁧⁩عدّاد الوقت⁧⁩ المشغِّل
Twilio الناتج
الخدمة الأمثلة العينات
مخزن البيانات الثنائية الكبيرة المشغِّل
الادخال
الناتج
Azure Cosmos DB المشغِّل
الادخال
الناتج
عنوان SQL لـ Azure المشغِّل
الادخال
الناتج
شبكة الأحداث المشغِّل
الناتج
مراكز الأحداث المشغِّل
الناتج
مركز IoT المشغِّل
الناتج
HTTP المشغِّل الارتباط
مخزن قائمة الانتظار المشغِّل
الناتج
RabbitMQ المشغِّل
الناتج
SendGrid الناتج
ناقل الخدمة المشغِّل
الناتج
خدمة Azure SignalR المشغِّل
الادخال
الناتج
مخزن الجداول الادخال
الناتج
⁧⁩عدّاد الوقت⁧⁩ المشغِّل
Twilio الناتج

تعتمد التعليمات البرمجية الملزمة ل Python على إصدار طراز Python.

الخدمة الأمثلة العينات
مخزن البيانات الثنائية الكبيرة المشغِّل
الادخال
الناتج
الارتباط
Azure Cosmos DB المشغِّل
الادخال
الناتج
الارتباط
Azure Data Explorer ‏(Kusto) الادخال
الناتج
عنوان SQL لـ Azure المشغِّل
الادخال
الناتج
الارتباط
شبكة الأحداث المشغِّل
الناتج
مراكز الأحداث المشغِّل
الناتج
مركز IoT المشغِّل
الناتج
HTTP المشغِّل الارتباط
مخزن قائمة الانتظار المشغِّل
الناتج
RabbitMQ المشغِّل
الناتج
SendGrid الناتج
ناقل الخدمة المشغِّل
الناتج
الارتباط
خدمة Azure SignalR المشغِّل
الادخال
الناتج
مخزن الجداول الادخال
الناتج
⁧⁩عدّاد الوقت⁧⁩ المشغِّل
Twilio الناتج

روابط بيانات مخصصة

يمكنك إنشاء روابط إدخال وإخراج مخصصة. يجب تأليف الروابط في .NET ، ولكن يمكن استهلاكها من أي لغة مدعومة. لمزيد من المعلومات حول إنشاء روابط مخصصة، راجع إنشاء روابط إدخال وإخراج مخصصة.