Naeem Sarfraz

Blogging about Enterprise Architecture, ALM, DevOps & happy times coding in .Net

.NET Core: Should I stay or should I go?

.NET is undergoing a major reboot and if you work in the ecosystem you simply cannot ignore it. Originally presented as an upgrade carrying the name vNext and then ASP.NET 5 it has been sensibly renamed to ASP.NET Core and .NET Core to reflect the new offering.

What is it all about?

The .NET framework has grown over the past decade into a feature-rich platform under-pinning many of Microsoft’s server products such as Dynamics CRM & SharePoint. As developers we’ve also used this framework to build incredible web applications and sites using the goodies each version-increment brought. Starting with WebForms we quickly adopted AJAX, WPF, WCF, MVC & SignalR not to forget language enhancements including generics, LINQ and async\await. Microsoft looked after us well.

The landscape has and is changing and the .NET team have reacted. .NET Core is their answer, a fork of the .NET framework stripped-down into nuget packages that you consume as you require. Your application can be deployed in an XCOPY fashion removing the dependency on any server-installed component. It’s cross-platform, modular (most features delivered as nuget packages), faster (using a new web server called Kestrel), and is being developed in the open (over at GitHub).

The journey to this point wasn’t easy with several “beta” drops causing pain (listen to Rick Strahl on DotNetRocks), late renaming of the new product, more renaming of the tools and pushing back the RTM release. What we’ll have when it does RTM will not be on par with the current full-framework offering either; it is still being defined.

Enter the Cloud & Open-Source

The rise and success of Microsoft Azure is transforming the way Microsoft delivers services with faster releases and shorter deployment times. With a noticeable number of Azure machines running Linux Microsoft will want to expand and grow this part of their offering. So what does .NET have to do with this?

.NET is not a friendly player in this space being the huge monolith that it is, there is a price to pay for all of the good-stuff it brings to lighten the load of a developer. Microsoft need more from .NET; first of all it needs to be cloud-friendly which means scalable even if this isn’t a requirement for non-Azure customers. It needs to be cross-platform being able to run on not only Windows servers but Linux too. There’s a big win here from a customers perspective as a Linux server hosted in Azure costs less to run than a Windows server.

And why Open-Source? By opening up the code for all to see they are inviting the support of the community to build an even better product and it’s not all one-way. Microsoft teams themselves are contributing to open-source projects to encourage wider adoption of their products and services which is a win for everyone. For .NET Core to succeed as a viable cross-platform framework contributions from the community are essential.

Developing in the Enterprise

Whilst most Dark Matter developers don’t exclusively exist in the Enterprise I’ve met many that do, especially where they are working exclusively in a Microsoft stack. These developers are getting things done and building most of the business software out there with the tools and libraries that a vendor like Microsoft supplies. They’ll use open-source software but rarely contribute code back. They’re looking to be hand-held through a solution using a tried and tested, production-ready framework that will make life easier. .NET Core doesn’t fit this model.

What should you do?

If you’re an Enterprise team I don’t believe .NET Core will be right for you right now, maybe never. The ecosystem (tools and third party libraries) have some way to go before they’re ready to give you the productivity you desire. Keep an eye on it’s development as it will RTM sometime this year, Q2 2016? but continue to use the full framework and be prepared to review this in 2017.

Ask yourself: How does .NET Core add value to the work I currently do? If you’re working exclusively in the Microsoft stack then it’s not going to add much. Another way of looking at it: What problems are we solving with .NET Core? Again if you’re working in the Microsoft stack not the right ones.

Developing .NET Core was necessary for Microsoft in this new world of cloud computing, I just don’t think its right for Enterprise teams but at least we now have a choice which can only be a good thing. .NET Core will enable new scenarios and that’s where the fun begins.

blog comments powered by Disqus