آموزش ASP.NET Core

آنچه در این صفحه می خوانید:

معرفی ASP.Net Core

ASP.NET یک فریمورک محبوب برای ساخت و توسعه برنامه های وب بر روی پلتفرم دات نت است. ASP.NET Core نسخه اوپن سورس ASP.NET است که بر روی macOS ،Linux و Windows اجرا می شود. ASP.NET Core برای اولین بار در سال 2016 منتشر شد و طراحی مجدد نسخه های اولیه Windows-ASP.NET است. این فریمورک یک بازنویسی کامل است که ASP.NET MVC و ASP.NET قبلاً جداگانه API را در یک مدل برنامه نویسی واحد متحد می کند. با اینکه یک فریمورک جدید است، که بر روی یک پشته وب جدید ساخته شده است، اما از سازگاری مفهومی با ASP.NET برخوردار است. برنامه های اصلی ASP.NET Core از نسخه های جانبی در کنار هم پشتیبانی می کنند که در آن برنامه های مختلف، در حال اجرا با همان دستگاه، می توانند نسخه های مختلف ASP.NET Core را هدف قرار دهند. این قابلیت با نسخه های قبلی ASP.NET امکان پذیر نیست.

ASP.NET Core کراس پلتفرم، با عملکرد بالا برای ساخت برنامه های مدرن، مبتنی بر ابر و مبتنی بر اینترنت است. با Core ASP.NET، می توانید:

  • ایجاد برنامه ها و سرویس های وب، برنامه های اینترنت اشیا و بک اند موبایل.
  • از ابزارهای توسعه مورد علاقه خود در Windows،macOS و Linux استفاده کنید.
  • از ابر یا فضای لوکال استفاده کنید.
  • فریمروک NET Core. یا NET. را اجرا کنید.

کاربرد ASP.Net Core

اولین نسخه پیش نمایش ASP.NET تقریباً 15 سال پیش به عنوان بخشی از دات نت فریمورک منتشر شد. از آن زمان میلیون ها نفر از برنامه نویسان از آن برای ساخت و اجرای برنامه های عالی وب استفاده کرده اند و با گذشت سال ها، بسیاری از قابلیت ها را به آن اضافه شده است. ASP.NET Core دارای چندین تغییر در معماری است که منجر به یک فریمورک بسیار سبک و مدولار می شود. ASP.NET Core دیگر مبتنی بر System.Web.dll نیست. این است که در مجموعه ای از بسته های گرانول و فاکتوری NuGet ساخته شده است. این به شما امکان می دهد تا برنامه خود را بهینه کنید و فقط بسته های NuGet مورد نیاز خود را درج کنید. مزایای استفاده از یک برنامه سطح کوچکتر شامل امنیت سخت تر، کاهش سرویس دهی، بهبود عملکرد و کاهش هزینه ها است.

با ASP.Net Core پیشرفت های اساسی زیر را بدست می آورید:

  • یک برنامه واحد برای ساخت UI وب و API های وب
  • ادغام فریمورک های مدرن سمت کلاینت و گردش کار توسعه
  • یک سیستم پیکربندی مبتنی بر محیط آماده برای ابر
  • تزریق وابستگی داخلی
  • خطوط ارتباطی HTTP سبک وزن و مدولار جدید
  • امکان هاستینگ در IIS یا self-host
  • ساخته شده در NET Core.، که از نسخه های جانبی برنامه واقعی پشتیبانی می کند.
  • بطور کامل بسته های NuGet ارسال می شود.
  • ابزار جدیدی که توسعه وب مدرن را ساده می کند.
  • برنامه های cross-platform ASP.NET را بر روی ویندوز، مک و لینوکس بسازید و اجرا کنید.

قابلیت مشاهده در ASP.Net Core

روش های نوین توسعه نرم افزار، به روزرسانی های سریع و مداوم را ارزیابی می کنند، به دنبال آن فرآیند هایی که تأثیر خرابی نرم افزار را به حداقل می رسانند توسعه پیدا کرده اند. به همان اندازه که شناسایی اشکالات زود هنگام مهم است، این که بدانید که آیا تغییرات باعث افزایش ارزش تجارت می شوند، نیز مهم هستند. این شیوه ها فقط در صورت عملی شدن راه حل نظارت قابل استفاده هستند. در اینجا گزینه هایی برای افزودن مشاهده به برنامه های دات نت کور مورد بررسی قرار گرفته است. این گزینه ها بر اساس تعامل با مشتریانی که از Net Core. استفاده می کنند در محیط های مختلف جمع آوری شده اند. در اینجا به SDK های OpenTelemetry و Application Insights مراجعه می شود تا قابلیت مشاهده را به یک برنامه توزیع شده نمونه اضافه شود.

مبانی مشاهده

شناسایی خطای نرم افزار و تأثیرات تجاری نیاز به یک راه حل نظارت با امکان مشاهده و گزارش نحوه رفتار سیستم و کاربران دارد. داده های جمع آوری شده باید اطلاعات لازم را برای تجزیه و تحلیل و شناسایی بروزرسانی بد فراهم کنند. در پاسخ به سؤالاتی از قبیل:

  • آیا خطاهای بیشتری نسبت به گذشته مشاهده می کنیم؟
  • آیا انواع خطای جدید وجود دارد؟
  • آیا مدت زمان درخواست به طور غیر منتظره ای نسبت به نسخه های قبلی افزایش یافته است؟
  • آیا توان (req / sec) کاهش یافته است؟
  • آیا CPU یا استفاده از حافظه افزایش یافته است؟
  • آیا تغییراتی در KPI ایجاد شده است؟
  • آیا فروش کمتر از گذشته است؟
  • آیا تعداد بازدید کنندگان کاهش می یابد؟

تأثیر یک بروزرسانی بد سیستم را می تواند با ترکیب اطلاعات نظارت با استراتژی های استقرار مترقی به حداقل رساند.

قابلیت مشاهده بر 3 پایه ساخته شده است:

  • ورود به سیستم (Logging): اطلاعات مربوط به اتفاقات رخ داده در سیستم را جمع آوری می کند. کمک به تیم برای تجزیه و تحلیل رفتار برنامه غیر منتظره. جستجو از طریق لاگ های مربوط به سرویس می تواند نکات لازم را برای شناسایی علت اصلی مشکل ارائه دهد. مانند تماس با سرویس های خارجی با یک آدرس نادرست، تماس با سرویس های خارجی با نتایج غیر منتظره و درخواست های دریافتی با ورودی غیر منتظره باز می گردد.
  • ردیابی (Tracing): اطلاعاتی را برای ایجاد ویو end-to-end در مورد نحوه انجام تعامل در یک سیستم توزیع شده جمع می کند. ردیابی مانند اثری از پشته است که چندین برنامه کاربردی دارد. پس از شناسایی یک مشکل، ردپاها نقطه شروع خوبی در شناسایی منبع در عملیات توزیع شده هستند. مانند تماس های سرویس A تا B بیشتر از حد معمول طول می کشد، مکالمات پرداخت خدمات نیز از کار می افتند و غیره.
  • متریک (Metrics):یک نشانه real-time از نحوه عملکرد سیستم فراهم کنید. می توان از آن برای ساختن هشدار استفاده کرد و به واکنش های مقادیر غیر منتظره اجازه دسترسی داد. بر خلاف لاگ ها و ردیابی، مقدار داده های جمع آوری شده با استفاده از اندازه گیری ها با افزایش بار سیستم ثابت می ماند. مشکلات کاربرد اغلب از طریق مقادیر متریک غیر طبیعی تشخیص داده می شوند. مانند استفاده از پردازنده بالاتر از گذشته، افزایش خطا در شمارش خطا و تعداد موارد در صف رشد رو به رشد است.

افزودن قابلیت مشاهده به یک برنامه Net Core.

روش های زیادی برای اضافه کردن جنبه های مشاهده در یک برنامه وجود دارد. به عنوان مثال Dapr، یک ران تامی برای ساختن برنامه های توزیع شده است و شفاف سازی ردیابی توزیع را اضافه می کند. مثال دیگر استفاده از مش های سرویس در کوبرنتیز (Kubernetes) (Istio، Linkerd) است. ردیابی داخلی و شفاف معمولاً سناریوهای اساسی را پوشش می دهد و به سؤالات عمومی پاسخ می دهد، مانند مدت زمان مشاهده درخواست یا روند CPU. سایر سؤالات مانند KPI های سفارشی یا رفتار کاربر، نیاز به افزودن ابزار دقیق به کد شما دارد. برای نشان دادن چگونگی اضافه شدن قابلیت مشاهده به یک برنامه Net Core.، از مثال تعامل توزیع شده ناهمزمان زیر استفاده خواهیم کرد:

قابلیت مشاهده در ASP.NET Core

  • API اصلی درخواستی را از "سورس" دریافت می کند.
  • API اصلی بدنه درخواست را با روز جاری، که از زمان API بدست آمده، غنی می کند.
  • API اصلی درخواست های غنی شده در صف RabbitMQ را برای پردازش ناهمزمان درج می کند.
  • درخواست RabbitMQProcessor را نشان می دهد.
  • RabbitMQProcessor، به عنوان بخشی از پردازش درخواست، Time Api را برای دریافت dbtime فراخوانی می کند.
  • API Time برای دریافت زمان فعلی با اس کیوال سرور (SQL Server) تماس برقرار می کند.

ویژگی های ASP.Net Core

کارایی

عملکرد تمرکز اصلی ASP.NET Core است. این سریع تر از سایر فریمورک های وب محبوب در معیارهای مستقل TechEmpower است.

مدرن و نوآورانه

ASP.NET Core به گونه ای طراحی شده است که اجزای اجرا کننده، API ها، کامپایلرها و زبان ها به سرعت تکامل یابند، در حالی که هنوز یک بستر پایدار و پشتیبانی شده برای اجرای برنامه ها فراهم می کند. نسخه های متعدد ASP.NET Core می توانند در یک سرور در کنار هم وجود داشته باشند. به این معنا که یک برنامه می تواند آخرین نسخه را اتخاذ کند، در حالی که برنامه های دیگر روی نسخه مورد آزمایش قرار گرفته اند. ASP.NET Core گزینه های مختلفی از چرخه پشتیبانی را برای پاسخگویی به نیازهای برنامه شما فراهم می کند.

اوپن سورس

ASP.NET مانند بقیه موارد NET اوپن سورس در گیت هاب است. بیش از 60،000 توسعه دهنده و 3700 شرکت قبلاً در NET. مشارکت داشته اند.

ویندوز، لینوکس، مک (macOS) و داکر

برنامه های ASP.NET را می توان در ویندوز، لینوکس، macOS و داکر توسعه داد و اجرا کرد. خانواده محصولات ویژوال استودیو ابزاری برای ساختن برنامه های دات نت در هر سیستم عامل دارند. همچنین بسیاری از ویرایشگرهای محبوب ابزارها و افزونه های خط فرمان وجود دارد.

استقرار انعطاف پذیر

ران تایم ASP.NET Core که برنامه شما روی آن اجرا می شود می تواند به عنوان بخشی از برنامه شما مستقر شود یا به صورت مرکزی بر روی سرور وب شما نصب شود. ASP.NET Core برای کانتینر داکر نیز کاملاً مناسب است.

پشتیبانی

شما می توانید سورس نسخه ASP.NET خود را تهیه کنید، اما بیشتر برنامه های تولیدی به نسخه پشتیبانی شده از سیستم عامل نیاز دارند. مایکروسافت نسخه های رسمی NET را که بر روی سرورهای دارای مایکروسافت در آژور ساخته و آزمایش شده اند، ارسال می کند و دقیقاً مانند هر محصول مایکروسافت پشتیبانی می کند. Red Hat از دات نت کور روی لینوکس Red Hat Enterprise پشتیبانی می کند. Red Hat ساخت NET Core. را از سورس کد تهیه و اجرا کرده و آن را در مجموعه نرم افزار Red Hat در دسترس قرار می دهد. رد هت و مایکروسافت برای اطمینان از اینکه NET Core. به خوبی در RHEL کار می کند، همکاری می کنند.

چرا باید از ASP.Net Core استفاده کنیم؟

میلیون ها نفر از برنامه نویسان برای ایجاد برنامه های وب از ASP.NET 4.x استفاده کرده اند و به استفاده خود ادامه می دهند. ASP.NET Core یک طراحی و بازنویسی مجدد از ASP.NET 4.x است، با تغییرات معماری که منجر به یک فریمورک سبک تر و مدولار می شود. ASP.NET Core مزایای زیر را ارائه می دهد:

  • یک مفهوم واحد برای ایجاد UI وب و API های وب.
  • دارای معماری برای آزمایش.
  • Razor Pages سناریوهای کد گذاری متمرکز بر صفحه را آسان تر و پربارتر می کند.
  • Blazor به شما امکان می دهد از سی شارپ در مرورگر در کنار JavaScript استفاده کنید. منطق برنامه سمت سرور و کلاینت را به اشتراک بگذارید که همه با NET نوشته شده اند.
  • امکان توسعه و اجرای بر روی ویندوز، macOS و Linux.
  • ادغام فریمورک های مدرن، سمت مشتری و توسعه گردش کار.
  • یک سیستم پیکربندی مبتنی بر محیط آماده برای ابر.
  • تزریق وابستگی داخلی
  • پایپ لاین درخواست های HTTP سبک، با کارایی بالا و مدولار.
  • امکان میزبانی در موارد زیر: IIS، HTTP.sys، Nginx، Apache، Docker
  • نسخه به صورت جانبی.
  • ابزاری که توسعه وب مدرن را ساده تر می کند.
  • یک مفهوم واحد برای ساخت UI وب و API های وب

مقایسه ASP.Net Core با ASP.Net Core MVC

در دنیای توسعه وب امروز، همه می خواهند برنامه های وب را بر اساس فریمورک ایمن، مقیاس پذیر، انعطاف پذیر و آماده برای ابر توسعه دهند. بنابراین، اگر می خواهیم از Asp.Net Core در جای امروز Asp.Net MVC استفاده کنیم، قبل از استفاده از این موضوع، باید فهمیده باشیم مزایایی هست که می توانیم از این فناوری جدید بدست آوریم و همچنین ویژگی های جدید چیست؟ در نسخه قبلی فریمورک موجود نیست. در Asp.Net Core، مزایای بسیاری وجود دارد که می توانیم نسبت به Asp.Net MVC به آنها دست یابیم.

پشته وب هم تراز شده برای ASP.NET Core MVC و API های وب

ASP.NET MVC در هنگام ایجاد یک برنامه وب گزینه انتخاب MVC یا Web API یا هر دو را به ما می دهد. به این دلیل است که پشته وب برای ام وی سی (MVC) و وب ای پی آی (Web API) یکسان نیستند. ASP.NET Core MVC اکنون یک پشته وب هم تراز شده برای MVC و API وب دارد.

پروژه (Solution) ساختار تغییر می کند.

اگر کاوشگر سلوشن ASP.NET Core MVC را در سمت راست مشاهده می کنید Web.config،Global.asax وجود ندارد. سپس نحوه برخورد با تنظیمات پیکربندی، احراز هویت و شروع برنامه اجرای ویژه کد تغییر کرده است. appsettings.json، فایل های پیکربندی سفارشی برخی از فایل هایی هستند که عملکرد فایل های از دست رفته از ASP.NET MVC را انجام می دهند. اگر به پوشه نگاه کنیم، تغییرات بسیاری وجود دارد.

برنامه های ASP.NET Core برای میزبانی به IIS احتیاج ندارند.

تعجب نکنید، هدف ASP.NET Core ایجاد برنامه های کراس پلتفرم با استفاده از NET Core. است. با توجه به این نکته، مایکروسافت تصمیم گرفت که نه تنها در IIS میزبان برنامه های اصلی ASP.NET باشد بلکه می تواند خود میزبان باشد یا از سرور Nginx در لینوکس استفاده کند. Kestrel یک سرور وب داخلی برای پردازش درخواست خواهد بود.

پوشه wwwroot برای فایل های استاتیک

پوشه wwwroot نمایانگر ریشه واقعی برنامه وب هنگام اجرای وب سرور است. فایل های استاتیک مانند config.json که در wwwroot نیستند هرگز قابل دسترسی نخواهند بود و نیازی به ایجاد قوانین ویژه برای جلوگیری از دسترسی به فایل های حساس نیست. این فایل های استاتیک ممکن است ساده اچ تی ام ال (HTML)، جاوااسکریپت (Javascript)، سی اس اس (CSS)، تصاویر، کتابخانه و غیره باشند. علاوه بر مزایای امنیتی، پوشه wwwroot وظایف متداول مانند بسته بندی و کوچک سازی را نیز ساده می کند که هم اکنون می توانید با سهولت بیشتری در یک فرایند ساخت استاندارد وارد شوید و با استفاده از ابزارهایی مانند Grunt به صورت خودکار انجام شود. نام پوشه "wwwroot" را نیز می توان تغییر داد.

یک رویکرد جدید برای مدیریت بستگی و وابستگی مشتری از بسته‌ها

برای هر توسعه دهنده .Net آشنا خواهد بود که پوشه References همه DLL ها، بسته های NuGet را به طور خاص برای NET Framework نگه می دارد. از تجربه کار در Visual Studio IDE و استقرار برنامه های اصلی ASP.NET یا در ویندوز، لینوکس یا Mac با استفاده از .NET Core استفاده کنید. مدیریت سمت وابستگی سرور آن است. مدیریت وابستگی مشتری از اهمیت بیشتری برخوردار است زیرا طرف مشتری بسته های متفاوتی از سمت سرور دارد. طرف مشتری مطمئناً دارای jQuery، Bootstrap،grunt، هر فریمورک Javascript مانند انگولار جی اس، ستون فقرات، و غیره، تصاویر، فایل های سبک خواهد بود. مدیریت بسته های سمت مشتری در جامعه اوپن سورس دارای دو نام "Libman" (تازه راه اندازی شده) و "NPM" است. آنها بخشی از "وابستگی ها" هستند.

بسته های سمت سرور موجب صرفه جویی در فضای در ASP.NET Core می شوند.

از مدیر بسته NuGet برای اضافه کردن مرجع به مجامع، کتابخانه، فریمورک یا بسته های شخص ثالث استفاده شده است. آنها می توانند از NuGet دانلود شوند که پوشه "بسته ها" را در ساختار پروژه ایجاد می کند. 30 نمونه از برنامه های ASP.NET، همه آنها از بسته های NuGet برای مرجع کردن وابستگی های هر فضای دیسک پر هزینه تقریبا 70 مگابایت استفاده می کنند، بنابراین تقریباً با استفاده از فضای دیسک 2 گیگابایتی برای ذخیره بسته ها حتی اگر همه یکسان هستند. برخی از توسعه دهندگان SMART این مسئله را می دانند، اما برخی از مشکلات خود را ارائه می دهند. ASP.NET Core با ذخیره تمام بسته های مربوط به توسعه آن در پوشه Users و در حین ایجاد برنامه های اصلی ASP.NET Core، Visual Studio آنها را از پوشه Users ارجاع می دهد. این ویژگی با نام Runtime Store برای .NET Core 2 نامگذاری شده است. حال حتی اگر 100 نمونه برنامه ASP.NET Core داشته باشید، همه آنها از پوشه کاربران (Dotnet) در پوشه کاربران استفاده می کنند که تقریباً به چند مگابایت نزدیک است.

اسرار کاربر ASP.NET Core

بسیاری از اوقات ما در حین کار توسعه داده های حساس را درون درخت پروژه نگه می داریم، غالباً ما به اشتباه با اسرار کد این اسرار را با دیگران به اشتراک می گذاریم و به طور تصادفی آن را TFS (کنترل منبع) اضافه می کنیم. مدتی ممکن است این مسئله را تجربه کرده باشیم. برنامه های مبتنی بر هسته ASP.NET اکنون مفهومی از اسرار کاربر دارند. ابزار Secret Manager مکانیسم کلی تری برای ذخیره داده های حساس برای کارهای توسعه در خارج از درخت پروژه شما فراهم می کند.

نظرتون درباره این نوشته چیه؟ عالیه بد نیست خوب نبود