التعليمات البرمجية واختبار وظائف Azure محليًا
في حين أنك قادر على تطوير واختبار Azure Functions في مدخل Microsoft Azure، يفضل العديد من المطورين تجربة تطوير محلية. تعمل الوظائف عند استخدامها على تسهيل استخدام محرر التعليمات البرمجية وأدوات التطوير المفضلة لديك لإنشاء واختبار الوظائف على الكمبيوتر المحلي الخاص بك. يمكن الاتصال بالوظائف المحلية لخدمات Azure المباشرة، ويمكنك تصحيحها على الحاسوب المحلي باستخدام وقت تشغيل الوظائف الكامل.
توفر هذه المقالة روابط إلى بيئات تطوير معينة للغة المفضلة لديك. كما يوفر بعض الإرشادات المشتركة للتطوير المحلي، مثل العمل مع ملف local.settings.json.
بيئات التطويرالمحلية
تعتمد الطريقة التي تطور بها الوظائف على الكمبيوتر المحلي على تفضيلات اللغة والأدوات. تدعم البيئات في الجدول التالي التنمية المحلية:
البيئة | اللغات | الوصف |
---|---|---|
Visual Studio Code | C# (قيد المعالجة) C# (عملية عامل معزولة) JavaScript بوويرشيل Python |
يضيف ملحق Azure Functions ل VS Code دعم الوظائف إلى VS Code. يتطلب الأدوات الأساسية. يدعم التطوير على Linux وMacOS وWindows عند استخدام الإصدار 2.x من Core Tools. لمعرفة المزيد، راجع إنشاء أول وظيفة باستخدام Visual Studio Code. |
موجه الأوامر أو المحطة الطرفية | C# (قيد المعالجة) C# (عملية عامل معزولة) JavaScript بوويرشيل Python |
توفر Azure Functions Core Tools وقت التشغيل الأساسي والقوالب لإنشاء الوظائف، والتي تمكن التطوير المحلي. يدعم الإصدار 2.x التطوير على Linux وMacOS وWindows. تعتمد كافة البيئات على "أدوات أساسية" لوقت تشغيل الوظائف المحلية. |
Visual Studio | C# (قيد المعالجة) C# (عملية عامل معزولة) |
يتم تضمين أدوات Azure Functions في حمل عمل تطوير Azure ل Visual Studio، بدءا من Visual Studio 2019. يتيح لك تجميع الوظائف في مكتبة فئات ونشر .dll إلى Azure. يتضمن الأدوات الأساسية للاختبار المحلي. لمعرفة المزيد، راجع تطوير وظائف Azure باستخدام Visual Studio. |
Maven (مختلف) | Java | يدعم النموذج الأصلي لـ Maven الأدوات الأساسية لتمكين تطوير وظائف Java. يدعم الإصدار 2.x التطوير على Linux وMacOS وWindows. لمعرفة المزيد، راجع إنشاء دالتك الأولى باستخدام Java وMaven. كما يدعم التطوير باستخدام Eclipse وIntelliJ IDEA. |
إشعار
بسبب القيود المفروضة على تحرير التعليمات البرمجية للدالة في مدخل Microsoft Azure، يجب عليك تطوير وظائفك محليا ونشر مشروع التعليمات البرمجية إلى تطبيق دالة في Azure. لمزيد من المعلومات، راجع قيود التطوير في مدخل Microsoft Azure
تتيح لك كل بيئة من بيئات التطوير المحلية هذه بإمكانية إنشاء مشاريع تطبيق وظيفة واستخدام قوالب وظائف معرفة مسبقًا لإنشاء وظائف جديدة. يستخدم كل منها "الأدوات الأساسية" حتى تتمكن من اختبار وظائفك وتصحيحها مقارنة بوقت تشغيل "الوظائف" الحقيقي على جهازك كما تفعل أي تطبيق آخر. يمكنك أيضًا نشر مشروع تطبيق الوظيفة من أي من هذه البيئات إلى Azure.
ملفات المشاريع المحلية
يحتوي دليل مشروع Functions على الملفات التالية في المجلد الجذر للمشروع، بغض النظر عن اللغة:
اسم الملف | الوصف |
---|---|
host.json | لمعرفة المزيد، راجع مرجع host.json. |
local.settings.json | الإعدادات تستخدمها الأدوات الأساسية عند التشغيل محليًا، بما في ذلك إعدادات التطبيق. لمعرفة المزيد، راجع ملف الإعدادات المحلية. |
.gitignore | يمنع نشر local.settings.js على الملف بطريق الخطأ إلى مستودع Git. لمعرفة المزيد، راجع ملف الإعدادات المحلية. |
.vscode\extensions.json | إعدادات الملف المستخدم عند فتح مجلد المشروع في Visual Studio Code. |
تعتمد الملفات الأخرى في المشروع على لغتك ووظائف معينة. لمزيد من المعلومات، راجع دليل المطور للغتك.
ملف الإعدادات المحلية
يخزن الملف local.settings.json إعدادات التطبيق وإعداداته المستخدمة من قبل أدوات التطوير المحلية. يتم استخدام الإعدادات الموجودة في الملف local.settings.json فقط عند تشغيل المشروع محليًا. عند نشر مشروعك إلى Azure، تأكد أيضا من إضافة أي إعدادات مطلوبة إلى إعدادات التطبيق لتطبيق الوظائف.
هام
نظرًا إلى احتمالية احتواء الملف local.settings.json على أسرار، مثل سلاسل الاتصال، يجب عدم تخزينها في مستودع بعيد. توفر الأدوات التي تدعم Functions طرقا لمزامنة الإعدادات في ملف 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>"
}
}
يتم اعتماد هذه الإعدادات عند تشغيل المشاريع محليًا:
الإعدادات | الوصف |
---|---|
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 IDE على سبيل المثال، تغيير رقم المنفذ بالتنقل إلى نافذة "Project Properties -> Debug" وتحديد رقم المنفذ صراحة في أمر host start --port <your-port-number> يمكن توفيره في حقل "وسائط التطبيق". |
CORS |
يحدد الأصول المسموح بها لمشاركة الموارد عبر المنشأ (CORS). يتم توفير الأصول كقائمة مفصولة بفاصلة بدون مسافات. قيمة البدل (*) مدعومة والتي تسمح بالطلبات من أي أصل. |
CORSCredentials |
عند التعيين إلى true ، يسمح بالطلبات withCredentials . |
ConnectionStrings |
مجموعة. لا تستخدم هذه المجموعة لسلاسل الاتصال المستخدمة بواسطة روابط الوظيفة. يتم استخدام هذه المجموعة فقط بواسطة أطر العمل التي تحصل عادة على سلسلة الاتصال من ConnectionStrings قسم ملف التكوين، مثل Entity Framework. تتم إضافة سلاسل الاتصال في هذا الكائن إلى البيئة مع نوع موفر System.Data.SqlClient. لا يتم نشر العناصر الموجودة في هذه المجموعة إلى Azure مع إعدادات التطبيق الأخرى. يجب إضافة هذه القيم بشكل صريح إلى Connection strings مجموعة إعدادات تطبيق الوظائف. إذا كنت تقوم بإنشاء في التعليمات البرمجية SqlConnection للدالة الخاصة بك، يجب تخزين قيمة سلسلة الاتصال مع اتصالاتك الأخرى في إعدادات التطبيق في المدخل. |
يمكن تضمين إعدادات التطبيق التالية في Values
الصفيف عند التشغيل محليا:
الإعدادات | القيم | الوصف |
---|---|---|
AzureWebJobsStorage |
سلسلة اتصال حساب التخزين، أوUseDevelopmentStorage=true |
يحتوي على سلسلة الاتصال لحساب تخزين Azure. مطلوب عند استخدام مشغلات أخرى غير HTTP. لمزيد من المعلومات، راجع AzureWebJobsStorage المرجع.عندما يكون لديكAzure Emulatorمثبت محليا وتبدأ بتعيين AzureWebJobsStorage إلى UseDevelopmentStorage=true ، تستخدم «الأدوات الأساسية» المحاكي. لمزيد من المعلومات، راجع محاكي التخزين المحلي. |
AzureWebJobs.<FUNCTION_NAME>.Disabled |
true |false |
لتعطيل دالة عند التشغيل محليا، أضف "AzureWebJobs.<FUNCTION_NAME>.Disabled": "true" إلى المجموعة، حيث <FUNCTION_NAME> هو اسم الدالة. لمعرفة المزيد، راجع كيفية تعطيل الوظائف في Azure Functions. |
FUNCTIONS_WORKER_RUNTIME |
dotnet dotnet-isolated node java powershell python |
يشير إلى اللغة المستهدفة من وقت تشغيل الوظائف. مطلوب للإصدار 2.x وأعلى من وقت تشغيل الوظائف. يتم إنشاء هذا الإعداد للمشروع بواسطة الأدوات الأساسية. لمعرفة المزيد، راجع FUNCTIONS_WORKER_RUNTIME المرجع. |
FUNCTIONS_WORKER_RUNTIME_VERSION |
~7 |
يشير إلى استخدام PowerShell 7 عند التشغيل محليا. إذا لم يتم التعيين، فسيتم استخدام PowerShell Core 6. يتم استخدام هذا الإعداد فقط عند التشغيل محليًا. يتم، عند التشغيل في Azure، تحديد إصدار وقت التشغيل في PowerShell بواسطة إعداد تكوين الموقع powerShellVersion ، والذي يمكن تعيينه في المدخل. |
مزامنة الإعدادات
عند تطوير وظائفك محليا، يجب أن تكون أي إعدادات محلية مطلوبة من قبل تطبيقك موجودة أيضا في إعدادات التطبيق لتطبيق الوظائف الذي يتم نشر التعليمات البرمجية الخاصة بك عليه. قد تحتاج أيضا إلى تنزيل الإعدادات الحالية من تطبيق الوظائف إلى مشروعك المحلي. بينما يمكنك تكوين إعدادات التطبيق يدويا في مدخل Microsoft Azure، تتيح لك الأدوات التالية أيضا مزامنة إعدادات التطبيق مع الإعدادات المحلية في مشروعك:
المشغلات وعمليات الربط
عند تطوير وظائفك محليا، تحتاج إلى أخذ سلوكيات المشغل والربط في الاعتبار. بالنسبة إلى مشغلات HTTP، يمكنك ببساطة استدعاء نقطة نهاية HTTP على الكمبيوتر المحلي، باستخدام http://localhost/
. بالنسبة للوظائف التي يتم تشغيلها بدون HTTP، هناك العديد من الخيارات للتشغيل محليا:
- أسهل طريقة لاختبار الروابط أثناء التطوير المحلي هي استخدام سلسلة الاتصال التي تستهدف خدمات Azure المباشرة. يمكنك استهداف الخدمات المباشرة عن طريق إضافة إعدادات سلسلة الاتصال المناسبة
Values
في الصفيف في ملف local.settings.json. عند القيام بذلك، تؤثر عمليات التنفيذ المحلية أثناء الاختبار على بيانات الخدمة المباشرة. ولهذا السبب، ضع في اعتبارك إعداد خدمات منفصلة لاستخدامها أثناء التطوير والاختبار، ثم التبديل إلى خدمات مختلفة أثناء الإنتاج. - بالنسبة للمشغلات المستندة إلى التخزين، يمكنك استخدام محاكي تخزين محلي.
- يمكنك تشغيل وظائف مشغل غير HTTP يدويا باستخدام نقاط نهاية المسؤول الخاصة. لمزيد من المعلومات، راجع تشغيل دالة غير مشغلة من قبل HTTP يدويا.
أثناء الاختبار المحلي، يجب تشغيل المضيف الذي توفره Core Tools (func.exe) محليا. لمزيد من المعلومات، راجع Azure Functions Core Tools.
أدوات اختبار HTTP
أثناء التطوير، من السهل استدعاء أي من نقاط نهاية الدالة من مستعرض ويب عندما تدعم أسلوب HTTP GET. ومع ذلك، بالنسبة لأساليب HTTP الأخرى التي تدعم الحمولات، مثل POST أو PUT، تحتاج إلى استخدام أداة اختبار HTTP لإنشاء طلبات HTTP هذه وإرسالها إلى نقاط نهاية الدالة.
تنبيه
بالنسبة للسيناريوهات التي يجب أن تتضمن فيها طلباتك بيانات حساسة، تأكد من استخدام أداة تحمي بياناتك وتقلل من خطر تعريض أي بيانات حساسة للجمهور. قد تتضمن البيانات الحساسة التي يجب عليك حمايتها ما يلي: بيانات الاعتماد والأسرار ورمز الوصول المميز ومفاتيح واجهة برمجة التطبيقات وبيانات الموقع الجغرافي وحتى معلومات التعريف الشخصية (PII).
يمكنك الحفاظ على أمان بياناتك عن طريق اختيار أداة اختبار HTTP التي تعمل إما دون اتصال أو محليا، ولا تقوم بمزامنة بياناتك مع السحابة، ولا تتطلب تسجيل الدخول إلى حساب عبر الإنترنت. يمكن لبعض الأدوات أيضا حماية بياناتك من التعرض العرضي من خلال تنفيذ ميزات أمان محددة.
تجنب استخدام الأدوات التي تخزن محفوظات طلبات HTTP مركزيا (بما في ذلك المعلومات الحساسة)، أو لا تتبع أفضل ممارسات الأمان، أو لا تحترم مخاوف خصوصية البيانات.
ضع في اعتبارك استخدام إحدى هذه الأدوات لإرسال طلبات HTTP بأمان إلى نقاط نهاية الدالة:
- Visual Studio Code مع ملحق من Visual Studio Marketplace، مثل REST Client
- استدعاء PowerShell-RestMethod
- Microsoft Edge - أداة وحدة تحكم الشبكة
- برونو
- curl
محاكي التخزين المحلي
أثناء التطوير المحلي، يمكنك استخدام محاكي Azurite المحلي عند اختبار الوظائف مع روابط Azure Storage (Queue Storage وBlob Storage وTable Storage)، دون الحاجة إلى الاتصال بخدمات التخزين عن بعد. يتكامل Azurite مع Visual Studio Code و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
.
الخطوات التالية
- لمعرفة المزيد حول التطوير المحلي لوظائف C# المحولة برمجيا (سواء في العملية أو عملية العامل المعزولة) باستخدام Visual Studio، راجع تطوير وظائف Azure باستخدام Visual Studio.
- لمعرفة المزيد حول التطوير المحلي للوظائف باستخدام VS Code على جهاز كمبيوتر Mac أو Linux أو Windows، راجع مقالة بدء تشغيل Visual Studio Code للغة المفضلة لديك:
- لمعرفة المزيد حول تطوير الوظائف من موجه الأوامر أو المحطة الطرفية، راجع العمل مع Azure Functions Core Tools.