تفاوت Asp.Net Core با Asp.Net MVC 5؟
بهترین راه برای یادگیری هر نوع از فن آوری های جدید، مقایسه ی آن با نسخه های قبلی آن است. در این جا به دنبال فهمیدن تفاوت Asp.net core با Asp.net mvc هستیم و سعی می کنیم این کار را با یک برنامه ی نمونه و مقایسه ی ساختاری آن انجام دهیم.
خوب اصولا تفاوت Asp net core با Asp net mvc درموارد بسیاری است که می خواهیم آن را بدون نوشتن کد و با توجه به ساختار مورد بررسی قرار دهیم.
” هسته ی ASP.NET فریم ورک نوشتاری برای ساختن برنامه های تحت وب و ابری می باشد. هسته ی ASP.NET کاملا اپن سورس است. “
کاملا اپن سورس بودن، کار آسانی نیست و مایکروسافت توانسته کار بسیار بزرگی را انجام دهد و این برنامه را در لینوکس و مایکروسافت قابل اجرا نماید.
نگاهی سریع به پیشرفت های ASP.NET CORE
- ساخت و اجرای برنامه های NET. در بستر های مختلف ویندوز و مک و لینوکس
- ساختن برنامه بر روی هسته ی NET. که ارائه ی فایل ها با پسوند های مختلف را امکان پذیر می نماید.
- ابزار های جدید برای توسعه ی مدرن تحت وب
- یک بسته ی مشترک برای API ها و MVC
- پیکر بندی بر مبنای محیط های ابری
- پشتیبانی کامل برای ساخت و استفاده از پکیج های NuGet
- پشتیبانی داخلی از کد نویسی و کد گذاری مستقل
- توانایی هاستینگ IIS در خود برنامه
تفاوت شماره ی 1 – یک بسته ی مشترک برای API های تحت وب و MVC در ASP.NET
ASP.NET MVC 5 به شما این گزینه را می دهد که API تحت وب خود و یا MVC و یا هر دو را در هنگام توسعه ی یک برنامه تحت وب انتخاب کنید. این بدان خاطر است که بین API و MVC 5 اختلاف بود.
ASP.NET Core MVC، در حال حاضر یک Web Stack را برای MVC و Web API پیکر بندی کرده است. تصویر زیر نشان دهنده Checkbox های خاکستری شده برای MVC و WEB API است، در حالی که MVC 5 گزینه ای برای افزودن API Web را می دهد.
تفاوت شماری 2 – تغییرات ساختاری در پروژه
اگر شما مرور گر پروژه ی ASP.NET را در سمت راست دیده باشید می دانید که Web.config ،Global ،asax در آن وجود ندارد. پس چه طوری با تنظیمات پیکر بندی و کد های مرتبط با شروع برنامه و ورود به برنامه کار می کند؟
Aspsetting.json و یک سری فایل های مخصوص پیکر بندی وجود دارند که این کار را در نبود فایل های نخسه ی 5 انجام می دهند. اگر شما شاخه به شاخه بررسی کنید تغییرات زیادی قابل رویت هستند.
تفاوت شماره ی 3 – .NET ، ASP. و NET. CORE را به طور کامل در خود جای داده است.
تا به حال با چارچوب NET. کار کرده ایم و از آن بدت برده ایم پس هسته ی NET. دیگر چیست ؟
” Asp.Net Core یک فریم ورک کد نویسی عمومی است که ویندوز، لینوکس و مک را پشتیبانی می کند و در همه ی آن ها قابل اجرا است”
پس حالا می توانیم برنامه های تحت وب و قابل اجرا در مک و ویندوز داشته باشیم. Asp.Net Core در مک یا در ویندوز قابل اجرا بود.
تازه هنوز تمام نشده، حتی در لینوکس و مک هم می توان با کمک visual studio code یا هر ویرایشگر دیگری مثل Vim ،Atom و Sublime کد نویسی کرد.
تفاوت شماره ی 4 – هسته ی ASP.NET نیازی به IIS برای هاستینگ ندارد.
تعجب نکنید، Asp.Net Core این بوده که برای بستر های مختلف قابل اجرا باشد. با این هدف مایکروسافت تلاش کرده تا برنامه های هسته ی APP.NET نیازی به IIS برای میزبانی نداشته باشند و در لینوکس دیگر نیازی به Nginx نباشد. برای درخواست اجرا در اینترنت از سرور Kestrel استفاده می شود.
تفاوت شماره ی 5 – شاخه ی wwwroot برای فایل های استاتیک
این شاخه همان شاخه ی اصلی برنامه های تحت وب در زمانی که در سرور اینترنت اجرا می شوند می باشد. فایل های استاتیک مثل Config.json که در شاخه ی wwwroot نباشند هیچ گاه قابل دسترسی نخواهند بود و نیازی به تعریف قوانین جدیدی برای محدودیت دسترسی به فایل های حساس نیست.
این فایل های استاتیک ممکن است فایل کتابخانه ای، تصویر، css، جاوا اسکریپت، html و … باشند.
به علاوه ی این ویژگی های امنیتی شاخه ی wwwroot کار های جامع مثل معادل سازی و جمع بندی را ساده می کند که می توان آن ها را به سادگی با استفاده از ابزار هایی مثل Grunt در کد نویسی قرار داد.
نام wwroot را می توان در project.json زیر قسمت Demwwroot تعویض نمود.
تفاوت شماره ی 6 – رویکردی جدید در برنامه نویسی سروری و کلاینت با کمک مدیریت وابستگی پکیج ها
هر برنامه نویس ASP.NET با شاخه ی References آشناست که تمامی DLL ها را در خود جای داده و پکیج های NuGet آشنا است.
مدیریت وابستگی پکیچ ها در سمت کلاینت مهم تر است چون نسبت به سمت سرور پیکج های بیشتری دارد. سمت کلاینت شما jQuery ،Bootstrap ،grunt و فریم ورک های جاوا مثل AngularJS ،Backbone و فایل های تصویری و غیره خواهد بود.
مدیریت سمت کلاینت در جامعه ی اپن سورس با نام های Bower ،NPM شناخته می شود . این ها بخشی از ” وابستگی ها ” هستند.
تفاوت شماره ی 7 – پکیج های سمت سرور درAsp.Net Core فضای کم تری اشغال می کنند.
از ابزار مدیریت پکیج NuGet برای اضافه کردن منبع اسمبلی ها، کتابخانه ها، فریم ورک ها و سایر پکیج هایی که از برنامه های دیگر گرفته می شوند استفاده می کردیم.
مثلا برای 30 برنامه که همه از پکیج های NuGet استفاده می کردند و هر کدام 70 مگ فضا ذخیره می گرفتند حدود 2 گیگ فضای خالی لازم بود.
پس برنامه نویسان هوشمند به فکری چاره ای برای این مشکل شدند. حالا حتی اگر شما 100 برنامه ی نمونه در هسته ی Asp.net داشته باشید می توانید با کمک NET. همه ی آن ها را با فضای کمی ذخیره کنید.
تفاوت شماره ی 8 – DI یا وارد کردن کد های داخلی، این ویژگی در Asp.Net Core پشتیبانی می شود.
آرشیو های DI در خود، کد هایی غیر مشترک و قابل تست را ذخیره می کنند که این کار برای بررسی واحد های کد های نوشته شده بسیار مهم است.
در برنامه های سنتی ASP.NET باید از DI های مجزایی مثل Unity و AutoFac استفاده می کردیم. باید پروژه ای جداگانه برای استفاده از DI ها می نوشتیم که کار اضافی بود.
حالا در برنامه های Asp.Net Core این DI ها باز نویسی شده و سرویس هایی برای استفاده و ایجاد آن ها در نسخه ی جدید فراهم شده اند.
در حقیقت برنامه ی MVC یک DI درون خود دارد. بیایید Startup.cs را باز کنیم و به دنبال configurationservice برویم. هدف اصلی آن پیکر بندی خدماتی مثل EFU، ورود به سیستم با رمز، اضافه کردن MVC و سرویس های دستی دیگری شبیه ISmsSender ،IEmailServer می باشد.
تفاوت شماره ی 9 – راز های کاربری در Asp.Net Core
خیلی وقت ها داده های حساس خود را در زیر مجموعه ی پروژه قرار می دهیم و به اشتباه با سایر کد ها آنها را منتشر می کنیم و به آن ها TFS اضافه می کنیم .همه ی ما با این مشکل برخورد داشته ایم. Asp.Net Core هم اکنون مفهمومی به نام راز های کاربری دارد.
Secret manager مکانیزمی جامع ارائه می کند که می توان داده های حساس را خارج از کد نویسی ذخیره نمود. ” ابزار secret manager داده های حساس شما را رمز گذاری و از آن ها به شکل داده های محافظت شده نگه داری نمی کند. این ابزار فقط برای کد نویسی مورد استفاده قرار می گیرد.”
نتیجه گیری :
تفاوت های زیادی درمقایسه با نسخه های قبلی ASP.NET MVC را بدون حتی نوشتن یک کد نشان دادیم که این گویای تلاش زیاد مایکروسافت برای اپن سورس شدن سیستم های خود می باشد