.NET Core – Has The Time Come for Migration?
In a way it’s hard to believe that more than two years have passed since the first production release of Microsoft’s .NET Core framework development platform. But it also feels like a long time because those two years have been full of advances, updates, and new releases. We have been developing applications on the Microsoft technology stack for more than fifteen years now, and we have never seen the pace of platform innovation moving this fast and effectively before. The Microsoft team is obviously dedicated and committed to the success of the platform.
It’s no surprise that we believe in the .NET Core framework. We have written – and continue to publish – articles and how-to documentation about our experiences using it (we’ve put links to some of those articles at the bottom of this post). But the level of commitment and time investment coming out of Redmond has built up a lot of confidence across the entire development community and with the business customers that we serve. Further, the advantages and efficiencies to be gained on .NET Core are substantial. All this means that more and more businesses and enterprise organizations are choosing .NET Core as the platform for their web application projects.
Malcolm Gladwell wrote a book several years ago called “The Tipping Point.” The big idea behind that book is that – especially when it comes to new and disruptive technologies – adoption builds until it reaches a tipping point where it takes on an inertia of its own. Any way you look at it, the timing just feels right for .NET Core. The only question that remains is how to address existing and legacy applications and systems. Do the advantages of migrating to this modern framework outweigh the real and opportunity costs of the effort?
In other words, does it hurt?
A Brief Case Study in Successful .NET Core Migration
One of our projects has been FlightFiles.com – a web application originally built on ASP.NET MVC with a Sequel database. The original project took approximately 1500 development hours to complete and deploy in total and was comprised of 13 controllers, 55 views, and a single large data loader. Since then the project has been migrated to .NET Core 1.1, then upgraded to ASP.NET 2.0. This gives us a solid, real-world use-case with measurable benchmarks.
Migrating to ASP.NET Core 1.1
Step one required us to transition to using Microsoft ASP.NET Core Identity for authentication. We then transitioned the rest of the application to full .NET Core. There was no lost functionality or significant work-stops. The migration project consumed approximately 140 developer hours – approximately 9% or the original project time-cost.
Results of ASP.NET Core 1.1 Migration
Performance benchmarks improved by 61% across the entire app. Specific data queries ran up to 500 times faster. That is not a typo … five-hundred times faster – an improvement of more than two orders of magnitude.
Upgrading from ASP.NET 1.1 to ASP.NET 2.0
We recently completed an upgrade of the same web application from ASP.NET 1.1 to the latest version – ASP.NET 2.0 which was released in May of this year. Microsoft previously announced that version 1.x would no longer be fully supported after October of this year. Even though the 1.x versions are robust and stable, best practices dictate that all our apps stay on fully-supported versions.
The upgrade migration from .NET Core 1.1 to 2.0 was relatively easy – consuming only 12 developer hours. There were no substantial stops or pain-points.
Results of Upgrading from ASP.NET 1.1 to ASP.NET 2.0
Across all standard benchmarks, the migration to ASP.NET Core 2.0 yielded an additional ~15% performance improvement (85% higher than the MVC original build). Data queries showed minor gains.
Additional Benefits of .NET Core
For many of our real-world clients, these kinds of performance improvements may be reason enough to make the time-investment of migration. But we are mindful that there are other significant benefits as well, including:
- The project will now run on all major infrastructures and Operating Systems (OS).
- Future updates and patches can publish directly to the Azure public cloud from Virtual Studio – reducing development time and streamlining updates going forward.
- The native modular application structure is easier to maintain and update over the long term.
- Side-by-side deployment options are available, vastly improving testing and deployment processes.
- Increases in performance (speed) usually translate into better user experiences (UX), retention, and conversion.
It goes without saying that different development projects may experience different results. Performance improvements will vary based upon the mix of functions in any application. Given that, the FlightFiles.com project as a case study suggests some tantalizing possibilities.
Taken together at face value, the migration and upgrade yielded an ~85% general application performance improvement and a 500% improvement in data query speed for a total development investment roughly equal to 10% of the original development cost in hours. For applications with very low volumes and light data loads, these improvements will obviously have a lower value/economic return. But for growing user-loads and heavier data-centric applications, the advantages quickly swing the economics in favor of migration to ASP.NET Core for your existing and legacy MVC applications.
It’s a little pain for significant gain.
If you would like more information or have questions about any Microsoft technology – including ASP.NET Core and Azure Public Cloud deployment – send us a note or give us a call. We are always glad to help.
Additional ASP.NET Core Articles, Links, and Resources
Our CEO’s blog: “Should, When, and How Can I Migrate to .NET Core”
Introduction to Identity on ASP.NET Core by Microsoft
Why ASP.NET MVC Core Matters for You and Your Website