Labels

Sunday, June 16, 2019

.NET Ecosystem - .NET Core / Framework / Standard

Here is quick snapshot of .NET Ecosystem Architecture diagram, as of today.



As you can see from the above diagram, the .NET ecosystem has three major high-level components - .NET Framework, .NET Core, and Xamarin.

Xamarin is not a debate at all. When you want to build mobile (iOS, Android, and Windows Mobile) apps using C#, Xamarin is your only choice.

The .NET Framework supports Windows and Web applications. Today, you can use Windows Forms, WPF, and UWP to build Windows applications in .NET Framework. ASP.NET MVC is used to build Web applications in .NET Framework.

.NET Core is the new open-source and cross-platform framework to build applications for all operating systems including Windows, Mac, and Linux.
.NET Core supports UWP and ASP.NET Core only.

  • UWP is used to build Windows 10 targets Windows and mobile applications. 
  • ASP.NET Core is used to build browser based web applications. 

Let' understand difference between .Net Framework and .Net Core.
Well before that few lines ..

  • .NET Core is the updated and redesigned version of .NET Framework. 
  • The .Net developers can upgrade to .NET Core to build a variety of applications by targeting multiple devices and platforms. And take advantage of the new features and enhancements included in .NET Core to build, test, and deploy the applications efficiently and rapidly.
Feature
.NET Framework
.NET Core
Open Source
.NET Framework was releases as a Licensed and proprietary software framework. 
.NET Core as an Open Source software framework.
 Hence, both enterprise and individual developers can build apps with .NET Core without paying any licensing fees.

Cross-Platform: 
.NET Framework enabled developers to build applications for a single platform — Windows
.NET Core is cross-platform, and supports three distinct operating systems — Windows, OS X, and Linux.

Also allows porting their existing applications from one platform to another.
Installation
he .NET Framework needs to be installed as a single package and runtime environment for Windows.
NET Core is Cross-Platform, and needs to be packaged and installed independent of the underlying operating system. The developers are required to compile Nuget packages included in .NET Core
Compatibility
Read from right side.
.NET Core does not support all the features and functionalities provided by the latest version of .NET Framework. But it can be used as a subset of the .NET Framework.

Well, .NET Core is still compatible with .NET Framework through the .NET Standard Library. Hence, the developers can still run the applications developed with .NET Framework after upgrading to .NET Core.
Relevant Collection of Libraries
Both .NET Framework and .NET Core allows developers to take advantage of robust class libraries.
NET Core uses a redesigned CLR called CoreCLR, and features a modular collection of libraries called CoreFX.

Hence, the developers have option to pick and use only the libraries required by each application, and enhance the application’s performance by removing unnecessary libraries.
Application Models
.NET Framework and .NET Core differs from each other in the category of application models. The application model of .NET Framework includes
  • Windows Forms,
  • ASP.NET, and
  • WPF - Windows Presentation Foundation.
Application model of .NET Core includes
  • ASP.NET Core and
  • Windows Universal Apps.
Microsoft just announced .NET Core v 3.0, which is a much-improved version of .NET Core. If you want to learn and build for the future, .NET Core is the way.

.NET 3.0 now supports Windows Forms and WPF
.NET Core 3.0 also supports cross development between UWP, WPF, and Windows Forms.

 This provides developers flexibility to bring modern interfaces of UWP into Windows Forms and WPF.

Standard Library
As a formal specification of .NET APIs, the .NET Standard Library meets the requirements of varying run-times and maintains uniformity in the .NET ecosystem.

Each version of .NET Framework uses a specific version of .NET Standard Library. For instance,
  • .NET Framework 4.6 implemented .NET Standard Library 1.3,
  • .NET Framework 4.6 2 implemented .NET Standard Library 1.5
.NET Core implements .NET Standard Library 1.6
ASP.NET
While using web applications with .NET Framework, the developers have option to use a robust web application framework like ASP.NET.


.NET Core comes with a redesigned version of ASP.NET.

I.e. Developers can now use ASP.NET Core to build both web and cloud applications.
In addition to being open source, ASP.NET Core is also available on three distinct platforms — Windows, OS X, and Linux
Web Application Deployment Options
While using .NET Framework, developers have to deploy web applications only on Internet Information Server.
But the web applications developed with ASP.NET Core can be hosted in a number of ways. The developers can deploy the ASP.NET Core applications:
  • Directly in the Cloud or
  • Self-host the application by creating their own hosting process

Cloud Ready Configuration
.NET Framework, is not designed with features to simplify development and deployment of cloud-based application.

.NET Core is designed with features to simplify development and deployment of cloud-based application.

The developers can use ASP.NET to build a variety of cloud-based applications rapidly. Also, they can publish the applications directly to the cloud by availing the cloud-ready configuration included in ASP.NET Core.
Mobile App Development
.NET Framework does not include any robust framework or tools to simplify mobile app development.
.NET Core compatible with Xamarin through the .NET Standard Library.
Hence, developers can take advantage of Xamarin to write Cross-Platform Mobile Apps in C# with a shared code base and same set of APIs.

They can further use the tools provided by Xamarin to customize the mobile app for individual mobile platforms like iOS, Android and Windows Phone.
Microservices
.NET Framework have features to build Microservices but not as robust as .NET Core.
NET Core makes it easier for developers to build microservice oriented systems rapidly.

As such systems include a number of Independent and Dynamic Microservices, the developers have to focus on individual microservices.

.NET Core enables programmers to develop Custom Microservices by using varying programming languages, technologies and frameworks. Also, the developers can build a robust system by combining multiple microservices seamlessly.

Also Micro services built in .NET Core, work well with other micro services  developed with .NET Framework, Java, Ruby, or others.

Performance and Scalability
.NET Framework have features to enhance the performance and scalability of applications but not as robust as .NET Core.
.NET Core is more effective than .NET Framework to enhance the performance and scalability of applications.

It enables developers to enhance the performance of applications drastically without deploying additional hardware or infrastructure.

Also, it allows developers to build, test and deploy applications directly in the cloud. Hence, the developers can switch to .NET Core to enhance the performance and scalability of their applications without putting extra time and effort.

Containerization & Docker
Nothing here..
Containers are the VMs of today. .NET Core’s modularity, light weight, and flexibility makes it easier to deploy .NET Core apps in containers. 

Containers can be deployed on any platform, Cloud, Linux, and Windows. 

.NET Core works well with both Docker and Azure Kubernetes Service.
Dependency Injection
Nothing here...
.NET core supporting built-in DEPENDENCY INJECTION

When to Choose
If you’re a .NET developer who needs to build and release something fast and you don't have time to learn .NET Core, then the .NET Framework is your choice.

If you’re maintaining and upgrading existing .NET apps, .NET Framework is your choice. Porting an existing .NET app to a .NET Core app requires some work.
  
.NET Framework is what it is. The current version of .NET Framework, 4.8, is supposed to be the last version of .NET Framework. There will be no more new versions of .NET Framework planned in the future.
Though .NET Core does have a learning curve, well with given above advantages, If you’re building a new application and have a choice between .NET Core and .NET Framework, .NET Core is the way to go










More to add...

Ref: Link


Hope this helps..
Arun Manglick