The importance of .NET Core
Seven years ago, on 2010-04-12, Microsoft released a new version of .NET but unlike previous versions this version was not an “in place upgrade”. Meaning that for developers and IT departments to take advantage of this new version we needed to install the latest version on the server and developer desktops.
Now, 7 years later, Microsoft is releasing a new version that requires developers and IT departments to manage these upcoming changes. But why? What is so significant about a new version of a programming framework? Why should our developers care? Why should our IT department deal with the upgrade headache?
Lets also ask some larger questions, such as how does .NET Core position Microsoft in the developer platform wars and what does it means for the future of the platform?
What is so significant about a new version of the .NET framework:
Microsoft has been very innovative with .NET since blazing past Java with the release of .NET 3.5. However, over the years there has been a massive amount of “technical debt” building up in the framework. Development best practices have changed, tooling and landscapes have changed too. Long gone are the days of the IDE with every bell and whistle being the de facto “best” tool. As our practices evolved we realized that smaller, configurable with sane defaults was much better than monolithic with infinite customization - often via XML.
.NET has filed technical debit bankrupcy and.NET Core is being built from the ground up using a component based “only include what you need” philosophy.
When I started this blog post, and probably as you are reading this, the ‘only include what you need’ philosophy revolved around namespaces being delivered as its own package - in sort of a nodejs/npm-taken-100-steps-too-far design.
.NET Core 2.0 is coming soon and there are some major changes. The biggest is that Microsoft is walking back the concept of a million nuget packages to rule them all concept and moving to a standard “core” library that will contain the entire .NET Core framework. This changes the meaning of ‘only include what you need’ to:
- We’ve removed all the legacy code (system.web, webforms)
- No GUI features in your web app - no need for system.xaml
- Still cross-platform
- Easier to update and manage!
Having worked on large .NET Core projects where updates took days, I’m every excited to see this change.
Why should our developers care:
.NET Core builds on existing knowledge while removing platform, tooling and server constraints.
However, in the short term, .NET Core has very little to offer developers. We’ve had to deal with project file format changes, tooling in visual studio be alpha/buggy, deal with and learn about soon to be abandoned versioning - because netstandard2.0 will be the first stable target for .NET developers.
With all that being said, developers should care because Microsoft is getting back to its roots and building truly world class platforms for us to build on. .NET Core will be as cross platform as Java and that will open more doors for us in terms of our career, our clients and our customers.
.NET Core is also the first enterprise framework to be developed for the cloud. The lower footprint means our applications are going to run faster and require less cloud resources.
Why should our IT department deal with the upgrade headache:
Linux. Licensing. Lower costs.
.NET Core is cross platform, you can deploy your production applications to Linux. Server 2016 is due for release in 2016 and with Nano Server there are some exciting and compelling reasons to stick with Microsoft for the server but let’s set that aside for now. If your platform is simply a .NET web application we can list the following benefits of deploying to Linux:
- Reduced licensing costs - Zero licensing costs.
- Reduced IT overhead - Linux is drastically easier to automate with tools like Chef, Salt, Packer and Ansible. This reduced friction equates to reduced stress on IT departments.
- Easier long term maintenance - security, patches and updates become easier with apt-get, and yum package managers.
Of course; there are going to be challenges when deploying .NET Core applications to Linux but TeamVirtuoso is here to help with these challenges.
- Ensuring application compatibility
- Training existing development and IT staff
- Automating existing “brownfield” applications
- Learning the Open Source/Linux landscape and what tools are available and what should be reviewed for your application.
How does .NET Core position Microsoft in the developer platform wars and what does that mean for the future of the platform?
With .NET Core, Microsoft is clearly following the footsteps of Java but is doing so in a much different time and with the experience of seeing where Java has been successful and where it’s failed.
Java has seen better days and the past 7 years - since Oracle bought Sun - have been filled with bad press...and the sink of Oracle.
.NET Core also positions C# to be the most university friendly language for teaching. The open and cross-platform nature make it an excellent language for teaching higher level compiled languages.
In closing; I look forward to .NET Core 2.0 - as Microsoft is known to do - the first releases of the product have been rough, the changes hard on developers but we expect (and the roadmap and communication show) GREAT things as .NET Core regroups, retools and races past Java is the cross-platform, enterprise ready, university default language, cloud first platform.