The adoption of .NET Core has risen to about half a million developers, according to a recent interview with Scott Hunter on the .NET Rocks podcast. To put that number in context, back in 2012, Scott Hanselman estimated on Quora that there were approximately 8 million .NET developers worldwide.
This means about 6% of .NET developers have taken to .NET Core since its initial release two years ago. That puts it in the early adopters phase of the diffusion of innovation theory, which means that another upsurge in growth is probably about to kick off. There are a few reasons that make .NET Core an attractive framework from both a technology and business perspective. Let’s look at them now.
More Ways To Run A Cloud Application
One of the biggest factors I’ve heard from non-.NET colleagues over the years is that operating a Windows environment is much more complex from an operations perspective compared to a Linux environment. That argument is gone now that .NET Core applications can run on Linux once the runtime libraries are installed.
The barrier to entry is therefore much lower for new and existing .NET developers. Teams that are completely Linux-based can run .NET Core applications on their existing infrastructure while companies that are running both Windows and Linux environments can consolidate the number of moving parts in their infrastructure.
The ability to run .NET Core on Linux opens up the possibility of leveraging other technologies such as containers, serverless and Platform-as-a-Service. Azure, as you might expect, promotes using .NET Core anywhere you can run code. On the AWS side, you can run .NET Core apps in Beanstalk, Lambda, and ECS. Google also supports running .NET Core apps via their PaaS and container technologies. The same can’t be said for the .NET Framework, which has a plethora of hosting options on Azure but is much more limited on AWS and Google.
The operating cost of Windows instances has always been higher than their Linux equivalents. The exact amount of the “Windows Tax” depends on the size of the instance in question, but it can range anywhere from 15% to 70% higher than its equivalent Linux instance. That makes building for .NET Core on Linux a very attractive option.
.NET Core was designed with containers in mind, making it relatively easy to run multiple applications on the same host. That means that fewer virtual machines are needed to run the same workload as previously, with the added benefit of “right-scaling” the application to optimize cost.
Serverless technology like AWS Lambda and Azure Functions also help keep cloud costs in check. You only pay for what you use in serverless, so a Lambda or Function that doesn’t run won’t cost a penny. Both Lambda and Functions have a certain degree of vendor lock-in, but on the Lambda side it’s now possible to run an entire ASP.NET Core project as a serverless application. That makes for a quick and easy way to run a low-cost Web API!
Microsoft spent a great deal of time improving performance in the 2.0 and 2.1 releases of ASP.NET Core. They’ve done such an amazing job that it’s now on-par or slightly faster than Java and Node. Extreme performance usually isn’t a key deciding factor for a cloud app, but knowing that performance won’t be affected is good to know.
The Focus Is On .NET Core
Microsoft have put a large part of their development team onto all things related to .NET Core. The latest and greatest features are being developed for .NET Core at the expense of the full .NET Framework.
And while there’s no drop-dead date in sight for .NET Framework, it’s entirely possible that within the next ten years it becomes relegated for use in specific scenarios only. Developers who don’t want to get left behind have taken notice, and begun to embrace the more open world of .NET Core.
Embracing .NET Core can help organizations attract and retain talented developers. Top tier developers are usually looking to work with the latest technology, so production-level .NET Core projects are a great way to appeal to those developers.
When You Do Decide To Move To .NET Core…
Document the heck out of the process you’ve gone through for other .NET developers to see how it went. There sadly aren’t many case studies with hurdles and challenges that must be overcome when moving to .NET Core. These types of lessons learned are invaluable, so please, share what you’ve learned!
What about database first EF support with .NET Core?
Indeed, I haven’t had the opportunity to use it myself. How do you find it?
I recall when the .Net framework first came out. Microsoft hosted huge events at arenas and developers literally showed up after work to geek out on it. It was absolutely electric. It let us do things we couldn’t do before.
.Net Core? So it runs on Linux. Yawn. Containers? Yawn. Not “Legacy”. Yawn. It’s “Modern”. Uh huh.
None of these things help me deliver a finished product to my clients more quickly, reliably, and cheaply than what I’ve had at my fingertips for the past decade or so. Actually, the delay of getting features out in .Net Core have forced them to create .Net Standard. If you have to create an interface over your crap to patch over the holes, it ain’t good. It sounds as though it may be .Net Core that is the branch and not the trunk. It would not surprise me if the .Net Framework is still more commonly used than .Net Core in another 5 to 10 years.
If Microsoft truly had ambitions, they would co-opt the best of these js frameworks out ther and do with them what they did with web forms years ago. Then build a non-crud simple web service layer to talk with them. You know, make developers more productive.
However, I’ll learn .Net Core since I’m a professional developer. We have to keep our skills up regardless as to whether the direction is a wise one or not. But please do not insult my intelligence by insisting that the dog food tastes better than what we had before.
I agree that .NET Core is a bit of a side-step in terms of developer productivity. We’ve had to re-learn how to do things that we’ve been doing for well over a decade.
That said, there are a few ways that .NET Core can help you build more quickly, reliably, and cheaply:
– Serverless applications in AWS Lambda are a big productivity boost and only support .NET Core. I’ve worked on projects with Lambda where we delivered to customers three times faster than “traditional” .NET development.
– Running a Linux VM is a significant cost savings if you compare it to running a Windows VM in the cloud.