Published: Category: Source October 12, 2019 Blog .NET Blog
.NET comes in four flavors: .NET Framework, .NET Core, Xamarin, and Universal Windows Platform (UWP).
These implementations combined are called the .NET development platform. Each of them contains frameworks and libraries to build various applications.
The .NET Framework released back in 2002 is the first and oldest implementation of the platform. It includes three main application models – WPF, Windows Forms, ASP.NET Forms – and Base Class Library.
Windows Presentation Foundation (WPF) is a UI framework used for creating graphical interfaces primarily for desktop client applications on Windows OS. WPF uses the capabilities of Extensible Application Markup Language (XAML).
Windows Forms is a GUI class library within .NET Framework. Windows Forms are used to develop desktop applications with rich graphics that are easy to update and deploy.
ASP.NET. While the previous two components are designed for desktop engineering ASP.NET is used to develop dynamic websites and web applications. There is the Common Language Runtime (CLR) in its core that gives developers the opportunity to write ASP.NET code using different .NET languages that we discuss below.
Base Class Library (BCL) provides the most common functionality like classes in namespaces and is the core of the Framework Class Library (FCL), a set of reusable interfaces, classes, and value types that are closely integrated with the Common Language Runtime (CLR). The combination of FCL and CLR constitute the .NET Framework. The base class library also includes ADO.NET, data access technology used by developers to access databases.
As .NET Framework supports only Windows-based devices, there was a need for a cross-platform package.
.NET Core was released in 2016. It’s a cross-platform re-build of .NET Framework. Unlike the old version, engineers can now use the product on Linux and macOS and create applications that aren’t necessarily tied to the Windows family. The new system aims at conquering the cloud space as some providers like Digital Ocean are Linux-driven. Not only is .NET Core cross-platform, its different versions can also be installed side by side on the same device. .NET Core includes ASP.NET Core and Universal Windows Platform (UWP).
ASP.NET Core is a rebuild of ASP.NET that happened to be a more modular framework than its predecessor. ASP.NET Core allows you to build the mobile backend, web apps, and services. It’s also cross-platform and runs on OS X, Windows, and Linux.
The third implementation is called Xamarin and is used for mobile applications and Mac products. Originally, Xamarin was designed independently from Microsoft and was a proprietary product. Then Microsoft acquired it in 2016 making it a fully open source branch of the .NET platform. Xamarin uses the Mono runtime and a version of the .NET Framework adjusted to work with APIs for iOS, Android, and Xamarin.Mac. To get an elaborate overview of this product, check our Xamarin pros and cons article.
All runtimes use a common infrastructure that makes the entire ecosystem work. It provides runtime components, languages, and compilers.
Universal Windows Platform (UWP)
UWP provides a common type system, APIs, and application model for all devices running on Windows 10. So, UWP enables development of universal apps for PC, tablet, Xbox, Surface Hub, HoloLens, or Internet of Things (IoT) devices.
UWP app developers get access to the Microsoft store that charges only 15 percent for non-gaming subscription-based apps, unlike Google Play Store and App Store. Other services include an execution environment (AppContainer) and Extension SDKs to call specialized APIs for different devices.
In 2016 Microsoft also introduced .NET Standard, a library that combines APIs from .NET Framework, .NET Core, and Xamarin allowing engineers to use a single base-class library rather than mastering three different ones related to each .NET implementation. This step unified the ecosystem and brought a higher consistency to reusing components across different platforms.
.NET development platform is best served with Visual Studio IDE used for building, debugging, and publishing applications across all platforms and devices.
Common language runtime (CLR)
Common Language Runtime (CLR) is the heart of .NET, an application virtual machine that manages memory, implements code access security, verifies code safety, and provides execution of threads and code. CLR is what makes the .NET code a managed one.
As we mentioned, the idea of CLR is to make developer’s life easier. Besides, it allows engineers to design systems with multiple languages, as CLR enables them to communicate and integrate their behaviors. The runtime checks the needed versions of applied services to ensure that all dependencies are intact and the code works as intended.
In .NET Core, an open-source CoreCLR is used. While nearly identical to CLR in .NET Framework, CoreCLR is adjusted to the .NET Core cross-platform makeup.
The languages that you can use with .NET can be ultimately divided into two major groups: 1) the main officially supported languages by Microsoft, and 2) the rest of the languages that are CLI-compliant.
Main languages. Most of .NET development happens with C#, F#, and Visual Basic.
The rest of CLI-compliant languages. CLI means common language infrastructure. It’s a technical standard for high-level languages that can be compiled into common intermediate language (CIL) and further compiled into a byte-code. Besides, those three mentioned above, there are about 25 active CLI-compliant languages, including C++/CLI, IronPython, Oxygene, Phalanger, and more. There’s also a number of languages that are no longer used, like IronRuby.
.NET starter pack
If you’re just starting with .NET, here are some useful links for the beginning of your journey:
.NET guide – the general documentation by Microsoft for newbies;
.NET Core guide – for those considering transitioning to the Core version, go here;
.NET framework – the original .NET documentation;
Xamarin – the docs for mobile development;
.NET foundation – the headquarters of the .NET open-source community;
Best .NET tools – our take on the best tools, supported by expert opinion;
.NET Core and framework – download it here; and
.NET developer community – all about chatter and support with links to social media, forums, blogs, live workshops, and organizations like .NET foundation.
Now, let’s look deeper at the advantages and drawbacks of using .NET development platform. Most of the points can be applied to the entire ecosystem, while some of them relate only to its specific components, which we’ll specify in the respective sections.