.NET Core - a fundamental change
Every now and again, something comes along that makes me sit up and take notice. For that to happen, it has to be really different, or have the ability to make a big impact on the things that affect me, my work, my interests, and really, the world at large. Recently (mid-2016), '.NET Core' was released, and believe me, its a really really big deal.
For a long time, when Microsoft .NET developers were required to bring their solutions to any platform other than windows, it generally involved another language (like java or C), and also meant that code bases invariably got split and duplicated (in different languages, for different languages). The promise of the 'one true framework' didn't really exist - implementations in Java or other cross-platform solutions didn't seem to run as smoothly in many cases, and invariably involved compromises. Until recently, this was always a problem and a challenge for developers and organizations.
Under the leadership of Satya Nadella, Scott Guthrie, and others, Microsoft has had a radical shift in the recent past away from the closed wall proprietary system where 'open source was evil', with what seems to be a complete 360 degree turn back to embrace everything open and community-based, and that's a really good thing for everyone. From a project announced and promoted in 2015, until its version one announcement recently in 2016, '.NET Core' has been developed in an open manner and is supported by the
.NET foundation, an organization created to promote open development around the .NET ecosystem.
So what .NET Core is, and why does it matter?
In recent years, cloud deployment of solutions has become more and more important. What started out as a one horse pony (Amazon AWS), has now become a fight for the pockets of enterprise and minds of developers, and Microsoft, with
Azure, is racing to the top very fast. Cloud is not as simple as the desktop, cloud operates at scale and requires different kinds of thinking and technologies. Automation plays a huge part in the ecosystem of the cloud and the 'cloud operating system' is operated by cleverly managing and orchestrating virtual machines and containers. These systems run distributed, highly fault-tolerant systems and services that are designed to operate at scale, and in many cases, are developed on top of multi-platform systems that are not as interdependent as we might have used previously.
.NET Core is first and foremost, MODULAR, MANAGED and
CROSS PLATFORM (in the true sense). The platform is clearly built with the cloud in mind and is initially at least targeting low level/server-based systems. In tests recently
.NET Core outperformed NodeJS and GO 8x - that's really interesting and calls for some serious investigation - that kind of performance can both save money for the enterprise, and also offer a new opportunity for raw speed of processing.
MODULAR
.NET Core is built in a modular fashion, with an integrated set of library, runtime and compiler components. These components have been used by Microsoft to build .NET itself and Azure, and developers can use them now directly in their own solutions.
MANAGED
Managed runtimes make it easier to get on with developing solutions. .NET Core runtime takes care of garbage collection and guarantees safe execution.
CROSS-PLATFORM
Previously, 'cross-platform' with Microsoft was a joke - it was cross-platform but only within the Microsoft Windows operating system family. .NET Core brings the true cross-platform compatibility, which means you can have one single source code base on Windows, Mac, and Linux. This is a huge deal, especially between Windows and Linux - it gives you more choice for deployment, hosting, and scaling.
By making its fundamental codebase open source, Microsoft is giving .NET developers an incredible opportunity to enter into areas with their existing skills which were previously locked off to them. The opportunities presented are only going to start to emerge over the next months and years - it's well worth your while checking it out and taking .NET Core for a spin.
Click here to get started with .NET Core - happy coding!