Saturday, November 19, 2016

.NET Core and recent advances

Latest Trends
NET Core 1.0 was released 27 June 2016. This is a cross-platform free and open-source managed software framework similar to .NET Framework. It consists of CoreCLR, a complete cross-platform runtime implementation of CLR, the virtual machine that manages the execution of .NET programs. CoreCLR comes with an improved just-in-time (JIT) compiler called RyuJIT. While .NET Core shares a subset of .NET Framework APIs, it comes with its own API that is not part of .NET Framework. Further, .NET Core contains CoreRT, the .NET Native runtime optimized to be integrated into AOT compiled native binaries. The command-line interface of this framework offers an execution entry point for operating systems and provides developer services like compilation and package management.
Innovation using .NET
The .NET framework has been in the forefront of innovation from the beginning. Some of the innovative features of the .NET framework include LINQ (Language Integrated Query) , ASP.NET Web framework, Asynchronous programming using Async/ Await, .NET Portable Class Libraries and Mobile services. Ability for the .NET core framework to be used in Docker containers is also an innovation this framework can boast of.
.NET in Mobility
Xamarin provides the following summarized features:
Native User Interfaces – Xamarin apps are built with standard, native user interface controls. Apps not only look the way the end user expects; they behave that way too.
Native API Access – Xamarin apps have access to the full spectrum of functionality exposed by the underlying platform and device, including platform-specific capabilities like iBeacons and Android Fragments.
Native Performance – Xamarin apps leverage platform-specific hardware acceleration, and are compiled for native performance. This can’t be achieved with solutions that interpret code at runtime.
Productivity – With Xamarin.Forms developers can use the same logic and UI targeting iOS, Android and Windows 10 UWP.
.NET Core advances
Unlike the traditional .NET Framework, which is a single package installation, system-wide, and Windows-only runtime environment, .NET Core is about decoupling .NET from Windows, allowing it to run in non-Windows environments without having to install a giant 400mb set of binaries plus the ability to deploy the applications coming with the framework itself supporting side-by-side execution of different versions of the framework. This also helps to run this platform on Linux based Docker containers.   
Basically, the .NET Core Platform is packaged and installed in a different way. Instead of being part of the operating system .NET Core is composed of NuGet packages and is either compiled directly into an application or put into a folder inside the application. This means applications can carry .NET Core with and thus are completely side by side on the machine.
.NET Core consists of a common language runtime, which in .NET Core is named CoreCLR. .NET Core also features an extensive class library. Rather than a single .NET Framework Class Library, however, .NET Core features CoreFX, a modular collection of libraries. This allows you to include just the libraries that your app needs without the overhead of including those that you don’t need.
Value Proposition for .NET Core
The following topics are the main value-propositions of .NET Core:
Cross-platform – .NET Core currently supports three main operating systems: Linux, Windows and OS X with other OS ports in progress such as FreeBSD and Alpine. .NET Core libraries can run unmodified across supported OSes and need the applications to be recompiled per environment, given that apps use a native host.
Open Source – .NET Core is available on GitHub, licensed with the MIT and Apache 2 licenses. It also makes use of a significant set of open source industry
Modular framework – .NET Core is built with a modular design, enabling applications to include only the .NET Core libraries and dependencies that are needed in line with the latest docker contained based development. Each application makes its own .NET Core versioning choices, avoiding conflicts with shared components. .
Natural acquisition – .NET Core is distributed as a set of NuGet packages that developers can pick and choose from and Docker images for it are also available on Docker hub. The runtime and base framework can be acquired from NuGet and OS-specific package managers, such as APT, Homebrew and Yum.
Smaller deployment footprint: Even when in v1.0 the size of .NET Core is a lot smaller than .NET Framework, note that the overall size of .NET Core doesn’t intend to be smaller than the .NET Framework over time, but since it is pay-for-play, most applications that utilize only parts of CoreFX will have a smaller deployment footprint.
Fast release cycles of .NET Core – .NET Core modular architecture provide a modern and much faster release cycles compared to slow release cycles from larger monolithic frameworks. This approach allows a much faster innovation pace from Microsoft and the OSS .NET community than what was traditionally possible with the .NET Framework.

No comments: