ASP.NET MVC Core: The Good Parts
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;
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
, etc; the boilerplate configuration in the Startup
class is pretty easy to follow and change;
The default template has Bower
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;
It is now possible to have our Razor
pages inherit from a custom class
, have custom functions defined in Razor (by the way, do not use it!) and inject components into it;
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!