ضمن عرض سلام و احترام خدمت تمامی کاربران فروم محبوب آکادمی ایرسا
قصد داریم یکسری مقالات در زمینه برنامه نویسی های مختلف ، برای شما عزیزان قرار دهم . پیشاپیش از تمامی مدیران فروم قدردانی میکنم بابت این فروم بسیار مفید و کاربردی.
در این مقاله به بررسی تفاوت MVC و نسخه CORE می پردازیم.
شرکت مایکروسافت ، بعد از ASP.NET 4 ، دیگر نسخه 5 آن را منتشر ننمود ؛ در عوض ASP.NET Core را با ساختار درونی جدید منتشر کرد ، که بسیاری از نواقص ASP.NET MVC ، را بر طرف می کند.
چند مورد از نواقص ASP.NET MVC ، که نیاز به توسعه چارچوب جدید را بهتر نشان می دهند، عبارتند از:
- محدود بودن به وب سرور IIS بر روی ویندوز.
- قرار گرفتن Request ها در مسیرهای طولانی از handler ها و ماژول ها.
- بیگانگی کامل با چارچوب های مدیریت پکیج های سمت کاربر مانند bower, npm, gulp و غیره.
- انحصاری بودن چارچوب .NET ، تا قبل از این.
مسائل بالا ، عمده نقص هایی بودند که موجب شدند ، تیم .NET ، به فکر ایجاد بستر جدیدی باشند ؛ به طوری که این بستر ، ویژگی هایی مانند سبک بودن ، کارآیی بالا و قابلیت توسعه و استقرار نرم افزار در محیط هایی غیر از ویندوز را داشته باشد.
ASP.NET Core ، یک چارچوب سبک و سازگار برای ساخت برنامه های کاربردی تحت وب و ابر (cloud) می باشد. ASP.NET Core ، به طور کامل، متن باز (open source) می باشد. متن باز بودن کامل، کار ساده ای نیست و شرکت مایکروسافت توانسته است، کار بسیار بزرگی را انجام دهد و این برنامه را در پلتفرم هایی مانند لینوکس و ماکروسافت، قابل اجرا نماید.
نگاه سریع به بهبودهای ایجاد شده در ASP.NET Core :
- ساخت و اجرای اپ های ASP.NET چند پلتفرمی (cross – platform) ، در ویندوز، Mac و لینوکس.
- توسعه برنامه بر روی Core .Net که از ساخت اپ ها با ورژن های مختلف و در کنار هم ، پشتیبانی می کند.
- ارائه ابزار های جدید برای ساده کردن کار توسعه برنامه های کاربردی تحت وب مدرن.
- ارائه پشته یک طرفه وب (Single aligned web stack) برای API های وب و MVC.
- پیکر بندی بر مبنای محیط های ابری.
- پشتیبانی یکپارچه برای ساخت و استفاده از پکیج های NuGet.
- پشتیبانی داخلی از کد نویسی جهت تزریق وابستگی ها.
- قابلیت میزبانی در IIS ، یا خود میزبانی ، در فرآیندهای داخلی برنامه.
همان طور ، که در تصویر زیر مشاهده می شود، پروژه ASP.NET Core را به دو صورت می توان اجرا نمود:
- مانند قبل، تحت چارچوب .NET ، یعنی نسخه 4.6 و یا کمتر بر روی ویندوز و وب سرور IIS ، اجرا شود.
- می تواند در .NET Core ، بر روی هر یک از پلتفرم های ویندوز، لینوکس یا OS x اجرا شود.

مقایسه چارچوب های .NET با یکدیگر
در شکل زیر، دسته بندی های مختلف .NET ، نشان داده شده است.
چارچوب .NET ، برای توسعه برنامه های کاربردی تحت ویندوز با استفاده از WPF و Windows Forms و برنامه های کاربردی تحت وب با استفاده از ASP.NET MVC ، کاربرد دارد.جهت اطلاعات بیشتر به مقاله آموزش ASP.NET جهت ورود به بازار کار مراجعه کنید.
.NET Core ، کتابخانه های UWP و ASP.NET Core را پشتیبانی می نماید. UWP ، برای ساخت برنامه های کاربردی مخصوص Windows 10 و ASP.NET Core ، برای ساخت برنامه های کاربردی تحت وب ، برای سیستم عامل های ویندوز ، لینوکس و مک استفاده می شوند.

تفاوت های ASP.NET Core با ASP.NET MVC
تفاوت های عمده چارچوب ASP.NET Core با ASP.NET MVC ، می توانند شامل موارد ذیل باشند:
- اضافه شدن برخی ویژگی های جدید و یا بهبود امکانات و ویژگی های قبلی در ASP.NET Core ، مانند ماژولار بودن.
- بازنویسی کلاس ها و کتابخانه های موجود در ASP.NET MVC جهت بهبود آن ها.
- پیشرو و به روز تر بودن ASP.NET Core نسبت به ASP.NET MVC.
- دسترسی ASP.NET Core به محیط های پردازش ابری.
از بین ASP.NET MVC و ASP.NET Core ، کدام را انتخاب کنیم؟
برای برنامه نویسان حرفه ای، که در حال اجرای یک پروژه هستند، و امروز مجبور به انتخاب یک از چارچوب های ASP.NET MVC و ASP.NET Core می باشند، در ادامه چند سناریو داریم:
- ASP.NET Core انتخاب بهتری است، اگر:
- می خواهند برنامه کاربردی تحت وب خود را روی سیستم عامل های ویندوز، لینوکس و Mac اجرا نمایند.
- از یادگیری چیزهای جدید، هراسی ندارند.
- نداشتن ترس از شکستن و درست کردن اشیاء. چرا که ASP.NET Core هنوز کامل نمی باشد.
- ASP.NET MVC انتخاب بهتری است اگر:
- نیازی به پشتیبانی چند پلت فرم (cross – platform) ، برای برنامه کاربردی تحت وب ندارند.
- نیاز به یک محیط پایدار برای کار کردن دارند.
- زمان انتشار (release) برنامه کاربردی آنان ، نزدیک است.
- در حال حاضر، روی برنامه کاربردی موجود، کار می کنند و به طور عملی در حال توسعه آن هستند.
- در حال حاضر تیمی با متخصصین ASP.NET دارند.
این مقالات ادامه خواهد شد. سعی میکنم هفتگی دو تا سه مقاله درج کنم .