مشغل استدعاء خدمة Dapr لوظائف Azure

يمكن تشغيل Azure Functions على استدعاء خدمة Dapr باستخدام أحداث Dapr التالية.

للحصول على معلومات حول تفاصيل الإعداد والتكوين لملحق Dapr، راجع نظرة عامة على ملحق Dapr.

مثال

يمكن إنشاء وظيفة #C باستخدام أحد أوضاع C# التالية:

نموذج التنفيذ ‏‏الوصف
نموذج عامل معزول تعمل تعليمة دالتك البرمجية في عملية عامل .NET منفصلة. استخدم مع الإصدارات المدعومة من .NET و.NET Framework. لمعرفة المزيد، راجع تطوير وظائف معالجة العامل المعزولة .NET.
نموذج قيد المعالجة تعمل تعليمة دالتك البرمجية في نفس العملية مثل عملية مضيف الدالات. يدعم إصدارات الدعم طويل الأجل (LTS) فقط من .NET. لمعرفة المزيد، راجع تطوير وظائف مكتبة فئة .NET.
[FunctionName("CreateNewOrder")]
public static void Run(
    [DaprServiceInvocationTrigger] JObject payload,
    [DaprState("%StateStoreName%", Key = "order")] out JToken order,
    ILogger log)
{
    log.LogInformation("C# function processed a CreateNewOrder request from the Dapr Runtime.");

    // payload must be of the format { "data": { "value": "some value" } }
    order = payload["data"];
}

فيما يلي رمز Java لمشغل استدعاء خدمة Dapr:

@FunctionName("CreateNewOrder")
public String run(
        @DaprServiceInvocationTrigger(
            methodName = "CreateNewOrder") 
)

استخدم الكائن app لتسجيل daprInvokeOutput:

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

app.generic('InvokeOutputBinding', {
    trigger: trigger.generic({
        type: 'httpTrigger',
        authLevel: 'anonymous',
        methods: ['POST'],
        route: "invoke/{appId}/{methodName}",
        name: "req"
    }),
    return: daprInvokeOutput,
    handler: async (request, context) => {
        context.log("Node HTTP trigger function processed a request.");

        const payload = await request.text();
        context.log(JSON.stringify(payload));

        return { body: payload };
    }
});

تظهر الأمثلة التالية مشغلات Dapr في ملف function.json ورمز PowerShell الذي يستخدم هذه الروابط.

فيما يلي ملف function.json ل daprServiceInvocationTrigger:

{
  "bindings": [
    {
      "type": "daprServiceInvocationTrigger",
      "name": "payload",
      "direction": "in"
    }
  ]
}

لمزيد من المعلومات حول خصائص الملف function.json ، راجع قسم التكوين .

في التعليمات البرمجية:

using namespace System
using namespace Microsoft.Azure.WebJobs
using namespace Microsoft.Extensions.Logging
using namespace Microsoft.Azure.WebJobs.Extensions.Dapr
using namespace Newtonsoft.Json.Linq

param (
    $payload
)

# C# function processed a CreateNewOrder request from the Dapr Runtime.
Write-Host "PowerShell function processed a CreateNewOrder request from the Dapr Runtime."

# Payload must be of the format { "data": { "value": "some value" } }

# Convert the object to a JSON-formatted string with ConvertTo-Json
$jsonString = $payload| ConvertTo-Json

# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name order -Value $payload["data"]

يظهر المثال التالي مشغل استدعاء خدمة Dapr، والذي يستخدم نموذج برمجة v2 Python. لاستخدام في التعليمات البرمجية daprServiceInvocationTrigger لتطبيق دالة Python:

import logging
import json
import azure.functions as func

app = func.FunctionApp()

@app.function_name(name="RetrieveOrder")
@app.dapr_service_invocation_trigger(arg_name="payload", method_name="RetrieveOrder")
@app.dapr_state_input(arg_name="data", state_store="statestore", key="order")
def main(payload, data: str) :
    # Function should be invoked with this command: dapr invoke --app-id functionapp --method RetrieveOrder  --data '{}'
    logging.info('Python function processed a RetrieveOrder request from the Dapr Runtime.')
    logging.info(data)

السمات

في النموذج قيد المعالجة، استخدم DaprServiceInvocationTrigger لتشغيل ربط استدعاء خدمة Dapr، والذي يدعم الخصائص التالية.

المعلمة ‏‏الوصف‬
اسم الأسلوب اختياري. اسم الأسلوب الذي يجب أن يستخدمه المتصل Dapr. إذا لم يتم تحديده، يتم استخدام اسم الدالة كاسم الأسلوب.

تعليقات توضيحية

DaprServiceInvocationTrigger يسمح لك التعليق التوضيحي بإنشاء دالة يتم استدعاؤها بواسطة وقت تشغيل Dapr.

العنصر الوصف
اسم الأسلوب اسم الأسلوب.

التكوين

يوضح الجدول التالي خصائص تكوين الربط التي قمت بتعيينها في التعليمات البرمجية.

الخاصية الوصف
النوع يجب تعيينه إلى daprServiceInvocationTrigger.
الاسم اسم المتغير الذي يمثل بيانات Dapr في التعليمات البرمجية للدالة.

يشرح الجدول الآتي خصائص تكوين ربط البيانات التي عليك تعيينها في ملف function.json.

خاصية function.json ‏‏الوصف
النوع يجب تعيينه إلى daprServiceInvocationTrigger.
الاسم اسم المتغير الذي يمثل بيانات Dapr في التعليمات البرمجية للدالة.

يوضح الجدول التالي خصائص تكوين الربط التي @dapp.dapr_service_invocation_trigger قمت بتعيينها في التعليمات البرمجية ل Python.

الخاصية ‏‏الوصف
method_name اسم المتغير الذي يمثل بيانات Dapr.

راجع قسم Example للحصول على أمثلة كاملة.

الاستخدام

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

لاستخدام daprServiceInvocationTrigger في Python v2، قم بإعداد مشروعك باستخدام التبعيات الصحيحة.

  1. إنشاء بيئة ظاهرية وتنشيطها.

  2. في الملف، requirements.text أضف السطر التالي:

    azure-functions==1.18.0b3
    
  3. في المحطة الطرفية، قم بتثبيت مكتبة Python.

    pip install -r .\requirements.txt
    
  4. قم بتعديل الملف الخاص بك local.setting.json بالتكوين التالي:

    "PYTHON_ISOLATE_WORKER_DEPENDENCIES":1
    

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

تعرف على المزيد حول استدعاء خدمة Dapr.