Overview of the state of Microsoft Software development ecosystem 2020
Tags: dotnet, 2020, windows
Published: 2019-12-16 20:05:33

<h1>Intended Audience</h1>

This paper is intended for those who are new to the Microsoft software development ecosystem and would like to understand how it operates and develops.    

If you were like me you would find reading up Microsoft documentation very confusing.  Windows was not taught at my school, and terms like .NET, UWP, WPF, etc.. are foreign to me.  

This might not be a problem for you, maybe you just want to *build* something, have it working, and deploy it to the public.  If that is you, there are lots of tutorials in the Microsoft docs to teach you how to use Visual Studio (their IDE) and build an app. 

But if you are like me and want to understand how all the pieces connect together, how they work together, in order to see the state of Microsoft software development is, read on.  

From my research on the Internet, I found the first piece of information one should read (or watch) is: <a href="https://www.youtube.com/watch?v=eIHKZfgddLM&feature=youtu.be&list=PLdo4fOcmZ0oWoazjhXQzBKMrFuArxpW80">What is .NET</a>

Here, it tells us that, as a software developer, .NET is a suite of languages and class libraries.  There are three implementations: .NET Core, .NET Framework, and Xamarin.  What it does not tell us is that each implementation also contains runtimes components for running the apps built using respective .NET implementations.  

If you are wondering why Microsoft has three implementations instead of one, it is because in the past Microsoft only had .NET Framework, which only worked for Windows apps and was closed source. Then the mobile revolution came along and Xamarin was made.  Xamarin was an attempt at open-source, cross-platform, development for mobile applications for Windows developers.  .NET Core is a new and improved version of Framework, and is also open-source cross-platform development. 

For more intelligence on .net core read: https://devblogs.microsoft.com/dotnet/net-core-is-the-future-of-net/


However, as a developer in 2020 for Windows, you do not have to interact with these .NET frameworks directly. You would either use Universal Windows Platform (UWP) or ASP.NET, or ASP.NET Core. UWP enables you to build apps that work across all Windows 10 platform, whether it is mobile, laptop, HoloLens, etc..  ASP.NET and ASP.NET Core enables you to build web applications, with both a front end and a back end.  UWP is actually separate from .NET but also uses .NET Core libraries along with its own libraries (see: <a>https://docs.microsoft.com/en-us/archive/msdn-magazine/2015/windows-10-special-issue/microsoft-net-net-and-universal-windows-platform-development</a>). ASP.NET uses .NET Framework libraries along with its own libraries. ASP.NET Core uses the .NET Core libraries along with its own libraries. 

(There is also WPF, Windows Forms, and Win32 you can use for Windows desktop apps but UWP seems like their leading edge.  See: <a>https://docs.microsoft.com/en-us/windows/apps/desktop/choose-your-platform</a>)

Going forward, Microsoft intends on building a .NET 5, which will be the successor of .NET Frameworks, .NET Core, and Xamarin. (Yes, one framework will be the successor, instead of three).  .NET 5 will support all the functionalities that .NET Frameworks, .NET Core, and Xamarin have.  See <a>https://devblogs.microsoft.com/dotnet/introducing-net-5/</a> for more details. 

Hopefully, this means that the Microsoft ecosystem will be much easier to learn about and develop.   

I also hope that you, reader, now has a good overview of the state of Microsoft software development ecosystem in 2020.