آموزش فریمورک ASP.Net Core MVC

ASP.NET Core MVC یک فریمورک سبک و open source است که برای برای ایجاد برنامه های تحت وب توسط مایکروسافت ارایه شده است.

نگاهی به ASP.NET Core MVC

ASP.NET Core MVC یک فریمورک قدرتمند برای ساخت برنامه های وب و API ها با استفاده از الگوی طراحی Model-View-Controller است. قبل از پرداختن به ASP.NET Core MVC نگاهی به الگوی MVC بیاندازیم.

الگوی MVC

الگوی ساختاری MVC یک برنامه web را به سه گروه اصلی از اجزاء تقسیم می کند: Model ها ، View ها و Controller ها. این الگو به دستیابی به separation of concerns (تفکیک نگرانی ها) کمک می کند. این جداسازی در یک برنامه تحت وب بدین معناست که کدهای HTML از کدهای برنامه به خوبی تفکیک شده اند و این کار موجب راحت تر شدن نگهداری و تست برنامه می شود.فریمورک های مختلفی از الگوی MVC استفاده می کنند که ASP.NETCore MVC یکی از آن ها است. با استفاده از الگوی MVC ، درخواست های کاربر که از سمت client به سمت server می آیند به Controller منتقل می شود و controller آن ها را پردازش می کند.

آموزش ASP.NET Core MVC

این شرح وظایف به شما کمک می کند تا برنامه را از نظر پیچیدگی مقیاس کنید زیرا خطایابی و تست کردن چیزی (Model ، View یا Controller) که یک کار واحد را انجام می دهد آسان تر است. به روزرسانی، تست و خطایابی کدی که وابستگی در دو یا بیشتر از این سه ناحیه دارد خیلی دشوارتر است. به عنوان مثال، تغییرات در UI بیشتر از تغییرات منطق کسب و کار است. اگر کد UI و کد Business در یک object ترکیب شوند، هر بار که UI تغییر می کند، باید یک object ای که حاوی منطق کسب و کار است تغییر یابد.

نکته: view و controller هر دو به model وابستگی دارند. اما model به هیچ یک از view یا controller وابستگی ندارد. این یکی از مهمترین مزایای جداسازی است. این جداسازی اجازه می دهد تا model مستقل از جنبه بصری ایجاد و تست شود.

  • Models : مدل در یک برنامه MVC بیانگر وضعیت برنامه و هرگونه منطق کسب و کار یا عملیاتی است که باید توسط آن انجام شود. منطق کسب و کار باید در مدل encapsulate شود. در واقع مدل شامل داده هایی است که کاربر با آن ها سر و کار دارد. این مدل می تواند شامل کلاس هایی که از آن ها با عنوان View Model یاد می شود باشند یا Domain Model باشند. از View Model ها برای انتقال ساده ی اطلاعات بین View و Controller استفاده می شود. Domain Model ها نیز کلاس هایی هستند که قوانین Business، قوانین تعیین اعتبار و تبدیل داده ها به فرمت مناسب و کارهایی از این دست را انجام می دهند. به عنوان مثال در یک سیستم بانکی model نمایانگر هر موجودیتی است که برنامه با آن سروکار دارد. موجودیت هایی از قبیل حساب ها، اطلاعات مشتریان بانک و عملیاتی مانند سپرده گذاری، برداشت وجه و ... . این لایه model هست که وظیفه مراقبت از وضعیت و جامعیت داده ها را دارد. مواردی همچون موفقیت آمیز بودن transaction ها و مراقبت از اینکه یک مشتری بیشتر از میزان موجودی حساب خود برداشت نکند.
  • Views : مسئول ارائه محتوا از طریق UI به کاربر هستند. آن ها از Razor برای جاسازی کد .NET در صفحات HTML استفاده می کنند.
  • Controller : در الگوی MVC کنترلرها محل ورود اولیه هستند و درخواست هایی که از سمت client به server می آیند را پردازش می کنند. Controller ها عملیاتی را بر روی مدل داده ها انجام می دهند و داده های موردنیاز کاربر را در قالب یک view مناسب به کاربر نمایش می دهند. در حقیقت controller ها گلوگاه ارتباطی بین درخواست ها و پاسخ ها هستند و به ورودی و تعامل کاربر پاسخ می دهند و نقش اصلی آن ها کنترل جریان و فرآیند کار است.

نکته: Contrller ها نباید توسط مسئولیت های بیش از حد پیچیده شوند. برای جلوگیری از پیچیده تر شدن منطق controller ، منطق کسب و کار را از controller به Domain Model منتقل کنید.

ASP.NET Core MVC

ASP.NET Core MVC یک فریمورک سبک و open source است که برایبرای ایجاد برنامه های مبتنی بر وب توسط مایکروسافت ارایه شده است.

ASP.NET Core MVC شامل ویژگی های زیر است:

  • Routing
  • Model binding
  • Model validation
  • Dependency injection
  • Filters
  • Areas
  • Web APIs
  • Testability
  • Razor view engine
  • Strongly typed views
  • Tag Helpers
  • View Components

Routing

مسیر یا Route قانونی است که معین می‌کند یک درخواست چگونه پاسخ داده شود. قبل از انتشار ASP.NET MVC ارتباط مستقیمی بین آدرس درخواستی و فایل معادل آن آدرس بر روی فایل سیستم server وجود داشت. وظیفه server دریافت درخواست از سمت مروگر و ارسال خروجی متناسب با فایل درخواستی توسط کاربر بود.

این مکانیزم برای برنامه های ASP.NET Web Forms که در آن به ازای هر درخواست، یک فایل مجزا با پسوند .aspx وجود دارد پاسخگو بود. در برنامه های ASP.NET Web Forms هر URL می بایست با فایل خاص aspx مطابقت داشته باشد. به عنوان مثال، برای دستیابی به آدرس http: //mysite.com/studentsinfo.aspx باید فایل studentsinfo.aspx که حاوی کدها و تگ های HTML است وجود داشته باشد. اگر این فایل بر روی فایل سیستم server وجود نداشته باشد، کد وضعیت 404 به مروگر برگشت داده خواهد شد که بدین معنا هست که فایل یافت نشد.

پردازنده درخواست می تواند یک فایل یا کلاس باشد. در برنامه ASP.NET Web Forms، پردازنده درخواست خود فایل aspx است. اما این مکانیزم در ASP.NET Core MVC کاملا متفاوت است. در ASP.NET Core MVC درخواست ها به وسیله متدهای اکشن که در Controller ها وجود دارند پردازش می شوند و ارتباط یکی به یکی میان آدرس درخواستی و فایل های متناظر آن ها بر روی فایل سیستم وجود ندارد.

تمام مسیرهای پیکربندی یک برنامه ASP.NET Core MVC در RouteTable ذخیره شده و توسط موتور مسیریابی برای تعیین کلاس یا فایل مناسب برای یک درخواست ورودی استفاده می شود. وقتی که کاربر یک url را از سرور درخواست می کند.آدرس درخواستی وی توسط سیستم مسیریابی دریافت می شود. سیستم مسیریابی تلاش می کند تا الگوی آدرس را با مسیرهایی که برایش تعریف کرده اند مقایسه کرده و مسیر را پیدا کند. بعد از پیدا کردن الگو و بیرون کشیدن نام controller و action درخواست به سمت action مربوطه ارسال می شود. اگر برای آدرس درخواستی الگوی مناسبی پیدا نشود، سیستم خطای 404 را برمی گرداند.

شکل زیر نشان دهنده روند مسیریابی است.

آموزش ASP.NET Core MVC

هر برنامه ASP.NET Core MVC باید یک مسیریابی اصلی و توصیفی را انتخاب کند تا URL ها قابل خواندن و معنی دار باشند. مسیر قراردادی پیش فرض {controller=Home}/{action=Index}/{id?} است که دارای دو مزیت است:

  • پشتیبانی از یک طرح مسیریابی اصلی و توصیفی
  • یک نقطه شروع مفید برای برنامه های مبتنی بر UI

انواع مسیریابی در ASP.NET Core MVC

در ASP.NET Core MVC دو نوع مسیریابی داریم:

Routing in ASP.NET Core MVC

مسیریابی براساس Convention

در این روش قراردادهای مسیریابی برای تعیین اینکه چه الگویی به عنوان الگوی آدرس صحیح شناخته شود، تعریف می شوند. این پیکربندی در متد Configure از کلاس Startup.cs انجام می شود.

Routing in ASP.NET Core MVC

مثال زیر از الگوی آدرس بالا پیروی می کند:

Convension based routing

مسیریابی با استفاده از Attribute ها

در این روش مسیریابی، تعریف مسیرها به کمک attribute هایی که در بالای سر controller و action ها نوشته می شود مشخص می شوند. بعد از مشخص کردن آن ها با وارد کردن آدرس مطابق الگویی که در attribute نوشته شده است، action موردنظر صدا زده می شود.

آموزش attribute routing در ASP.NET Core MVC
آموزش ASP.NET Core آموزش Routing در ASP.Net Core MVC آموزش الگوی MVC آموزش Attributes Routing فیلم آموزشی ASP.NET Core