Most of you have already heard about ASP.NET 5, ASP.NET vNext and since the end of January ASP.NET Core 1.0, as Microsoft renamed its revolutionary child.
The rename makes sense, following Microsoft’s “new” mindset, they are about to introduce a new era of (web-)development. ASP.NET Core is a complete redesign of ASP.NET as we know it today.
At Exsertus, we do understand the importance of this new piece of technology, which made us decide to learn and share expertise on ASP.NET Core 1.0. This blogpost is the first of a series of articles that will be posted over the remainder of the year. We will start with some pros and contras about ASP.NET Core 1.0 as it is now.
- Lean and composable.
- Cloud ready and cloud optimized.
- Fully open source and available on Github.
- Cross platform and can therefore be used on Windows, Mac and Linux.
- No longer depends on System.Web.dll.
- Built-in agile system in Visual Studio (if that is your primary IDE).
- Framework ships entirely as NuGet packages.
- There is great command line support using coreCLI (formerly dnvm on dnx, these days it runs on .net core runtime, see Scott Hanselman’s great post and have a look at the following video on Vimeo. Although you are not forced to use this as it’s great to combine with Visual Studio Code or any other coding IDE for example. When you use Visual Studio IDE, you don’t really need the coreCLI.
- Although ASP.NET core comes with a built-in DI, you can swap it with the one you like, although the default one claims to be of a better build than we are used to (the loosy goosy unity e.g.)
- The modular character makes creation of IOT applications pretty cool.
- Perfectly possibly to run ASP.NET Core apps on Docker.
- You can build your own request pipeline, which means there are no unnecessary actions anymore. Only the ones needed for the purpose of the current application, although this requires some investigation.
- IIS is just one of the possible hosting environments, because of the integrated pipeline, you can pretty much choose any kind of hosting environment.
- You can edit backend code, refresh your browser and see the results immediately, without having to rebuild your application.
- .net Core framework is deployed together with your application, unless you choose to combine ASP.NET Core and Framework 4.6, which is still supported, but is not cross platform.
- It is only available as RC2 at the moment, and when it’s released it’s still in v1.0, we know from experience that we have to be careful with a v1.0 release.
- Although modularity is a nice new feature, it might introduce inconsistency in versioning and dependent modules, dll’s, etc.
- There is no SignalR included yet.
- Currently no support for VB.Net and F#.
- Currently no support for Web Pages.
- Refactoring System.Web out of Microsoft’s web stack is not without consequences, because a lot of current applications are using parts of this namespace, which means that some applications will just not be able to be moved to .net core framework and will have to stay on the .net framework as long as that exists and is supported by Microsoft (probably for still a very long time).
- Although ASP.NET Core looks and feels like the current version of ASP.NET, it is far from the same behind the scenes, this might introduce extra research-time. (Deployment, building applications, etc.)
- There will not be any backward compatibility once you are on the newest version.
- Upgrading might be difficult.
- .net Core and all other things like ASP.NET Core, EF Core, … are still in development and will change through the time.
What is yet to come?
- Support for all languages.
- SignalR will be fully integrated.
- Entity Framework will be optimized to work with ASP.NET Core, although it is NOT related.
- There will be a lot of fine-tuning and great documentation.
We do believe in the strength of the new developments at Microsoft with ASP.NET Core and all its features, although we are aware of the fact that it still has a way to go before it can be called stable. ASP.NET Core RC 2 has just been released, the final version of Core 1.0 is currently scheduled for the end of June.
Although tooling will not be finished yet, it will already be included in the package.
For future projects starting after the official release, it might be worth using the new ASP.NET Core, for new longer running projects.
Stay tuned for the next posts on ASP.NET Core 1.0 and everything that has to do with it!