مقایسه ی ASP.NET MVC با ASP.NET Core
فهرست مطالب
قصد داریم در این مقاله یکی دیگر از مهم ترین چالش های طراحان وب را مورد بررسی قرار دهیم.
سوالی که برای بسیاری از کسانی که قصد یادگیری asp را دارند مطرح است که تفاوت بین ASP.NET MVC با ASP.NET Core در چیست ؟
Asp.Net MVC یک فریمورک توسعه برنامه مبتنی بر وب است که توسط مایکروسافت در سال ۲۰۰۹ معرفی شد.
پس از چندین سال در سال ۲۰۱۶ ، مایکروسافت فریمورک جدیدی به نام Net Core را معرفی کرد.
مایکروسافت این فریم ورک را به عنوان یک فریمورک کاملا جدید توسعه داد.
در دنیای توسعه وب امروزی ، همه مایل به توسعه برنامه های کاربردی وب بر اساس یک فریمورک ایمن ، مقیاس پذیر ، انعطاف پذیر و آماده برای cloud هستند.
بنابراین ، اگر امروز میخواهیم از Asp.Net Core به جای Asp.Net MVC استفاده کنیم ، قبل از استفاده از آن باید بدانیم که مزایایی که از این فناوری جدید میتوانیم به دست آوریم و همچنین ویژگیهای جدید چیست که در نسخه قبلی Net Framework موجود نیست.
بنابراین، در این مقاله، ما عمدتا بر روی بحث تفاوت و مقایسه ی بین Asp.Net MVC و Asp.Net Core تمرکز کردیم.
با ما همراه باشید.
لازم به ذکر است ما قبلا در دو بخش به آموزش و آشنایی کلی در رابطه با Asp.Net بخش اول و Asp.Net بخش دوم پرداخته ایم.
ASP.NET MVC چیست؟
ASP.NET MVC یک فریمورک توسعه وب توسط شرکت مایکروسافت است که در سال 2009 منتشر شد.
این یک جایگزین برای مدل کدگذاری Web Forms برای ساخت برنامه های کاربردی وب است.
این فریمورک اجازه می دهد تا به سرعت برنامه های کاربردی وب در کلاس سازمانی قوی و مقیاس پذیر ، وب سایت های پویا ، صفحات تعاملی و خدمات ایجاد شود.
همچنین این فریمورک ز HTML/JS ، WML و XML ، VB.NET ، C#، J# ، JScript.NET و Microsoft Visual Studio پشتیبانی می کند.
MVC بهترین ویژگی های ASP.NET را به ارث برده است.
ASP.NET MVC همچنین معماری Model View Controller را ارائه می دهد که یک الگوی طراحی پیشرفته است و معمولاً برای توسعه رابط کاربری استفاده می شود.
Model View Controller (MVC) همانطور که از نام آن مشخص است وب را به سه کامپوننت مجزا تقسیم می کند : Model ، View و Controller.
پس از آن ، الگوی معماری MVC تعاملات بین این کامپوننت ها را تعریف می کند.
این فریمورک قبلاً یک انتخاب محبوب در میان توسعه دهندگان نرم افزار برای برنامه نویسی برنامه ها و وب سرویس بود.
ASP.NET Core چیست؟
ASP.NET Core MVC یک نسخه فریمورک ارتقا یافته در مقایسه با ASP.NET MVC است.
این فریم ورک در مقایسه با نسخه قبلی بسیار سبکتر ، منبع بازتر و بسیار قابل آزمایش است.
این فریم ورک با کمک آخرین استانداردهای وب از یک محیط توسعه سازگار با TDD پشتیبانی می کند.
الگوی MVC (Model-View-Controller) برنامه را به سه بخش یا جزء اصلی ، یعنی Models ، Views و Controller تقسیم می کند.
Model
در برنامه MVC ، مدل مسئولیت نمایش وضعیت برنامه و هر Business logic یا DB level operations را بر عهده می گیرد.
business logic همیشه با کلاس مدل محصور شده است.
برای نمایش ، داده ها در views Strongly-type ، views یا ViewModel به گونه ای طراحی شده اند که داده ها را از مدل و ViewModel نمایش دهند.
کنترلر همیشه این نمونه های ViewModel را از Model ایجاد و پر می کند.
View
در برنامه MVC ، می توان گفت Views مسئولیت نمایش محتوا یا داده ها را به رابط کاربری بر عهده می گیرد.
در این View، ما می توانیم از Razor View Engine برای ادغام هسته NET در کد HTML استفاده کنیم.
به طور معمول، ما حداقل مقدار لاجیک را در قسمت view حفظ می کنیم و اگر نیاز به پیاده سازی لاجیکی داریم، باید به محتوای ارائه شده در رابط کاربری مربوط باشد.
ما هیچ business logic را در قسمت view پیاده سازی نمی کنیم.
برای طراحی یک View پیچیده یا رابط کاربری، میتوانیم View Component، ViewModel یا View Template را در نظر بگیریم تا فرآیند سادهتر شود.
Controller
در برنامه های کاربردی MVC ، کنترلرها مسئولیت مدیریت تعاملات کاربر و برقراری ارتباط با مدل ها و View ها را بر عهده می گیرند.
در برنامه MVC ، Views فقط می تواند اطلاعات را نمایش دهد.
کنترلکنندهها همیشه ورودیهای کاربر را کنترل میکنند و به تعامل کاربر پاسخ میدهند.
در MVC Pattern همیشه Controller نقطه ورود است و همیشه مسئول نهایی کردن این است که کدام نوع مدل باید کار کند و کدام view باید ارائه شود.
مقایسه ی اولیه بین MVC و CORE از لحاظ میزان استفاده
مشکلی که ASP.NET MVC دارد ، این است که دیگر در حال توسعه نیست.
آخرین نسخه به روز رسانی آن در نوامبر 2018 بود.
با این وجود ، همچنان بسیاری از پروژه ها از ASP.NET MVC برای توسعه وب استفاده می کنند.
بر اساس تحقیقات JetBrains ، می توان گفت ۴۲ درصد از توسعه دهندگان نرم افزار از این فریمورک در سال 2020 استفاده می کردند و طبق داده های Statista می توان گفت ۳۱.۵ درصد از توسعه دهندگان از ASP.NET Core در سال ۲۰۲۱ استفاده می کردند.
و طبق این آمار می توان نتیجه گرفت که میزان استفاده از ASP.NET Core در حال بیشتر شدن است.
ویژگی های اصلی ASP.NET Core و مقایسه با MVC
کراس پلتفرم
ASP.Net Core یک فریمورک کراس پلتفرم است.
بنابراین ، با استفاده از این فریمورک میتوانیم هر برنامهای را برای هر سیستمعاملی مانند ویندوز ، لینوکس ، macOS و … توسعه دهیم.
همچنین ، این فریمورک یک محیط Cloud برای توسعه و استقرار است.
ساختار پروژه ها
در Asp.Net Core ، ساختار پوشه project یا solutions تغییر کرده است.
تفاوت عمده در ساختار پروژه این است که پروژه های Asp.Net Core حاوی هیچ فایل web.config مانند پروژه های Asp.Net MVC نیستند.
بنابراین ، سؤالی پیش میآید که با این حال ، اعمال با تنظیمات پیکربندی کاملاً متفاوتی مانند احراز هویت و … سر و کار دارد.
همچنین در Asp.Net Core پوشه جدیدی به نام wwwroot در ساختار پروژه اضافه شد.
این فایل ها اساساً محفظه تمام فایل های ثابتی است که باید به مرورگر ارسال شوند ، مانند css، html، تصاویر، جاوا اسکریپت و …
تصویر زیر تفاوت واضحی را در ساختار پروژه نشان می دهد.
برای هاست به IIS بستگی ندارد
همانطور که قبلاً گفتیم Asp.Net Core یک فریمورک Cross-Platform است ، بنابراین ما می توانیم برنامه های Asp.Net Core را نه تنها در IIS بلکه در Nginx، Apache ، Docker و … میزبانی کنیم.
asp.net core در وب سرور لینوکس از Nginx استفاده می کند ؛ در این حالت Kestrel به عنوان یک وب سرور داخلی برای پردازش درخواست عمل می کند.
پشتیبانی
از آنجایی که NET Core از همه گزینه ها و عملکردهای ارائه شده توسط جدیدترین نسخه NET Framework پشتیبانی نمی کند.
با این حال ، قرار است به عنوان مجموعه ای از NET Framework. استفاده شود.
NET Core همچنان با NET Framework. از طریق NET traditional Library. سازگار است.
از این رو ، توسعه دهندگان همچنان می توانند برنامه های توسعه یافته با NET Framework. را پس از ارتقاء به NET Core اجرا کنند.
ماژول های کتابخانه
هم NET Framework. و هم NET Core. به توسعه دهندگان این امکان را می دهند که از sturdy category libraries استفاده کنند.
اما NET Core. از یک redesigned common language runtime به نام CoreCLR استفاده می کند و مجموعه ای مرسوم از کتابخانه ها به نام CoreFX را انتخاب می کند.
از این رو ، توسعه دهندگان این گزینه را دارند که تصمیم بگیرند و از کتابخانه های مورد نیاز هر برنامه استفاده کنند و عملکرد و میزان بهینه سازی برنامه را با حذف کتابخانه های اضافی افزایش دهند.
توسعه اپلیکیشن های تلفن همراه
NET Framework. هیچ فریمورک یا ابزاری را برای توسعه اپلیکیشن موبایل در بر نمی گیرد.
اما NET Core با Xamarin با کمک کتابخانه معمولی دات نت سازگار است.
از این رو ، توسعهدهندگان میتوانند بیشترین استفاده را از Xamarin برای قرار دادن برنامههای تلفن همراه کراس پلتفرم در سی شارپ با یک پایه کد مشترک با کمک همان APIها ببرند.
میکروسرویس
در مورد Net Core ، این فریم ورک زندگی توسعه دهنده را برای توسعه سیستم های میکروسرویس گرا بسیار آسان می کند که در مورد Net Framework این استاندارد بسیار کامل شده است.
NET Core به برنامه نویسان اجازه می دهد تا میکروسرویس های سفارشی را mistreatment variable programming languages ، فناوری ها و فریم ورک های برنامه نویسی متغیر توسعه دهند.
همچنین ، توسعه دهندگان می توانند با ترکیب چندین میکروسرویس به طور یکپارچه، یک سیستم قدرتمند بسازند.
عملکرد و کمیت
NET Core نسبت به NET Framework. برای تقویت عملکرد و کمیتپذیری برنامهها بسیار معقول تر است.
این به توسعه دهندگان اجازه می دهد تا عملکرد برنامه ها را به شدت تقویت کنند ؛ در حالی که هیچ سخت افزار یا زیرساختی را مستقر نمی کنند.
همچنین، به توسعه دهندگان این امکان را می دهد که برنامه ها را مستقیماً در محیط cloud ایجاد ، بررسی و استقرار دهند.
از این رو ، توسعهدهندگان میتوانند برای تقویت عملکرد و کمیتپذیری برنامههای خود ، به NET Core. سوئیچ کنند.
ویژگی Runtime Store
پروژه NET Core MVC فضای مربوط به پکیج های سمت سرور را ذخیره می کند.
به عنوان یک توسعه دهنده ، ما معمولاً از NuGet package manager برای اضافه کردن یک reference برای انواع مختلف اسمبلی ها ، کتابخانه ها ، فریمورک ها یا هر third-party packages استفاده می کنیم.
در نسخه قبلی فریمورک دات نت ، این پکیج ها معمولاً از NuGet در پوشه Packages زیر ساختار پروژه دانلود می شدند.
بنابراین ، برای مثال ، پشتیبانی ما حدود 30 برنامه ASP.NET است و هر برنامه از حدود 70 مگابایت پکیج های NuGet برای رفرنس هدف استفاده می کند ، سپس در مفهوم کلی ، حدود 2 گیگابایت فضای دیسک اضافی برای ذخیره آن پکیج های NuGet نیاز خواهد داشت.
بنابراین، برنامه مبتنی بر ASP.NET Core تمام پکیج های مربوط به توسعه یا رفرنس هدف خود را در پوشه های Users ذخیره می کند.
بنابراین ، هنگام ایجاد برنامه ، ویژوال استودیو رفرنس را از پوشه کاربر می گیرد.
این ویژگی معمولاً Runtime store برای NET Core نامیده می شود.
حتی با وجود اینکه ما 100 ها برنامه وب داریم که از فریمورک ASP.NET Core استفاده می کنند اما همه آنها ارجاعاتی از پوشه کاربر هستند.
بنابراین ، هیچ فضای اضافی برای آن برنامه ها مورد نیاز نیست.
DEPENDENCY INJECTION
Dependency Injection (DI) به کدهای آزاد و قابل آزمایش اضافی در برنامه ها می رسد.
در ASP.NET MVC 5/4 یا برنامه های مبتنی بر classic ASPX ، ما تمایل داریم از کانتینرهای DI جداگانه استفاده کنیم که مانند Unity، AutoFac ، StructureMap و … استفاده می شود.
در برنامههای ASP.NET Core ، می توان گغت DI ذاتی است ، یعنی بدون ایجاد مواردی برای DI ؛ به سادگی می توان برخی از سرویس ها را تولید کنید و برای استفاده از DI قابل دستیابی باشید.
در مورد نمونه برنامه های Net Core MVC ، پروژه های نمونه همیشه از inherited DI در کد استفاده می کنند (مخصوصاً در فایل Startup.cs).
با کمک این فایلها ، میتوانیم هر نوع پیکربندی مانند EF، Authentication و … را پیادهسازی کنیم و همچنین سرویس های سفارشی را در صورت نیاز پیادهسازی کنیم.
ترکیب فریمورک ها
همانطور که می دانیم NET Core Framework. از محیط های Cross-Platform با کامپایل مداوم پشتیبانی می کند.
بنابراین ، در ASP.NET Core میتوانیم هر برنامهای را بر اساس هر سیستمعاملی توسعه دهیم و سپس به راحتی آن را برای سایر محیطهای سیستمعامل نیز بدون دردسر زیاد منتشر و اجرا کنیم.
به عبارت ساده ، فریمورک ASP.NET Core یک فریمورک بسیار پیشرفتهتر است و با موفقیت هر دو Web API و NET MVC را در یک فریمورک واحد ترکیب میکند.
میزان کد کمتر
کیفیت کد ، کیفیت یک برنامه را مشخص می کند.
ASP.NET Core به توسعه دهندگان اجازه می دهد تا statement های کمتری بنویسند.
از این رو ، ساختار کد آسانتر میشود و کدگذاری کمتری مورد نیاز است.
این امر توسعه اپلیکیشن موبایل را برای سازمان ها مقرون به صرفه می کند.
علاوه بر این ، کنترل بیشتری به توسعه دهندگان می دهد و اشکال زدایی را ساده می کند.
منابع
مهرسا امینی
برنامه نویس ، انیماتور ، سئوکار
عشق روشنایی بخش تمامی تاریکی هاست.