سه شنبه , آبان ۲۹ ۱۳۹۷
خانه / آموزش برنامه نویسی / آموزش برنامه نویسی وب / آموزش Asp.net core / تفاوت های بین Asp.net Mvc و Asp.net Core چیست؟

تفاوت های بین Asp.net Mvc و Asp.net Core چیست؟

تفاوت های بین Asp.net Mvc و Asp.net Core چیست؟

 

با یک مقاله دیگر از سایت Aspcore.ir در خدمت شما هستیم. یکی از بهترین راههای یادگیری هر تکنولوژی جدید مقایسه آن تکنولوژی با تکنولوژی های قدیمی تر می باشد. برای درک سوال تفاوت های بین Asp.net Mvc و Asp.net core چیست نیز از همین روش استفاده خواهیم کرد.

 

بنابراین در این مقاله نیز سعی خواهیم کرد با مقایسه این دو تکنولوژی به یادگیری آنها بپردازیم.

 

نکته اول اینکه Asp.net core یک فریم ورک سبک و قابل ترکیب با سایر فریم ورک ها جهت ایجاد نرم افزارهای تحت وب می باشد. همچنین Asp.net Core کاملا اپن سورس می باشد. بحث اپن سورس بودن Asp.net Core یکی از مهم ترین تفاوت های بین Asp.net Mvc و Asp.net Core می باشد.

 

 

شاید در نگاه اول اپن سورس بودن آن قدرها هم جدی به نظر نمی رسد. اما مایکروسافت قدمهای بسیار جدی و بزرگی را برای این موضوع برداشته است و کارهای خارق العاده ای را برای اجرای نرم افزارهای تحت وب روی سیستم عامل های ویندوز، لینوکس و مک انجام داده است.

 

 

مشاهده فیلم تفاوت های بین Asp.net Mvc و Asp.net Core چیست در آپارات

 

 

 

نگاهی مختصر به مزایای Asp.net core :

 

  • ایجاد و توسعه نرم افزارهای تحت وب چند سکویی (Cross PlatForm) و قابل اجرا روی ویندوز، لینوکس و مک
  • ایجاد ابزار جدید توسعه و طراحی جهت توسعه مدرن تر و بهتر نرم افزارهای وب (مانند Tag Helper ها)
  • ایجاد محیطی برای برنامه نویسی نرم افزارهای Cloud
  • توانایی اجرای نرم افزار تحت وب روی IIS و همچنین Self-host و هاست Kestrel
  • پشتیبانی بسیار عالی از تزریق توکار (dependency injection)
  • استفاده بسیار بهتر و کاربردی تر و راحتتر از کتابخانه ها و رفرنسهای موجود در nuget
  • و بسیاری از مزایای دیگر …

 

تفاوت های بین Asp.net Mvc و Asp.net Core چیست؟

 

اما در ادامه این مقاله به ذکر چند تفاوت اساسی بین Asp.net Core و Asp.net Mvc می پردازیم:

 

  • تفاوت اول بین Asp.net Core و Asp.net Mvc ادغام Web Api ها با Mvc و  web Page می باشد.

در واقع مجموع این سه گزینه Asp.net Core را ایجاد می کند. این در حالی می باشد که در Asp.net Mvc گزینه Web Api ها کاملا از پروژه های Mvc جدا می باشد.

این مورد را هنگام ایجاد پروژه در Asp.net Mvc می توانستید مشاهده بفرمایید. تصویر زیر را که مربوط به Asp.net Mvc می باشد را مشاهده بفرمایید.

 

 

تفاوت asp core و asp mvc

 

 

در واقع می توان گفت :

 

MVC + Web API + Web Pages = ASP.NET Core MVC

 

  • تفاوت دوم این می باشد که در Asp.net Mvc جهت اجرای پروژه حتما نیاز به IIS می باشد.

اما در Asp.Net Core با توجه به چند سکویی بودن یا همان Cross PlatForm بودن جهت اجرای نرم افزار الزاما به IIS نیازی نیست و نرم افزار تحت وب می تواند توسط هاست درونی خود یا self hosted و یا Kestrel(هاست لینوکس) اجرا شود.

 

 

  • تفاوت سوم در Asp.Net Core در این می باشد که توسط کلاسی به نام IServiceProvider می توان به صورت مستقیم در سازنده یا Constructor هر کلاس تزریق وابستگی را انجام داد. در واقع می توان گفت در Asp.net Core به صورت توکار تزریق وابستگی بین کلاس ها و InterFace ها انجام می شود.

 

 

  • تفاوت چهارم بین Asp.net Mvc و Asp.net Core در ساختار پروژه می باشد. در تکنولوزی Core بسیاری از فایل ها و فولدرهای مهم و پرکاربرد در Asp.net Mvc حذف شده است.

از جمله مهم ترین این موارد فایل web.config می باشد که فقط در نسخه پابلیش شده موجود می باشد.

فایهای App_Start، Global.asax و پوشه App_Data نیز حذف شده اند.

فایل App_Start با فایل StartUp.cs جایگزین شده است و فایل مهم web.config نیز با فایل appsetting.json جایگزین شده است.

همچنین یک تغییر بسیار مهم در Core جایگزینی فایلهایی از نوع json به جای فایلهایی از نوع xml می باشد.

 

 

تفاوت های بین Asp.net Mvc و Asp.net Core چیست؟

 

 

  • تفاوت پنجم این می باشد که در Asp.net core مسیری جهت نگهداری فایلهای ثابت یا static پروژه به وجود آمده است به نام wwwroot که این محل در Asp.net Mvc وجود نداشت.

همانطور که می دانید فایلهای ثابت پروزه همان فایلهای css، jquery و تصاویر پروژه می باشند.

این مسیر wwwroot همان مسیر پیش فرض یا root سرور شما نیز می باشد که بدین ترتیب دسترسی به آن بسیار ساده شده است.

به این ترتیت هر درخواستی که برای نمایش تصاویر سایت شما یا هر درخواستی برای فایلهای ثابت پروژه شما به سمت هاست ارسال شود مستقیما به این آدرس هدایت می شود و پاسخ به سمت کاربر می رود.

 

نکته : دقت نمایید نام wwwroot را می توان در فایل project.json تغییر داد.

 

 

  • تفاوت ششم که یکی از قابلیتهای بسیار مفید و مورد استقبال برنامه نویسان می باشد عدم نیاز به Complie پروژه جهت مشاهده خروجی می باشد.

کافی است شما جهت اجرای پروژه گزینه start without debugging را از منوی Debug انتخاب نمایید و با هر گونه تغییری در کد فقط پروژه را Build کرده و مرورگر خود را رفرش نمایید تا خروجی را مشاهده نمایید.

این امر سرعت توسعه نرم افزار را بسیار افزایش می دهد.

 

 

  • تفاوت هفتم این می باشد که شما هر رفرنس یا کتابخانه و یا ابزاری را جهت برنامه نویسی نیاز داشته باشید می توانید مستقیما و به راحتی به صورت پکیج از nuget دریافت نمایید و نیاز به هیچ گونه اضافه کردن dll نمی باشد.

 

 

تفاوت های بین Asp.net Mvc و Asp.net Core چیست؟

 

 

  • تفاوت هشتم فایل Project.json می باشد که به راحتی وابستگی های پروژه ، نحوه Build شدن، نحوه اجرا شدن پروژه و تنظیمات پابلیش شدن پروژه را درون خود نگهداری می کند. در Asp.net Mvc این موارد در فایل ProjectName.csproj نگهداری می شد که مدیریت آن مشکل بود.

 

 

 

  • تفاوت نهم معرفی Tag Helper ها می باشد که نسبت به Html Helper ها بسیار کاربردی تر و راحتتر می باشد.

ضمنا استفاده از Tag Helper ها دقیقا مشابه با همان Html  و css معمولی می باشد و از این بابت طراح نگران مطلب جدیدی نخواهد بود.

Tag Helper ها اجازه استفاده از همان المنتهای Html معمولی مانند تگهای div و img و a و … را می دهند.

استفاده از تگهای پیش فرض Html برای یک طراح بسیار خوشایند تر می باشد نسبت به استفاده از Html Helper ها!!!

 

تفاوت های بین Asp.net Mvc و Asp.net Core چیست؟

 

 

  • تفاوت دهم معرفی قابلیت _ViewImport ها می باشد.

در واقع شما می توانید با تعریف رفرنس های مورد نیاز در ویوها در یک ViewImport از آن رفرنس  در تمامی ویوهای خود استفاده نمایید و نیازی به نوشتن مجدد نام رفرنس نمی باشد.

در Mvc قدیمی این گزینه در فایل web.config موجود در پوشه views قابل تغییر و تنظیم بود.

 

 

  • تفاوت یازدهم تفاوتهایی در Routing یا همام مسیریابی ها می باشد. به عنوان مثال در Asp.net Core می توان حتی در attribute های HttpGet و HttpPost هم مسیریابی را انجام داد. به مثال زیر دقت نمایید :

HttpGet(“Route”)] and [HttpPost(“Route”)]

همچنین در Asp.net Core تمام اکشن ها و کنترلها دارای توکن می باشند.

به این معنی که اگر در آینده نام کنترلرها و یا اکشن های شما تغییر کرد نیازی به تغییر مسیرها یا Routing ها نمی باشد.

 

 

  • و اما تفاوت دوازدهم در Asp.net core این موضوع می باشد.

تمامی اکشن ها و view ها دارای یک ویژگی AntiForgeryToken پیش فرض می باشند و جلوی دسترسی های غیر مجاز را به صورت پیش فرض می گیرند.

این موضوع هنگام پیاده سازی سایت نوشته شده با Core روی سرور یا هاست Plesk بسیار نمایان است.

 

 

در مورد تفاوتهای Asp.net Core و Asp.net Mvc موارد دیگری نیز وجود دارد اما مهم ترین و ملموس ترین تفاوت ها را ذکر کردیم.

 

شما کاربران گرامی می توانید جهت استفاده از مطالب مفید و کاربردی در رابطه با دنیای برنامه نویسی در کانال ما عضو شوید.

همچنین گروه رفع اشکال نیز  در کانال وجود دارد.

استفاده از این مقاله با ذکر منبع هم مجاز نیست.

 

تفاوت های بین Asp.net Mvc و Asp.net Core چیست؟

درباره سعید بحرانی فرد

6 نظر ثبت شده است.

  1. سایت بسیار خوبی دارید و مقالات خوبی رو می نویسید.
    تشکر از شما و سایت خوب شما

  2. متشکرم استاد بحرانی فرد
    بسیار عالی و کامل شرح دادید

  3. متشکر از مقاله خوب
    کاملترین مقاله در زمینه تفاوت mvc و core بود که خونده بودم

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *