This week is the week of Microsoft’s BUILD developer conference where lots of new announcements are typically made. Yesterday it was revealed that the next version of ASP.NET Core, version 2.0, will no longer support running on the full, existing .NET Framework. (.NET 4.7 for example). There has been a lot of various feedback on this topic, and I thought I’d chime in a bit with my opinion as well, as with all posts I welcome conversation and alternative viewpoints in the comments.
What is Changing
Before I get into any specifics, lets discuss what actually is happening with this announcement from Microsoft. In the current version of ASP.NET Core (1.1) we are able to select when we create a new project if we want it to run on .NET Core, or if we want to run on the .NET Framework. This difference, although seemingly simple, is something that really requires developers to make a big decision when they start using .NET Core.
There are multiple reasons quoted by Microsoft as to why this decision was made. We can all speculate on why, but, there are a few key considerations that make logical sense as to why this decision makes sense. The performance of .NET Core is substantially better than that of the .NET Framework. There are various benchmarks to support this, I’ve noticed a 40-65% improvement with one of my projects that just recently made the switch to .NET Core. The complexity of supporting two targets would also be a big consideration. I can only imagine the effort needed to support the tooling and runtime support for multiple framework targets.
One other consideration is the big push for cross-platform development as a whole. By forcing everything to .NET Core we should see faster adoption and possibly additional community contributions. Regardless of the reasons, this is announcement wasn’t much of a surprise to me.
As I look at the publicly posted commentary regarding this change, it becomes very apparent that some individuals had different migration strategies than others as they transitioned to .NET Core. I’ve been watching, testing, reviewing, and working with ASP.NET Core since the early days, however, my migration strategy has been something a bit different than others. As we look at the concept of migration strategies we could come up with hundreds of pathways, however, at a high level we can really pair it down to 2 distinct pathways.
Option A would be to make a full migration, right away, and only build solutions that are targeted for .NET Core and break any dependency on existing libraries that do not have support for .NET Core. This solution is much more “extreme,” however, those that followed this route are the ones that look at this announcement as nothing to worry about, as nothing really changes.
Option B would be to migrate to ASP.NET Core, however, running on the full .NET stack. The advantage to this solution is that you can still easily use DLL’s that don’t have .NET Core support and the migration process might be faster as you don’t have to find solutions for things that do not support .NET Core.
Although sites such as The Register paint this as a doom & gloom situation, I see this as a great direction for the future of ASP.NET. My recommendation from the beginning to clients and internally was to not migrate to ASP.NET Core unless it could be done 100%, that recommendation seems to hold more weight after this announcement from Microsoft. I’ve been working over the past 5 months to outline a pathway to migrate. Next week I will be speaking at Nebraska Code() about making the transition to ASP.NET Core and this recent development will for sure be on my agenda.
For those that have been negatively impacted by this direction, I feel for you, however, I believe we will all benefit greatly from this change. I welcome comments below on your own experience.
After this as posted, more information came from Microsoft that they will support .NET Core on full framework for the foreseeable future. This statement appears to have calmed many, and it is great news overall for those looking to migrate. I personally, still stand behind my belief that if you go, going all the way is the right path.