With the open-source development of .NET Core and Microsoft’s acquisition of Xamarin, the .NET platform has greatly expanded its reach in a relatively short space of time. The possibilities enabled by a cross-platform .NET ecosystem are exciting and in this series of blog posts we’ll talk about our experiences developing on this revamped platform using our showcase application Reactive Trader® Cloud.
Reactive Trader® Cloud uses the .NET Core platform to write the suite of back-end services, and this first post in a series on .NET Core gives an introduction to the platform.
A bit of history
The full .NET Framework was designed and built on top of the Common Language Infrastructure (CLI) specification. The design of the CLI was aimed to attract developers to use the .NET Framework on the same (Windows) platform, even if they used different languages to write their applications.
In recent years the cloud has become the de-facto target to deploy large-scale applications and services. It brings advantages in scalability, resiliency across multiple datacenters around the world and a platform-as-a-service (PaaS) model where the management of hardware is no longer a concern to end users. This facilitated the adoption of microservices, and container technologies such as Docker gained popularity as a way to do deployment deterministically without worrying about whether the end environments have been setup correctly or not.
Unix-like operating systems have thus gained traction in the cloud space compared to Windows due to their lightweight footprint, more liberal licensing terms and compatibility with tools such as Docker.
Enter .NET Core
These factors all contributed to the birth of .NET Core. From a developer perspective, .NET Core is a variant of the full .NET Framework that is cross-platform. Being a port of the full .NET Framework, they share foundational components, but have minor API differences. Where the full .NET Framework can contain Windows-specific APIs, .NET Core being cross-platform cannot.
In .NET Core, apps reference the .NET libraries by opting-in to only the required components via NuGet. Your application is then no longer dependent on a machine-wide, centralised install of the full .NET Framework (which is distributed, updated and tied-in with the Windows operating system). Instead, each .NET Core framework dependency is referenced via NuGet and can be packaged with your application. This removes the tie between the application’s framework dependency and the operating system it is running on, and thus providing the basis for the same .NET Core components to be used cross-platform.
.NET Core is fully supported by Microsoft. For a more complete overview, the official documentation provides a succinct summary.
To the Cloud
Being able to run .NET Core cross-platform not only allows developers on any platform access to the .NET ecosystem, but also opens the door to utilising container technologies such as Docker and Kubernetes on Linux operating systems, which dominate the container space today.
At Adaptive we fully embrace the power and flexibility that the cloud brings. We have experience working with AWS, Google Cloud and Azure and take advantage of modern container technologies which completes the devops story. In the rest of this blog series we’ll dive deeper into the architecture of Reactive Trader® Cloud and explore how Docker can be leveraged to deploy .NET Core applications and services. In the meantime, please check out the Reactive Trader® Cloud repository - PRs are always welcome!