AWS Lambda عبارة عن نظام أساسي بدون خادم لتشغيل التعليمات البرمجية دون إدارة الأجهزة الأساسية. إنه مرن للغاية ، ويمكنه تشغيل العديد من أحمال العمل المختلفة ، بما في ذلك واجهات برمجة تطبيقات Cالكاملة باستخدام ASP. NET Core.
انتظر ، يمكنك فعل هذا على لامدا؟
نعم! لا يمكنك فقط تشغيل الوظائف بناءً على أوقات تشغيل. NET ، بل يمكنك أيضًا الاستجابة للطلبات باستخدام جميع الأدوات المتوفرة لك من ASP. NET. يمكنك إنشاء واجهات برمجة التطبيقات (APIs) التي تتحدث إلى قواعد البيانات ، مثل قاعدة بيانات AWS المدارة RDS ، كل ذلك مع كونها قابلة للتطوير تمامًا تعمل على وظائف بدون خادم.
بينما كانت الإصدارات السابقة من ASP. NET تعمل على. NET Framework (الأقدم ، وقت تشغيل Windows فقط) من المعروف أنها ضخمة ، تعمل حزمة ASP. NET Core الجديدة على. NET Core 3.1 والإصدارات الأحدث. حققت NET 5 تحسينات كبيرة في الأداء واستخدام الذاكرة.
لن يكون هذا ممكنًا في العادة ، حيث تستخدم ASP. NET خادم الويب HTTP الخاص بها المسمى Kestrel للاستجابة للطلبات ، والتي لن تعمل حيث يتم التعامل مع ذلك بواسطة وقت تشغيل Lambda. ومع ذلك ، قدمت AWS حلاً بارعًا لهذا ؛ عادةً ما يتضمن إعداد ASP. NET خادم الويب Kestrel خلف IIS أو NGINX. هذا يتحدث إلى إطار عمل ASP. NET للتعامل مع الطلبات.

AWS بإنشاء فئة وكيل ،
Amazon. Lambda. AspNetCoreServer، والتي تهتم بكل شيء أمام ASP. NET. يتيح لك هذا إعادة استخدام معظم التعليمات البرمجية الخاصة بك أثناء ربط واجهة برمجة التطبيقات (API) الخاصة بك بـ Lambda.

هذا يعني أنك ستحتاج إلى استخدام بوابة API ، لكن هذا ليس بالأمر السيئ لأن API Gateway مفيد جدًا لإدارة واجهة برمجة التطبيقات الخاصة بك. يسمح لك بتعريف صارم لجميع القواعد التي تجعل وظيفة API الخاصة بك ؛ بالطبع ، سوف تحتاج إلى أن يكون لديك ASP.تم تكوين تطبيق NET للتعامل مع جميع الطلبات من بوابة API.
ومع ذلك ، لن تكون هذه أفضل تجربة من حيث وقت بدء التشغيل. بالمقارنة مع لغات البرمجة النصية خفيفة الوزن مثل JavaScript و Python ، فإن حزم. NET لديها الكثير من النفقات العامة. هناك بعض الحيل التي يمكنك القيام بها لتسريع الأداء ، ويمكنك حتى الدفع مقابل ذلك من خلال السعة المتوفرة. خلاف ذلك ، يجب أن تكون مستعدًا لأوقات بدء التشغيل البارد حوالي 1-2 ثانية.
هذا لا يعني أن كل عملية تنفيذ ستستغرق ثانيتين لتحميل الصفحة. بمجرد حدوث التحميل الأول ، تتم تهيئة كل شيء ، ويظل "ساخنًا" في Lambda لمدة 5 دقائق. إذا طلب شخص آخر ذلك ، فستتعامل الوظيفة مع الطلب كما لو كان يعمل عادةً على خادم حقيقي.
إعداد ASP. NET
تتضمن AWS منشئًا لمشروعات ASP. NET Lambda التي تم تكوينها مسبقًا باستخدام الكود المعياري والنشر في CloudFormation. نوصيك بالبدء من هنا ، واختبار الأشياء ، ثم نقل كود API الخاص بك ، ولكن إذا كنت ترغب في دمجها في مشروع حالي ، فإن AWS لديها دليل لذلك أيضًا.
ستحتاج إلى تثبيت ملحق AWS Toolkit for Visual Studio ، والذي يمكنك إدارته من "الامتدادات" في شريط القائمة. هذا هو ما يحتوي على قوالب المشروع لتطبيقات AWS.

من شاشة البداية Visual Studio الرئيسية ، قم بإنشاء مشروع جديد:

ربما تريد وضع هذا في الحل الخاص به ، لذا حدد "حل فارغ" ضمن "أخرى".

بعد ذلك ، يمكنك النقر بزر الماوس الأيمن في جزء الملف لإضافة مشروع جديد ، وتحديد "AWS Serverless Application" أو "AWS Serverless Application with Tests" ، أيهما تفضل.
تأكد من وجود هذا في C، إلا إذا كنت تريد استخدام Fلسبب ما.

ضع في اعتبارك أيضًا أن هذا مشروع "تطبيق بدون خادم" ، والذي يدير جميع الموارد من خلال خدمة CloudFormation للبنية التحتية في AWS. إذا كنت ترغب فقط في إنشاء بعض وظائف Lambda ، فهناك مشروع لذلك أيضًا.
سيتم نقلك إلى قائمة فرعية حيث يمكنك اختيار نوع المخطط الذي تريد بنائه. حدد “ASP. NET Core Web API” وأنشئ المشروع.

بالنسبة للجزء الأكبر ، يتم تكوين هذا مثل مشروع ASP. NET قياسي. الاختلاف الرئيسي هو أن
Program.cs
التقليدي تم استبداله بـ
LambdaEntryPoint.cs
كنقطة دخول رئيسية ، ويحتوي على فئة الرقائق التي تستخدم AWS للجسر كود إلى ASP. NET
IWebHostBuilder، والذي يستخدم لبدء التطبيق.

بمجرد تشغيلها بالكامل ، ستحتاج إلى نسخ وحدات التحكم والنماذج والخدمات الخاصة بك ، واستبدال
Startup.csبالتهيئة الخاصة بك.
باستخدام API الخاص بك
لنشر هذا المشروع ، تتضمن AWS خيارات نشر مضمنة باستخدام AWS Toolkit Extension. انقر بزر الماوس الأيمن على مشروعك وحدد "النشر إلى AWS Lambda …"

ستحتاج إلى إعطائها حاوية للتحميل إليها ، وتعيين اسم لنشر CloudFormation.

سيستغرق التحميل والنشر ثانية ، ولكن ستتمكن بعد ذلك من الانتقال إلى وحدة الإدارة في AWS Lambda لعرض وظيفتك. سيكون لها اسم تم إنشاؤه تلقائيًا باستخدام اسم مكدس CloudFormation كبادئة.
ضمن مشغلات التكوين > ، يمكنك عرض جميع مشغلات بوابة API التي تستدعي هذه الوظيفة ، واختبارها بنفسك باستخدام نقطة النهاية.

يمكنك أيضًا عرض مكدس CloudFormation الكامل الذي تم إنشاؤه تلقائيًا باستخدام التكوين الخاص بك.

إذا كنت تريد تغييره ، فستحتاج إلى تعديل
serverless.templateفي مشروعك. لمزيد من المعلومات ، يمكنك الرجوع إلى دليلنا حول استخدام AWS CloudFormation.