ربط إدخال حالة Dapr لوظائف Azure

يسمح لك ربط إدخال حالة Dapr بقراءة حالة Dapr أثناء تنفيذ دالة.

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

مثال

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

نموذج التنفيذ ‏‏الوصف
نموذج عامل معزول تعمل تعليمة دالتك البرمجية في عملية عامل .NET منفصلة. استخدم مع الإصدارات المدعومة من .NET و.NET Framework. لمعرفة المزيد، راجع تطوير وظائف معالجة العامل المعزولة .NET.
نموذج قيد المعالجة تعمل تعليمة دالتك البرمجية في نفس العملية مثل عملية مضيف الدالات. يدعم إصدارات الدعم طويل الأجل (LTS) فقط من .NET. لمعرفة المزيد، راجع تطوير وظائف مكتبة فئة .NET.
[FunctionName("StateInputBinding")]
public static IActionResult Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", Route = "state/{key}")] HttpRequest req,
    [DaprState("statestore", Key = "{key}")] string state,
    ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");

    return new OkObjectResult(state);
}

ينشئ المثال التالي دالة "RetreveOrder" باستخدام DaprStateInput الربط مع DaprServiceInvocationTrigger:

@FunctionName("RetrieveOrder")
public String run(
        @DaprServiceInvocationTrigger(
            methodName = "RetrieveOrder") 
        String payload,
        @DaprStateInput(
            stateStore = "%StateStoreName%",
            key = "order")
        String product,
        final ExecutionContext context)

في المثال التالي، تتم إضافة ربط إدخال استدعاء Dapr ك extraInput وإقرانه بمشغل HTTP، والذي تم تسجيله بواسطة app الكائن:

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

app.generic('StateInputBinding', {
    trigger: trigger.generic({
        type: 'httpTrigger',
        authLevel: 'anonymous',
        methods: ['GET'],
        route: "state/{key}",
        name: "req"
    }),
    extraInputs: [daprStateInput],
    handler: async (request, context) => {
        context.log("Node HTTP trigger function processed a request.");

        const daprStateInputValue = context.extraInputs.get(daprStateInput);
        // print the fetched state value
        context.log(daprStateInputValue);

        return daprStateInputValue;
    }
});

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

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

{
  "bindings": 
    {
      "type": "daprState",
      "direction": "in",
      "key": "order",
      "stateStore": "%StateStoreName%",
      "name": "order"
    }
}

لمزيد من المعلومات حول خصائص الملف 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, $order
)

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

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

Write-Host "$jsonString"

يوضح المثال التالي ربط إدخال حالة Dapr، والذي يستخدم نموذج برمجة v2 Python. لاستخدام daprState الربط جنبا إلى جنب مع في التعليمات البرمجية 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)

السمات

في النموذج قيد المعالجة، استخدم DaprState لقراءة حالة Dapr في الدالة الخاصة بك، والتي تدعم هذه المعلمات:

المعلمة ‏‏الوصف‬
مخزن الولاية اسم مخزن الحالة لاسترداد الحالة.
المفتاح اسم المفتاح المراد استرداده من مخزن الحالة المحدد.

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

DaprStateInput يسمح لك التعليق التوضيحي بقراءة حالة Dapr في وظيفتك.

العنصر الوصف
stateStore اسم مخزن ولاية Dapr.
مفتاح قيمة مفتاح مخزن الحالة.

التكوين

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

الخاصية ‏‏الوصف
stateStore اسم مخزن الولاية.
مفتاح اسم المفتاح المراد استرداده من مخزن الحالة المحدد.

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

خاصية function.json ‏‏الوصف
مفتاح اسم المفتاح المراد استرداده من مخزن الحالة المحدد.
stateStore اسم مخزن الولاية.

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

الخاصية ‏‏الوصف
state_store اسم مخزن الولاية.
مفتاح قيمة المفتاح السري. اسم المفتاح المراد استرداده من مخزن الحالة المحدد.

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

الاستخدام

لاستخدام ربط إدخال حالة Dapr، ابدأ بإعداد مكون مخزن حالة Dapr. يمكنك معرفة المزيد حول المكون الذي يجب استخدامه وكيفية إعداده في وثائق Dapr الرسمية.

لاستخدام daprState في 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.