.NET Core or Vanilla .NET?

I have always wanted to write about .NET Core and the comparison of it with .NET framework itself. I could just say, "Like father, like son", or something Shakespeary like, "Apple doesn't fall far from the tree". But where's the fun in that though and besides its not my way of writing things up. Instead of that, I would like to write in a contrast of what we have in both of the frameworks for your applications to deliver more to the clients and get most out the frameworks and partner stuff, such as ASP.NET Web APIs, SQL Server database services etc. 
Let me enlist a few things that would interest you, and most of times, my friends are confused with these questions so I think I should answer them here, once and "for all". 

Is .NET Core the future?

Just the way,
  1. C++ never ended
  2. Windows Forms never vanished in fog
  3. Java SE is still being used
  4. MFC is still being learnt and used
.NET framework will still continue to move forward. There is no such thing going on and besides, these are just rumors, and people are always so much concerned about what is going on and what will be there 5 years from now. .NET Core framework is a really powerful and simple framework by Microsoft and I have personally enjoyed .NET Core more than I did .NET framework itself, but I am sure it is not going to replace the former. .NET framework will be continued and will be available to you. They are just moving forward parallel to each other. 
When I see .NET framework, I can think of things that .NET Core doesn't have (as of now). There are many excellent and intriguing things, for example, Windows Presentation Foundation, which are only available in .NET framework and not in the .NET Core. This is one of the areas where .NET Core lags behind, but community is working on bringing stuff to it too. 

Then why bother with .NET Core at all!

.NET Core may not be interesting because .NET framework is available with many sabers in hand. But there are things that make .NET Core better, one of them is the code re-write. I have written a bunch of articles about performing a few things like, cryptography, and in these cases the codes of both the frameworks don't match. In most cases the code written in .NET Core is cleaner. For example, notice the difference below:
  1. // .NET Core  
  2. using(var sha256 = SHA256.Create())    
  3. {    
  4.     // Code here...   
  5. }    
  7. // .NET Framework  
  8. using (var sha256 = new SHA256Managed()) {    
  9.    // Crypto code here...    
  10. }    
This re-write removed most of the confusions in .NET framework. Besides, there was a need of two classes, one the abstract one and one being the managed implementation of that class (algorithm). 
That is not it, .NET framework was not available on other platforms by Microsoft. You had to use third-party framework in order to support the rest of the machines. Mono platform was my favorite, I agree. Now, Microsoft themselves have provided the support for .NET, as .NET Core. Which runs on Windows, Mac and Linux distributions. 
In cases where you have to consider using a cross-platform solution for your clients, my bet would be on .NET Core. Implementations of Mono platforms were based on ECMA standards for C# language, but still Microsoft is Microsoft and the tools provided by Microsoft are also authentic and interesting.

Tools comparison

First things first, I don't like anything other than Visual Studio. But Visual Studio is not available for download and installation on Linux and Mac environments. But Microsoft has provided you with Visual Studio Code. Visual Studio Code is a full feature IDE for web development and most of the programming related extensions. C# and other languages such as C++, Python are supported and web development using Node.js is also supported heavily in this IDE.
So in many cases, if you want to use .NET Core, you will find yourself a lot of handy tools and helpful extensions that will guide and help you throughout your way.


In term of audience, .NET Core rules out way more than .NET framework can even think of. .NET framework work run on Windows environment only, whereas .NET Core would run on Windows too, yet it would run on Linux and Mac environments.
Most of the companies and projects are already being ported to ASP.NET Core and .NET Core. Don't trust me, read this Jon Skeet's tweet, https://twitter.com/jonskeet/status/752628746415443968
This is just a blog post, I don't have enough references at the moment. I will soon add more of the references to the stuff and then I will post it as an article that will actually guide you through real-world happening in the world of .NET framework. Until then, cheers. :-)