ASP.NET MVC Core: The Good Parts Sunday, June 19, 2016

MVC 6 should be out any day, so we need to be prepared.

The good thing is, it’s all very similar to MVC 5; the even better thing is, it got better! A couple of ways it is so cool, in my mind, are:

Most of the stuff is very similar to what we had: controllers, views, mostly work the same way;

MVC and Web API have been merged together, so it’s not really any different add an API controller that returns JSON or an MVC controller that returns an HTML view;

All of its code is available in GitHub , and you can even contribute to it;

It is now cross-platform, meaning, you will be able to deploy your web app to Linux (even as a Docker container) and Mac (if you use .NET Core);

It is very modular: you only add to your project the Nuget packages you really need;

Startup class is pretty easy to follow and change; It now uses service providers to resolve all of its features; you do not need to know the static location of properties, like, ControllerBuilder.Current GlobalFilters.Filters , etc; the boilerplate configuration in theclass is pretty easy to follow and change;

The default template has Bower NPM and Gulp support out of the box;

No need to explicitly add attribute routing, it is built-in by default;

We have a better separation of contents and code, in the form of the wwwroot folder to which servable contents are moved;

Logging is injected, as are most of the services we need, or we can easily add our own without the need to add any IoC library; even filters can come from IoC;

inherit from a custom class , have custom functions defined in Razor (by the way, do not use it!) and inject components into it; It is now possible to have our Razor pages, have custom functions defined in Razor (by the way, do not use it!) and inject components into it;

View components and tag helpers are a really cool addition;

The new OWIN -based pipeline that is now ASP.NET is much more extensible and easy to understand than System.Web-based ASP.NET used to be;

This one is a corollary from the latter: Web.config is gone; let’s face it, it was a big beast, so it’s better to just drop it.

On the other hand, we will need to learn a lot of new stuff, namely, a whole lot of new interfaces and base classes to use. Also, it may sometimes be a bit tricky to find out which Nuget package contains that specific API we’re after. And because there is no more System.Web, all of the infrastructure management is very different. Finally, not all the libraries we’re used to will be immediately available for .NET Core, but that’s really not a problem with ASP.NET Core itself.

All in all, I think it is a good thing! I’ll be talking more on ASP.NET Core, so stay tuned!