التشغيل السريع: إنشاء دالة C# في Azure من سطر الأوامر
في هذه المقالة، يمكنك استخدام أدوات سطر الأوامر لإنشاء دالة C# تستجيب لطلبات HTTP. بعد اختبار التعليمة البرمجية محليًا، يمكنك توزيعها إلى بيئة بلا خادم من دالات Azure.
تنشئ هذه المقالة دالة مشغلة من HTTP تعمل على .NET 8 في عملية عامل معزولة. للحصول على معلومات حول إصدارات .NET المدعومة لوظائف C#، راجع الإصدارات المدعومة. يوجد أيضًا إصدار مستند إلى Visual Studio Code من هذه المقالة.
يتطلب إكمال هذا التشغيل السريع تكلفة صغيرة تبلغ بضعة سنتات أمريكية أو أقل في حساب Azure الخاص بك.
تكوين البيئة المحلية الخاصة بك
قبل أن تبدأ، يجب أن يكون لديك ما يلي:
إحدى الأدوات التالية لإنشاء موارد Azure:
الإصدار 2.4 من Azure CLI أو أحدث.
The Azure Az PowerShell module الإصدار 5.9.0 أو الإصدار الأحدث.
تحتاج أيضًا إلى حساب Azure باشتراك مفعل. أنشئ حساباً مجاناً.
تثبيت الأدوات الأساسية لوظائف Azure
تعتمد الطريقة الموصى بها لتثبيت Core Tools على نظام تشغيل كمبيوتر التطوير المحلي.
الخطوات التالية استخدام مثبت Windows (MSI) لتثبيت أدوات الأساسية v4.x. لمزيدٍ من المعلومات حول المثبتات الأخرى المستندة إلى الحزمة، راجع الملف الأساسي أدوات القراءة.
قم بتنزيل وتشغيل مثبت الأدوات الأساسية، استنادًا إلى إصدار Windows:
- v4.x - Windows 64-bit (موصى به. يتطلب تصحيح أخطاء Visual Studio Code 64 بت.)
- v4.x - Windows 32-بت
إذا كنت قد استخدمت مثبت Windows (MSI) مسبقا لتثبيت Core Tools على Windows، فيجب إلغاء تثبيت الإصدار القديم من إضافة إزالة البرامج قبل تثبيت أحدث إصدار.
إنشاء مشروع دوال محلية
في Azure Functions، يُعد مشروع الدوال حاوية لدالة فردية واحدة أو أكثر يستجيب كل منها لمشغل معين. تشترك جميع الدوال في المشروع في نفس التكوينات المحلية والاستضافة. في هذا المقطع، يمكنك إنشاء مشروع دالة يحتوي على دالة واحدة.
شغّل
func init
الأمر، كما يلي، لإنشاء مشروع وظائف في مجلد يسمى LocalFunctionProj مع وقت التشغيل المحدد:func init LocalFunctionProj --worker-runtime dotnet-isolated --target-framework net8.0
انتقل إلى مجلد المشروع:
cd LocalFunctionProj
يحتوي هذا المجلد على ملفات مختلفة للمشروع، بما في ذلك ملفات التهيئة المسماة local.settings.json وhost.json. ونظراً لاحتواء ملفات local.settings.json على الأسرار التي تم تنزيلها من Azure، يُستبعد الملف من التحكم في المصدر افتراضيا في ملف .gitignore.
إضافة دالة إلى المشروع باستخدام الأمر التالي حيث
--name
الوسيطة هي الاسم الفريد للدالة (HttpExample)--template
والوسيطة تحدد مشغل الدالة (HTTP).func new --name HttpExample --template "HTTP trigger" --authlevel "anonymous"
func new
إنشاء ملف تعليمة برمجية HttpExample.cs.
(اختياري) افحص محتويات الملف
إذا رغبت في ذلك، يمكنك التخطي إلى تشغيل الوظيفة محليًّا وفحص محتويات الملف لاحقًا.
HttpExample.cs
يحتوي HttpExample.cs على Run
أسلوب يتلقى بيانات الطلب في req
المتغير ككائن HttpRequest. تم تزيين هذه المعلمة ب HttpTriggerAttribute، لتعريف سلوك المشغل.
using System.Net;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace Company.Function
{
public class HttpExample
{
private readonly ILogger<HttpExample> _logger;
public HttpExample(ILogger<HttpExample> logger)
{
_logger = logger;
}
[Function("HttpExample")]
public IActionResult Run([HttpTrigger(AuthorizationLevel.AuthLevelValue, "get", "post")] HttpRequest req)
{
_logger.LogInformation("C# HTTP trigger function processed a request.");
return new OkObjectResult("Welcome to Azure Functions!");
}
}
}
كائن الإرجاع هو كائن IActionResult يحتوي على البيانات التي يتم تسليمها مرة أخرى إلى استجابة HTTP.
راجع مشغلات دالات Azure ومفاهيم الربطلمعرفة المزيد.
تشغيل الدالة محليًا
شغل الدالة عن طريق بدء تشغيل مضيف وقت تشغيل دوال Azure المحلي من المجلد LocalFunctionProj:
func start
في نهاية الإخراج، يجب أن تظهر الأسطر التالية:
... Now listening on: http://0.0.0.0:7071 Application started. Press Ctrl+C to shut down. Http Functions: HttpExample: [GET,POST] http://localhost:7071/api/HttpExample ...
إشعار
إذا لم يظهر HttpExample كما هو موضح أعلاه، فمن المحتمل أن تكون قد بدأت المضيف من خارج المجلد الجذر للمشروع. في هذه الحالة، استخدم Ctrl+C لإيقاف المضيف، انتقل إلى المجلد الجذر للمشروع، وتشغيل الأمر السابق مرة أخرى.
انسخ عنوان URL للدالة
HttpExample
من هذا الإخراج إلى مستعرض واستعرض للوصول إلى عنوان URL للوظيفة ويجب أن تتلقى رسالة مرحبا بك في Azure Functions .عند الانتهاء من ذلك، استخدم Ctrl+C واختر
y
إيقاف مضيف الوظائف.
إنشاء موارد Azure الداعمة للدالة
قبل أن تتمكن من نشر رمز دالتك على Azure، تحتاج إلى إنشاء ثلاثة موارد:
- مجموعة الموارد، وهي حاوية منطقية للموارد ذات الصلة.
- حساب تخزين، والذي يستخدم للحفاظ على حالة دالاتك والمعلومات الأخرى المتعلقة بها.
- تطبيق الوظيفة، الذي يوفر البيئة لتنفيذ التعليمة البرمجية للوظيفة. يقوم تطبيق الدالة بالتعيين إلى مشروع الدالة المحلي الخاص بك ويسمح لك بتجميع الدالات الخاصة بك كوحدة منطقية لتيسير إدارة الموارد، ونشرها، ومشاركتها.
استخدم الأوامر التالية لإنشاء هذه العناصر. كل من Azure CLI وPowerShell مدعوم.
إذا لم تكن قد فعلت ذلك بالفعل، سجل الدخول إلى Azure:
az login
يقوم الأمر تسجيل الدخول إلى az بتسجيل الدخول إلى حساب Azure الخاص بك.
إنشاء مجموعة موارد مُسماة
AzureFunctionsQuickstart-rg
في المنطقة التي اخترتها:az group create --name AzureFunctionsQuickstart-rg --location <REGION>
ينشئ الأمر az group create مجموعة موارد. في الأمر أعلاه، استبدل
<REGION>
بمنطقة قريبة منك، باستخدام رمز منطقة متاح يتم إرجاعه من الأمر az account list-locations.إنشاء حساب تخزين للأغراض العامة في مجموعة الموارد والمنطقة الخاصة بك:
az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group AzureFunctionsQuickstart-rg --sku Standard_LRS --allow-blob-public-access false
يقوم أمر إنشاء حساب التخزين azبإنشاء حساب التخزين.
في المثال السابق، استبدل
<STORAGE_NAME>
باسم مناسب لك وفريد في تخزين Azure. يجب أن تحتوي الأسماء على ثلاثة إلى 24 حرفا من الأرقام والأحرف الصغيرة فقط. يحددStandard_LRS
حساب للأغراض العامة، الذي هو مدعوم من قبل الدالات.
هام
يتم استخدام حساب التخزين لتخزين بيانات التطبيق المهمة، بما في ذلك أحيانا التعليمات البرمجية للتطبيق نفسه. يجب تقييد الوصول من التطبيقات والمستخدمين الآخرين إلى حساب التخزين.
أنشئ تطبيق الدالة في Azure:
az functionapp create --resource-group AzureFunctionsQuickstart-rg --consumption-plan-location <REGION> --runtime dotnet-isolated --functions-version 4 --name <APP_NAME> --storage-account <STORAGE_NAME>
ينشئ الأمر az functionapp create تطبيق الدالة في Azure.
في المثال السابق، استبدل
<STORAGE_NAME>
باسم الحساب الذي استخدمته في الخطوة السابقة، واستبدل<APP_NAME>
باسم فريد عالمي يناسبك. يعد<APP_NAME>
أيضًا نطاق DNS الافتراضي لتطبيق الدالات.ينشئ هذا الأمر تطبيق الدالة الذي يتم تشغيله في وقت تشغيل لغتك المحددة ضمن خطة استهلاك دوال Azure وهي خطة مجانية لتحديد قيمة الاستخدام الذي تتحمله هنا. يقوم الأمر أيضا بإنشاء مثيل Azure Application Insights مقترن في نفس مجموعة الموارد، والتي يمكنك من خلالها مراقبة تطبيق الوظائف وعرض السجلات. للمزيد من المعلومات، راجع مراقبة دوال Azure. لا يتحمل المثيل أي تكاليف حتى تقوم بتنشيطه.
انشر مشروع الوظيفة في Azure
بعد إنشاء تطبيق الوظائف بنجاح في Azure، تصبح الآن جاهزا لنشر مشروع الوظائف المحلية باستخدام func azure functionapp publish
الأمر .
في مجلد المشروع الجذر، قم بتشغيل هذا func azure functionapp publish
الأمر:
func azure functionapp publish <APP_NAME>
في هذا المثال، استبدل <APP_NAME>
باسم تطبيقك. يظهر التوزيع الناجح نتائج مشابهة للإخراج التالي (مقتطع للتبسيط):
... Getting site publishing info... Creating archive for current directory... Performing remote build for functions project. ... Deployment successful. Remote build succeeded! Syncing triggers... Functions in msdocs-azurefunctions-qs: HttpExample - [httpTrigger] Invoke url: https://msdocs-azurefunctions-qs.azurewebsites.net/api/httpexample
استدعاء الدالة في Azure
لأن الدالة تستخدم مشغل HTTP وتدعم طلبات GET، يمكنك استدعاء ذلك عن طريق إجراء طلب HTTP إلى URL الخاص به. من الأسهل القيام بذلك في المتصفح.
نسخ URL Invoke الكاملة المعروضة في نتيجة أمر النشر في شريط عناوين المتصفح. عند الانتقال إلى عنوان URL هذا، يجب أن يعرض المستعرض إخراجًا مماثلًا لما كان عليه عند تشغيل الوظيفة محليًّا.
قم بتشغيل الأمر التالي لعرض السجلات الجارية في الوقت الحقيقي تقريباً:
func azure functionapp logstream <APP_NAME>
في نافذة طرفية منفصلة أو في المتصفح، اضغط على وظيفة التحكم عن بعد مرة أخرى. سيُعرض سجلاً مطولاً لتنفيذ الوظيفة في Azure في المحطة الطرفية.
تنظيف الموارد
إذا تابعت إلى الخطوة التالية وأضفت ربط ناتج قائمة انتظار Azure Storage، فاحتفظ بجميع مواردك في مكانها حيث ستبني على ما قمت به بالفعل.
وإلا، استخدم الأمر التالي لحذف مجموعة الموارد، وجميع الموارد الموجودة فيها لتجنب تكبد المزيد من التكاليف.
az group delete --name AzureFunctionsQuickstart-rg