تفاوت بین ASP.net MVC 6 و ASP.net MVC 5

شنبه 7 آذر 1394

بهترین راه برای یادگیری هر چیز جدید در یک تکنولوژی مقایسه با ورژن قبلی آن است. در این مقاله تفاوت میان ASP.net 6 و ASP.net 5 را بوسیله ارائه یک مثال و مقایسه معماری Solution آنها خواهیم فهمید.

تفاوت بین ASP.net MVC 6 و ASP.net MVC 5

بهترین راه برای یادگیری هر چیز جدید در یک تکنولوژی مقایسه با ورژن قبلی آن است. در این مقاله تفاوت میان ASP.net 6 و  ASP.net 5 را بوسیله ارائه یک مثال و مقایسه معماری  Solution آنها خواهیم فهمید.

در مقاله قبل درباره  ASP.net 5 بحث کردیم. اکنون به بررسی تفاوت های آن با  ASP.net MVC 6  می پردازیم.

در ابتدا یک برنامه با استفاده از ASP.net MVC 6 و یکی با  ASP.net MVC 5  ایجاد میکنیم.

تفاوت اول - پشته های وب

ASP.net MVC 5 گزینه هایی برای انتخاب  MVC  یا  Web API یا هر دو هنگام ایجاد یک برنامه به ما می دهد.

ASP.net MVC6  دارای یک پشته وب هم راستا برای  MVC 6 و  Web API است .تصویر زیر نشان می دهد CheckBox ها برای  MVC و  Web API غیر فعال هستند در حالیکه در MVC 5 گزینه ای برای اضافه کردن  Web API  داشت .

تفاوت دوم - تغییرات ساختاری Solution explorer

اگر به  MVC 6 نگاهی بیاندازید ، در  Solution explorer فایلهای  Web.config و  Global.asax را نمیبینید. پس چگونه تنظیمات پیکربندی ، احراز هویت و اجرای کدهای خاص شروع برنامه انجام می شود؟  Project.json  و  Config.json فایلهایی هیتند که برای انجام این کارها تعبیه شده اند.

تفاوت سوم - Full.NET    و  NET Core.

full.NET تجربه شگفت انگیزی است که تا به حال بوده و ادامه خواهد داشت.

NET Core.  یک پیاده سازی  Cross-platform از  NET. است .

 اکنون می توانیم ASP.Net MVC 6  یا  ASP.Net MVC 5 را در مقابل NET Core / full .Net گسترش دهیم و هم در  Windows  و هم در  Linux  یا  Mac اجرا کنیم. علاوه بر Windows  در Linux  و  Mac  هم می توان با استفاده از  Visual Studio Code  برنامه نویسی کرد. 

تفاوت چهارم -  ASP.Net MVC 6 نیازی به  IIS برای میزبانی ندارد

هدف اصلی  ASP.NET 5  استفاده از چهارچوب NET Core. بوده است . با در نظر داشتن این قضیه مایکروسافت تصمیم گرفت برنامه های  ASP.NET 5  بتوانند نه تنها بر روی  IIS میزبانی شوند بلکه بتوانند خود میزبان باشند یا از Kestrel Web Server  در لینوکس استفاده کنند.

 

تفاوت پنجم - wwwroot برای فایلهای استاتیک

پوشه wwwroot ریشه واقعی  Web application  ها را هنگام اجرا بر روی وب سرور ارائه می دهد. قایلهای استاتیکی مانند config.json که در wwwroot قرار ندارند، هیچگاه قابل دسترس نخواهند بود، و نیازی به ایجاد قوانین جدید برای جلوگیری از دسترسی به فایلهای حساس نخواهد بود.

فایلهای استاتیک میتوانند HTML ,JavaScript , CSS,  تصاویر و کتابخانه ها و ... باشند.

علاوه بر مزایای امنیتی ،  wwwroot  کارهای معمولی مانند bundling و minification را بسیار ساده کرده است، که به آسانی می تواند در یک روند ساخت استاندارد ترکیب شود که از ابزاری مانند Grunt به صورت خودکار استفاده میکند.

 

تفاوت ششم - رویکرد جدید در مدیریت وابستگی های سمت سرور و سمت سرویس گیرنده

هر برنامه نویس NET. با پوشه مرجع ها که dll ها و  NuGet  ها را نگهداری میکند آشنایی دارد. در ASP.NET 5 می توانیم DNX 4.5.1  و DNX core 5.0 را هدف قرار دهیم.

تجربه کار در Visual studio و توسعه برنامه های  ASP.Net 5  در  Windows tLinux  و  Mac با استفاده از DNX core 5.0  مدیریت وابستگی های سمت سرور است.

مدیریت وابستگی های سمت مشتری بسیار مهم تر است زیرا سمت مشتری بسته های مختلف بیشتری نسبت به سمت سرور دارد . سمت مشتری مطمئنا jQuery, bootstrap,grunt, و چهارچوب های جاوا مانند Angular JS , Backbone  و ...  و تصاویر و فایلهای استایل دارد .

 مدیریت بسته های سمت مشتری متن باز را دو نام بزرگ  Bower و NPM در دست دارند که بخشی از وابستگی می باشند.

تفاوت هفتم - فضای اشغال شده توسط بسته های سمت سرور در ASP.NET MVC 6

  ما از  NuGet pakage manager  برای اضافه کردن مرجع ها به assemblies ، کتابخانه ها و چهار چوب ها و هر بسته دیگری استفاده میکنیم. که از NuGet  دانلود می شود و یک پوشه Pakage  در ساختار پروژه ایجاد میکند.

30 نمونه برنامه در  ASP.Net MVC 5 در نظر بگیرید که همه آنها از NuGet برای مرجع وابستگی ها استفاده میکنند که هرکدام 70  MB فضا اشغال میکند پس در پایان حدود 2 GB فضا برای ذخیره کردن این مرجع ها اشغال شده است که همگی همانند می باشند.

 ASP.NET 5  با  DNX  برای ذخیره کردن همه بسته ها مربوط به توسعه آن در پوشه Users به کمک آمد . هنگام ایجاد یک برنامه در ASP.NET 5 ، ویژوال استودیو آنها را از پوشه  Users  مرجع قرار خواهد داد.

اکنون اگر 100 برنامه هم داشته باشید همه آنها از DNX در  پوشه Users مرجع خواهند گرفت که حدود 400  MB فضا اشغال میکند.

تفاوت هشتم - پشتیبانی تزریق وابستگی های inbuilt  در ASP.NET MVC 6

 در  ASP.NET  MVC 5/4 یا برنامه های بر پایه ASPX کلاسیک ، باید از تزریق وابستگی های جداگانه مانند Unity ,AutoFac,StructureMap و ... استفاده می شد. باید پروژه را برای استفاده از تزریق وابستگی ها می ساختیم.

اکنون در برنامه های  ASP.NET 5 یا MVC 6 تزریق وابستگی ها به صورت  inbuilt انجام میشود ، فقط کافی است سرویسی ایجاد شود سپس می توانید از تزریق وابستگی ها استفاده کنید.

در نمونه زیر هدف متد ConfigureServices(IServiceCollection services) پیکربندی سرویس مانند  EF ، احراز هویت ، اضافه کردن  MVC  و نوشتن کد سفارشی سرویس مانند IEmailServer  و  ISmsSender  است.

تفاوت نهم - اسرار کاربر در  ASP.Net 5

خیلی وقتها داده های حساس را درون درخت پروزه خود نگهداری میکنیم. اغلب به اشتباه این اطلاعات از طریق اشتراک گذاری کدها و ... به اشتراک گذاشته می شوند .

برنامه های  ASP.NET 5 شامل یک محتوایی از  User Secret  می شود . اگر به Project.json نگاهی بیاندازید UserSecretId را مشاهده میکنید که ابزار Secret manager  به آن برای تولید user secret  کمک میکند.

secret Manager  یک مکانیزم عمومی برای ذخیره کردن داده های حساس فراهم میکند.

 

تفاوت دهم - اجرای درون حافظه ای کدها منجر به ایجاد یک فایل  Bin خالی

امکان مهمی که با  ASP.Net 5  فراهم شد اجرای درون حافظه ای فایل ها بود. همیشه باید اجرا را برای ویرایش متوقف میکردیم و پس از انجام تغییرات برای مشاهده آنها دوباره برنامه را اجرا میکردیم .

ASP.NET 5 اجرای درون حافظه ای کد ها را معرفی کرد که بدون متوقف کردن برنامه در حال اجرا بتوان تغییرات را ایجاد کرد.

بدون نوشتن هیچ کدی ، اجرای درون حافظه ای منجر به ایجاد فایل  bin  خالی می شود.

حتی اگر هیچ کدی وارد نشده باشد همه چیز به درستی کار میکند و صفحه راه انداز برنامه را می توان در مرورگر دید.

 

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

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

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید