التعليمات البرمجية واختبار وظائف Azure محليًا

كلما أمكن، أنشئ وتحقق من مشروع كود دالات Azure الخاص بك في بيئة تطوير محلية. باستخدام إما دالات Azure Core Tools (v4) أو دالات Azure CLI (v5)، تحصل على نسخة تشغيل محلية من دالات Azure تتكامل مع أدوات التطوير الشهيرة لتطوير متكامل وتصحيح أخطاء ونشر. يمكن لوظائفك المحلية حتى الاتصال بخدمات Azure المباشرة.

توفر هذه المقالة بعض الإرشادات المشتركة للتنمية المحلية، مثل العمل مع ملفlocal.settings.json. وهو يرتبط أيضا بتوجيهات خاصة بالبيئة الإنمائية.

Tip

للحصول على معلومات مفصلة حول كيفية تطوير الوظائف محليا، راجع مقالات الإرشاد الخاصة ببيئة تطوير البيئة المرتبطة بها.

بيئات التطويرالمحلية

طريقة تطوير الوظائف على حاسوبك المحلي تعتمد على تفضيلاتك في اللغة والأدوات. اختر لغتك المفضلة في أعلى المقال.

Tip

يعتمد كل التطوير المحلي على وقت التشغيل المحلي دالات Azure والأدوات (func CLI) لتوفير مضيف الدوال لتصحيح الأخطاء في بيئة محلية.

استخدم هذه البيئات التنموية لبرمجة الوظائف محليا بلغتك المفضلة:

Environment Description
استوديو مرئي يتم تضمين أدوات دالات Azure في حمل عمل تطوير Azure في Visual Studio. يمكنك ترجمة ونشر كود وظائف C# الخاص بك على Azure كمكتبة فئات .NET. يتضمن الأدوات الأساسية للاختبار المحلي. لمعرفة المزيد، راجع إنشاء أول وظيفة C# في Azure باستخدام Visual Studio.
تعليمة Visual Studio برمجية يضيف ملحق دالات Azure ل تعليمة Visual Studio برمجية دعم الوظائف إلى تعليمة Visual Studio برمجية. يتطلب الأدوات الأساسية. يدعم التطوير على Linux وmacOS وWindows. لمعرفة المزيد، راجع إنشاء أول وظيفة باستخدام تعليمة Visual Studio برمجية.
موجه الأوامر أو المحطة الطرفية يوفر دالات Azure وقت تشغيل محلي وأدوات تمكن التطوير المحلي. يدعم التطوير على Linux وmacOS وWindows. لمعرفة المزيد، راجع إنشاء دالة C# في Azure من سطر الأوامر.
Environment Description
Maven يستخدم نموذج Maven الأصلي Core Tools لتمكين تطوير وظائف Java. يدعم التطوير على Linux وmacOS وWindows. لمعرفة المزيد، راجع إنشاء دالتك الأولى باستخدام Java وMaven.
تعليمة Visual Studio برمجية يضيف ملحق دالات Azure ل تعليمة Visual Studio برمجية دعم الوظائف إلى تعليمة Visual Studio برمجية. يتطلب الأدوات الأساسية. يدعم التطوير على Linux وmacOS وWindows. لمعرفة المزيد، راجع إنشاء أول وظيفة باستخدام تعليمة Visual Studio برمجية.
فكرة IntelliJ يتيح لك النموذج الأصلي ل Maven و Core Tools تطوير وظائفك باستخدام IntelliJ. لمزيد من المعلومات، راجع إنشاء أول دالة Java في Azure باستخدام IntelliJ.
Eclipse يتيح لك النموذج الأصلي ل Maven و Core Tools تطوير وظائفك باستخدام Eclipse. لمعرفة المزيد، راجع إنشاء أول دالة Java في Azure باستخدام Ecplise.
Environment Description
تعليمة Visual Studio برمجية يضيف ملحق دالات Azure ل تعليمة Visual Studio برمجية دعم الوظائف إلى تعليمة Visual Studio برمجية. يتطلب الأدوات الأساسية. يدعم التطوير على Linux وmacOS وWindows. لمعرفة المزيد، راجع إنشاء أول وظيفة باستخدام تعليمة Visual Studio برمجية.
موجه الأوامر أو المحطة الطرفية يوفر دالات Azure وقت تشغيل محلي وأدوات تمكن التطوير المحلي. يدعم التطوير على Linux وmacOS وWindows. لمعرفة المزيد، راجع إنشاء وظيفة Node.js في Azure من سطر الأوامر.
Environment Description
تعليمة Visual Studio برمجية يضيف ملحق دالات Azure ل تعليمة Visual Studio برمجية دعم الوظائف إلى تعليمة Visual Studio برمجية. يتطلب الأدوات الأساسية. يدعم التطوير على Linux وmacOS وWindows. لمعرفة المزيد، راجع إنشاء أول وظيفة باستخدام تعليمة Visual Studio برمجية.
موجه الأوامر أو المحطة الطرفية يوفر دالات Azure وقت تشغيل محلي وأدوات تمكن التطوير المحلي. يدعم التطوير على Linux وmacOS وWindows. لمعرفة المزيد، راجع إنشاء دالة PowerShell في Azure من سطر الأوامر.
Environment Description
تعليمة Visual Studio برمجية يضيف ملحق دالات Azure ل تعليمة Visual Studio برمجية دعم الوظائف إلى تعليمة Visual Studio برمجية. يتطلب الأدوات الأساسية. يدعم التطوير على Linux وmacOS وWindows. لمعرفة المزيد، راجع إنشاء أول وظيفة باستخدام تعليمة Visual Studio برمجية.
موجه الأوامر أو المحطة الطرفية يوفر دالات Azure وقت تشغيل محلي وأدوات تمكن التطوير المحلي. يدعم التطوير على Linux وmacOS وWindows. لمعرفة المزيد، راجع إنشاء دالة Python في Azure من سطر الأوامر.

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

مدة التشغيل المحلية والأدوات

Important

دالات Azure CLI (v5) حاليا قيد المعاينة. هذه النسخة التجريبية لا تدعم بعد Java وPowerShell. للعمل مع لغات غير مدعومة حاليا، استمر في استخدام دالات Azure Core Tools v4.

هناك أداتان لسطر الأوامر تصدران كما func.exe هو الحال في دالات Azure:

أدوات دالات Azure الأساسية دالات Azure CLI
func.exe النسخة v4 v5
مستوى الدعم التوافر العام (GA) معاينة
تثبيت القدم ثنائية كاملة تشمل جميع الأوامر والقدرات لجميع اللغات الأصلية. تثبيت قاعدة صغيرة، بالإضافة إلى أعباء عمل لكل لغة وميزات أخرى تضيفها حسب الحاجة. المضيف يشحن كعبء عمل مستقل، لذا تحصل على أحدث إصدار للمضيف دون الحاجة لإعادة تحميل ملف السطوع.
استخدم عندما... تحتاج إلى دعم كامل لخدمات التطوير لجميع سير العمل في التطوير. تريد تجربة خفيفة تعتمد على عبء العمل مع ميزات جديدة مثل قوالب البدء السريع وملفات تعريف تحافظ على تزامن بيئتك المحلية مع إعدادات خطة استضافة Azure الخاصة بك.

ملفات المشاريع المحلية

يحتوي دليل مشروع Functions على الملفات التالية في المجلد الجذر للمشروع، بغض النظر عن اللغة:

اسم الملف Description
host.json لمعرفة المزيد، راجع ⁧⁩⁧مرجع host.json.
local.settings.json الإعدادات المستخدمة في وقت تشغيل الوظائف المحلية، بما في ذلك إعدادات التطبيق. لمعرفة المزيد، راجع ملف الإعدادات المحلية.
.gitignore يمنع نشر local.settings.js على الملف بطريق الخطأ إلى مستودع Git. لمعرفة المزيد، راجع ملف الإعدادات المحلية.
.vscode\extensions.json إعدادات الملف المستخدم عند فتح مجلد المشروع في تعليمة Visual Studio برمجية.

تعتمد الملفات الأخرى في المشروع على لغتك ووظائف معينة. لمزيد من المعلومات، راجع دليل المطور للغتك.

ملف الإعدادات المحلية

يخزن local.settings.json الملف إعدادات التطبيق وإعداداته التي تستخدمها أدوات التطوير المحلية. استخدم الإعدادات في local.settings.json الملف فقط عند تشغيل مشروعك محليا. عند نشر مشروعك على Azure، أضف أي إعدادات مطلوبة إلى إعدادات التطبيق الخاص بتطبيق الوظائف.

Important

نظرا لأن الملف local.settings.json قد يحتوي على أسرار مثل سلاسل الاتصال، كن حذرا عند الالتزام به في التحكم المصدري. توفر الأدوات التي تدعم الوظائف طرقا لمزامنة الإعدادات في local.settings.json الملف مع إعدادات التطبيق في تطبيق الوظائف الذي تم نشر مشروعك عليه.

يحتوي الملف على local.settings.json هذه البنية:

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "<language worker>",
    "AzureWebJobsStorage": "<connection-string>",
    "MyBindingConnection": "<binding-connection-string>",
    "AzureWebJobs.HttpExample.Disabled": "true"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*",
    "CORSCredentials": false
  },
  "ConnectionStrings": {
    "SQLConnectionString": "<sqlclient-connection-string>"
  }
}

يتم اعتماد هذه الإعدادات عند تشغيل المشاريع محليًا:

Setting Description
IsEncrypted عندما يتم تعيين هذا الإعداد على true، يتم تشفير جميع القيم باستخدام مفتاح آلة محلي. يستخدم مع func settings الأوامر. القيمة الافتراضية هي false. قد ترغب في تشفير الملف المحلي.settings.json على الكمبيوتر المحلي عندما يحتوي على أسرار، مثل سلاسل اتصال الخدمة. يقوم المضيف تلقائيًا بفك تشفير الإعدادات عند تشغيله. func settings decrypt استخدم الأمر قبل محاولة قراءة الإعدادات المشفرة محليا.
Values مجموعة إعدادات التطبيق المستخدمة عند تشغيل مشروع محليًا. تتوافق أزواج قيمة المفتاح هذه (سلسلة سلسلة) مع إعدادات التطبيق في تطبيق الوظائف في Azure، مثل AzureWebJobsStorage. تحتوي العديد من المشغلات والروابط على خاصية تشير إلى إعداد تطبيق سلسلة الاتصال، مثل Connectionمشغل تخزين Blob. لهذه الخصائص، تحتاج إلى إعداد تطبيق معرف في Values الصفيف. راجع الجدول اللاحق للحصول على قائمة بالإعدادات شائعة الاستخدام.
يجب أن تكون القيم سلاسل وليس كائنات JSON أو صفائف. لا يمكن أن تتضمن أسماء الإعدادات تسطيرا مزدوجا (__) ويجب ألا تتضمن نقطتين (:). يتم حجز أحرف التسطير المزدوج حسب وقت التشغيل، ويتم حجز النقطتين لدعم حقن التبعية.
Host تقوم الإعدادات في هذا القسم بتخصيص عملية مضيف الوظائف عند تشغيل المشاريع محليًا. هذه الإعدادات منفصلة عن إعدادات host.json، والتي تنطبق أيضا عند تشغيل المشاريع في Azure.
LocalHttpPort تعيين المنفذ الافتراضي المستخدم عند تشغيل مضيف الوظائف المحلي (func host start و func run). --port يكون لخيار سطر الأوامر الأسبقية على هذا الإعداد. على سبيل المثال، عند تشغيله في بيئة تطوير Visual Studio، يمكنك تغيير رقم المنفذ عن طريق الانتقال إلى نافذة "خصائص المشروع -> تصحيح" وتحديد رقم المنفذ بشكل صريح في أمر host start --port <your-port-number> يمكن توفيره في حقل "موسيط التطبيق".
CORS يحدد الأصول المسموح بها لمشاركة الموارد عبر المنشأ (CORS). يتم توفير الأصول كقائمة مفصولة بفاصلة بدون مسافات. قيمة البدل (*) مدعومة والتي تسمح بالطلبات من أي أصل.
CORSCredentials عند التعيين إلى true، يسمح بالطلبات withCredentials .
ConnectionStrings مجموعة. لا تستخدم هذه المجموعة لسلاسل الاتصال المستخدمة بواسطة روابط الوظيفة. يتم استخدام هذه المجموعة فقط بواسطة الأطر التي تحصل عادة على سلاسل اتصال من ConnectionStrings قسم ملف التكوين، مثل Entity Framework. تتم إضافة سلاسل الاتصال في هذا الكائن إلى البيئة باستخدام نوع الموفر System.Data.SqlClient. لا يتم نشر العناصر الموجودة في هذه المجموعة إلى Azure مع إعدادات التطبيق الأخرى. يجب إضافة هذه القيم بشكل صريح إلى Connection strings مجموعة إعدادات تطبيق الوظائف. إذا كنت تنشئ a SqlConnection في كود الدالة الخاص بك، قم بتخزين قيمة سلسلة الاتصال مع اتصالاتك الأخرى في إعدادات التطبيق في البوابة.

يمكن تضمين إعدادات التطبيق التالية في Values الصفيف عند التشغيل محليا:

Setting Values Description
AzureWebJobsStorage سلسلة اتصال حساب التخزين، أو
UseDevelopmentStorage=true
يحتوي على سلسلة الاتصال لحساب تخزين Azure. مطلوب عند استخدام مشغلات أخرى غير HTTP. لمزيد من المعلومات، راجع AzureWebJobsStorage المرجع.
عندما يكون لديك محاكي أزوريت مثبتا محليا وتضبطه AzureWebJobsStorage على UseDevelopmentStorage=true، يستخدم مضيف الوظائف المحلي المحاكي. لمزيد من المعلومات، راجع محاكي التخزين المحلي.
AzureWebJobs.<FUNCTION_NAME>.Disabled true|false لتعطيل دالة عند التشغيل محليا، أضف "AzureWebJobs.<FUNCTION_NAME>.Disabled": "true" إلى المجموعة، حيث <FUNCTION_NAME> هو اسم الدالة. لمعرفة المزيد، راجع كيفية تعطيل الوظائف في دالات Azure.
FUNCTIONS_WORKER_RUNTIME dotnet
dotnet-isolated
node
java
powershell
python
يشير إلى اللغة المستهدفة من وقت تشغيل الوظائف. مطلوب للإصدار 2.x وأعلى من وقت تشغيل الوظائف. func init الأمر يولد هذا الإعداد لمشروعك. لمعرفة المزيد، راجع FUNCTIONS_WORKER_RUNTIME المرجع.
FUNCTIONS_WORKER_RUNTIME_VERSION ~7 يشير إلى استخدام PowerShell 7 عند التشغيل محليا. إذا لم يتم التعيين، فسيتم استخدام PowerShell Core 6. يتم استخدام هذا الإعداد فقط عند التشغيل محليًا. يتم، عند التشغيل في Azure، تحديد إصدار وقت التشغيل في PowerShell بواسطة إعداد تكوين الموقع powerShellVersion، والذي يمكن تعيينه في المدخل.

لمعرفة كيفية استخدام القيم من المصفوفة values كمتغيرات بيئة في التعليمات البرمجية للدالة ، راجع متغيرات البيئة في دليل المطور.

لمعرفة كيفية استخدام القيم من المصفوفة values كمتغيرات بيئة في التعليمات البرمجية للدالة ، راجع متغيرات البيئة في دليل المطور.

لمعرفة كيفية استخدام القيم من المصفوفة values كمتغيرات بيئة في التعليمات البرمجية للدالة ، راجع متغيرات البيئة في دليل المطور.

لمعرفة كيفية استخدام القيم من المصفوفة values كمتغيرات بيئة في التعليمات البرمجية للدالة ، راجع متغيرات البيئة في دليل المطور.

مزامنة الإعدادات

عندما تطور وظائفك محليا، قم بتضمين أي إعدادات محلية مطلوبة من تطبيقك في إعدادات تطبيق الوظيفة الذي تنشر فيه الكود. قد تحتاج أيضا إلى تنزيل الإعدادات الحالية من تطبيق الوظائف إلى مشروعك المحلي. بينما يمكنك تكوين إعدادات التطبيق يدويا في مدخل Microsoft Azure، تتيح لك الأدوات التالية أيضا مزامنة إعدادات التطبيق مع الإعدادات المحلية في مشروعك:

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

عندما تطور وظائفك محليا، ضع في اعتبارك سلوكيات المحفز والارتباط. بالنسبة لمشغلات HTTP، يمكنك استدعاء نقطة نهاية HTTP على الحاسوب المحلي باستخدام http://localhost/. بالنسبة للوظائف غير التي يتم تفعيلها عبر HTTP، استخدم عدة خيارات للتشغيل محليا:

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

أثناء الاختبار المحلي، يجب تشغيل المضيف الذي توفره وظائف التشغيل المحلية (func.exe) محليا. لمزيد من المعلومات، راجع دالات Azure Core Tools أو دالات Azure CLI.

أدوات اختبار HTTP

أثناء التطوير، يمكنك استدعاء أي من نقاط نهاية الوظائف الخاصة بك من متصفح ويب عندما تدعم طريقة HTTP GET. ومع ذلك، بالنسبة لأساليب HTTP الأخرى التي تدعم الحمولات، مثل POST أو PUT، تحتاج إلى استخدام أداة اختبار HTTP لإنشاء طلبات HTTP هذه وإرسالها إلى نقاط نهاية الدالة.

Caution

بالنسبة للسيناريوهات التي يجب أن تتضمن فيها طلباتك بيانات حساسة، تأكد من استخدام أداة تحمي بياناتك وتقلل من خطر تعريض أي بيانات حساسة للجمهور. البيانات الحساسة التي يجب أن تحميها قد تشمل: بيانات الاعتماد، الأسرار، رموز الوصول، مفاتيح واجهة برمجة التطبيقات (API)، بيانات تحديد الموقع الجغرافي، والبيانات الشخصية.

حافظ على أمان بياناتك باختيار أداة اختبار HTTP تعمل إما دون اتصال أو محليا، ولا تزامن بياناتك مع السحابة، ولا تتطلب منك تسجيل الدخول إلى حساب إلكتروني. يمكن لبعض الأدوات أيضا حماية بياناتك من التعرض العرضي من خلال تنفيذ ميزات أمان محددة.

تجنب استخدام الأدوات التي تخزن محفوظات طلبات HTTP مركزيا (بما في ذلك المعلومات الحساسة)، أو لا تتبع أفضل ممارسات الأمان، أو لا تحترم مخاوف خصوصية البيانات.

ضع في اعتبارك استخدام إحدى هذه الأدوات لإرسال طلبات HTTP بأمان إلى نقاط نهاية الدالة:

محاكي التخزين المحلي

خلال التطوير المحلي، يمكنك استخدام محاكي Azurite المحلي عند اختبار الوظائف باستخدام روابط تخزين Azure (تخزين الطابور، تخزين الكتل، وتخزين الجدول)، دون الحاجة للاتصال بخدمات التخزين البعيدة. يتكامل Azurite مع تعليمة Visual Studio برمجية وVisual Studio، ويمكنك أيضا تشغيله من موجه الأوامر باستخدام npm. لمزيد من المعلومات، راجع استخدام محاكي Azurite لتطوير تخزين Azure المحلي.

يخبر الإعداد التالي في Values مجموعة ملف local.settings.json مضيف الوظائف المحلي باستخدام Azurite للاتصال الافتراضي AzureWebJobsStorage :

"AzureWebJobsStorage": "UseDevelopmentStorage=true"

باستخدام قيمة الإعداد هذه، أي مشغل أو ربط تخزين Azure يستخدم AzureWebJobsStorage في أثناء اتصاله ب Azurite عند التشغيل محليا. ضع هذه الاعتبارات في الاعتبار عند استخدام محاكي التخزين أثناء التنفيذ المحلي:

  • يجب أن يكون لديك Azurite مثبتا ومشغلا.
  • يجب عليك الاختبار باستخدام اتصال تخزين فعلي بخدمات Azure قبل النشر إلى Azure.
  • عند نشر مشروعك، لا تنشر AzureWebJobsStorage الإعداد ك UseDevelopmentStorage=true. في Azure، AzureWebJobsStorage يجب أن يكون الإعداد دائما سلسلة الاتصال لحساب التخزين المستخدم من قبل تطبيق الوظائف. لمزيد من المعلومات، انظر AzureWebJobsStorage.