آمازون نوشتن توابع Lambda را در سی شارپ با ویژگی هایی مانند حاشیه نویسی Lambda ساده می کند، که از ژنراتورهای منبع C# برای تولید کد از مسیر REST API استفاده می کند. پشتیبانی از دات نت ۸ به زودی ارائه می شود.
تحول اخیر .NET برای تماشا بسیار سرگرم کننده بوده است. از زمانی که دات نت به یک پلتفرم منبع باز تبدیل شد، سرانجام به قول خود در زمینه پلتفرم های مختلف عمل کرد. در عین حال، پشتیبانی از Linux به آن کشش بیشتری در فضای ابر بومی داده است، و آخرین نسخهها از زمان اجرا container پشتیبانی میکنند.< /p>
داشتن قابلیت های چند پلتفرمی به این معنی است که می توانید دات نت را در هر ابری نیز اجرا کنید. تنها چیزی که نیاز دارید یک میزبان ماشین مجازی لینوکس یا یک نمونه Kubernetes است که از کانتینرهای بدون توزیع پشتیبانی می کند. این برای اجرای کد دات نت در زیرساخت به عنوان پلتفرم سرویس، مانند AWS، یا در Kubernetes مدیریت شده مانند Google Kubernetes Engine (GKE) کافی است. کد می تواند از یک پلتفرم به پلتفرم دیگر منتقل شود و از REST API برای دسترسی به خدمات پلتفرم استفاده کند. در برخی موارد، SDK هایی وجود دارد، یا از ارائه دهنده پلتفرم یا توسعه یافته توسط انجمن.
قابلیت حمل مانند این چیز خوبی است: به شما امکان می دهد از ابری به ابری دیگر حرکت کنید، با کمترین تغییرات در کد خود (به خصوص اگر از برنامه های خاص سرویس استفاده نمی کنید). اما محدودیتهایی وجود دارد، زیرا نمیتوانید از ویژگیهای پلتفرم بدون سرور استفاده کنید که به شما امکان میدهد از مقیاسپذیری ابر و مزایای اقتصادی ناشی از عملیات درخواستی استفاده کنید. بدون آنها، شما به سادگی کد NET. درون محل را بردارید و تغییر دهید.
استفاده از C# در AWS Lambda
اگر از AWS Lambda برای برنامههای بدون سرور خود استفاده میکنید، گزینه استفاده از دات نت با سی شارپ برای مدتی در کنار جاوا اسکریپت، برو، Python، جاوا، Ruby، Rust، PowerShell، و TypeScript. پشتیبانی آمازون با .NET Core آغاز شد و با انتشار پی در پی این پلتفرم به روز شد. در حال حاضر از هر دو .NET 6 و .NET 7 پشتیبانی می شود. به احتمال زیاد می خواهید در حال حاضر از NET 6 استفاده کنید، به عنوان .NET 7 فقط برای کانتینرهای میزبان موجود است.
AWS Lambda دقیقاً مانند Azure Functions یک پلت فرم محاسباتی بدون سرور است که بر اساس عملیات رویداد محور ساخته شده است. توابع Lambda توسط رویدادها، اغلب از سایر سرویسهای AWS فعال میشوند، و میتوانند برای پردازش داده، پردازش جریان، پایانههای پشتیبان مبتنی بر API برای برنامههای وب و موبایل، و برای پشتیبانی از استقرار IoT (اینترنت اشیا)، در میان گزینههای مختلف مورد استفاده قرار گیرند. .
مهم ترین جنبه AWS Lambda این است که مانند توابع Azure، هیچ کنترلی بر منابع محاسباتی که استفاده می کند ندارید. سرویس بر اساس تقاضا مقیاس میشود و شما برای منابعی که مصرف میکنید هزینه میکنید.
ساخت توابع Lambda در NET
استفاده از .NET با AWS Lambda به هیچ تغییری نیاز ندارد جعبه ابزار توسعه شما. می توانید از Visual Studio، Visual Studio Code یا هر IDE شخص ثالث استفاده کنید. تنها کاری که باید انجام دهید این است که مجموعه ای از الگوهای AWS را از NuGet از طریق NET CLI نصب کنید.
در قلب توابع C# AWS یک کنترل کننده تابع Lambda است. . این روش همان چیزی است که سرویس زیربنایی برای راه اندازی کد شما فراخوانی می کند. این یکی از اجزای ضروری یک تابع Lambda است که هم یک رویداد و هم یک رویداد را ارائه می دهد. شی متن به کد شما. شی رویداد احتمالاً مفیدترین است، زیرا اطلاعات مربوط به رویداد را ارائه می دهد، در حالی که شی زمینه اطلاعاتی را در مورد محیط زمان اجرا ارائه می دهد. دادهها باید بهعنوان یک شی JSON آماده برای استفاده در کد شما سریال شوند.
درک موضوع زمینه برای اطمینان از اهمیت دارد کد سی شارپ شما به خوبی اجرا خواهد شد. اطلاعات مهم زمان اجرا که ارائه میکند شامل مدت زمان موجود قبل از اتمام زمان عملکرد و بازپس گیری منابع آن توسط AWS است. میتوانید از این اطلاعات برای نوشتن کنترلهای مدیریت خطا، لغو کارها و ارائه اعلانها در صورتی که مهلت زمانی شروع شود، استفاده کنید.
کد C# در AWS Lambda به یکی از دو روش فراخوانی می شود. اولین گزینه ارائه یک تابع به عنوان کتابخانه کلاس، پیکربندی سرویس با نام کلاس و اسمبلی آن و روشی است که هنگام راه اندازی تابع فراخوانی می شود. گزینه دوم ارائه یک اسمبلی اجرایی است که هنگام فراخوانی اجرا شود.
ساده سازی توسعه تابع C# با حاشیه نویسی Lambda
Amazon ویژگی های اضافی را ارائه می دهد که می تواند نوشتن یک تابع C# را ساده کند. چارچوب حاشیه نویسی Lambda روشی است بسیاری از کدهای خاص لامبدا را از منطق کسبوکار خود پنهان کنید، با استفاده از مولدهای منبع برای ایجاد آن از مسیر REST API، در همان زمان، کنترلکنندههای مناسب Lambda را ایجاد کنید. میتوانید در ابزار AWS برای ویژوال استودیو، الگویی برای ساختن یک پروژه چارچوب حاشیهنویسی پیدا کنید. نقشه های همراه.
از آنجایی که چارچوب حاشیهنویسی میتواند ویژگیهای Lambda را به صورت برنامهنویسی تنظیم کند، میتوانید زمانبندی و محدودیتهای حافظه را به عنوان بخشی از تعریف تابع اولیه اضافه کنید. هنگامی که کد شما آماده شد، به سادگی آن را بسازید و مستقیماً از داخل ویژوال استودیو در AWS مستقر کنید.
یک گزینه با توابع مبتنی بر NET 7، از کامپایل AOT (پیش از زمان) برای کاهش زمان راه اندازی استفاده کنید. از آنجایی که AOT باید در محیط مورد نظر اجرا شود، شما در حال کامپایل کد در یک محفظه لینوکس آمازون هستید و از Docker به عنوان میزبان استفاده می کنید. این یک فرآیند نسبتا ساده است که به موجب آن از .NET CLI و قالب Lambda برای دانلود تصویر لینوکس استفاده می کنید. کامپایل به عنوان بخشی از استقرار کد شما در AWS به طور خودکار اجرا می شود.
شما محدود به برنامه های C# مستقل نیستید. Lambda را می توان برای میزبانی و اجرای ASP.NET Core web استفاده کرد برنامههای کاربردی نیز، به شما یک بکاند درخواستی برای سایتهایی میدهد که استفاده نسبتاً پایینی دارند یا باید به درخواستهای شدید پاسخ دهند.
استفاده از NET 8 در AWS Lambda
آمازون در حال کار برای ارائه پشتیبانی از دات نت ۸ برای میزبان های AWS Lambda است و نسخه نهایی آن به زودی منتشر می شود. همانطور که اشاره به مشکل GitHub، قطعات متحرک زیادی وجود دارد که باید گرد هم می آیند تا یک انتشار پایدار طولانی مدت از یک زمان اجرا مدیریت شده ارائه دهند. علاوه بر ساخت یک میزبان جدید بر اساس آخرین نسخه های توزیع لینوکس داخلی آمازون، تیم دات نت AWS نیز در حال توسعه و آزمایش مجموعه ای به روز از API های NET و ابزارهای CLI برای کمک به ساخت Lambdas جدید و به روز رسانی کدهای موجود است. p>
این نکته آخر مهم است، زیرا AWS قصد دارد در سال ۲۰۲۴ از پشتیبانی .NET 6 و .NET 7 خود منسوخ کند، با محدودیت سخت برای به روز رسانی عملکردهای NET 6 در فوریه ۲۰۲۵. مهاجرت به نسخه پشتیبانی طولانی مدت دات نت کمک می کند تا اطمینان حاصل شود که کد شما توسط مایکروسافت و آمازون پشتیبانی می شود. برخی از ابزارها در حال حاضر در دسترس هستند، از جمله بهروزرسانی در AWS Toolkit برای ویژوال استودیو، که به شما امکان میدهد قالبهای زمان اجرا سفارشی را بر اساس NET 8 بسازید و از یک تصویر پایه کانتینر NET 8 پشتیبانی کند.
اگر قصد استفاده از این تصویر پایه لینوکس ۳ آمازون را دارید، باید مخزن AWS .NET GitHub را شبیه سازی کنید و تصویر را بر روی سیستم های توسعه خود بسازید (به این پست وبلاگ). این به شما این امکان را می دهد که کد را قبل از بسته بندی و استقرار آن در AWS آزمایش کنید. وقتی AWS ابزارهای NET 8 خود را نهایی کرد، این ابزار به بخشی از پلتفرم تبدیل میشود و شما میتوانید از آن به عنوان بخشی از فرآیند ساخت استاندارد خود استفاده کنید.
پشتیبانی از دات نت در AWS AWS Lamba مهارت های دات نت شما را فراتر از توسعه برنامه های کاربردی سنتی و پلتفرم های بومی ابری Azure قابل حمل می کند. توجه به این نکته مهم است که این یک پروژه یکباره نیست، بلکه یک پروژه بلندمدت است که مطابق با چرخه عمر پشتیبانی خود دات نت، چندین به روز رسانی در زمان اجرا انجام شده است. AWS با مجموعهای مؤثر از انتزاعها که تمرکز بر روی کد شما را آسانتر میکند، رویکردی ارائه میکند که باید انتقال کد داتنت بدون سرور را از دیگر پلتفرمهای ابری و همچنین از برنامههای داخلی سادهتر کند.
پست های مرتبط
اجرای برنامه های دات نت بدون سرور در AWS Lambda
اجرای برنامه های دات نت بدون سرور در AWS Lambda
اجرای برنامه های دات نت بدون سرور در AWS Lambda