25 Aug 2020
Whether you’re just starting to look into web development after learning some C#, or whether you’re a seasoned Windows developer making forays into web dev, it’s very common to stumble into this massive confusion: it seems like Microsoft deliberately tried to complicate things by creating heaps of technologies and acronyms for them. Let’s have a look, just off the top of my head, we have got the following tech available to us:
What are the differences between them? Which one is best to pick for learning web dev is today’s world? Which one will be most needed in the job market for the years to come?
Let’s dive right into it. Starting with a short history lesson.
The first version of .NET Framework was released in 2002, and since then we’ve got to version 4.8 released in April 2019. In 2016 Microsoft released the first version of .NET Core, which was not nearly as full-featured, but had a massive advantage over its predecessor – it was truly cross-platform.
Each major release of .NET Core brought a lot of breaking changes, that’s why you want to be careful when looking for answers to your questions or tutorials – make sure you looking at the right version of the framework.
.NET Framework can only run on Windows, and while there is a third-party implementation called Mono, it didn’t seem to win peoples (and more importantly, businesses’) hearts as much as .NET Core did. However, being the longest-lived player on the market, .NET Framework amassed a huge following, lots of libraries, books, courses and tutorials.
.NET Core is truly cross-platform and runs on Windows, Linux and Mac OS. That comes with certain drawbacks – there was a handful of very popular .NET Framework libraries that were not ported to .NET Core immediately, although over time the ecosystem has mostly caught up, whether with Microsoft releasing new versions of popular libraries (Entity Framework, SignalR), or the open-source movement implementing the missing pieces (WCF). Some libraries still haven’t been ported and probably not ever going to be – such as WebForms.
By the way, if you’re looking to use WinForms with .NET Core, seems like it’s your lucky day! Microsoft recently released Windows Forms Designer for .NET Core
As far as the documentation is concerned – Microsoft has done a fantastic job at documenting .NET Core, so it’s heaps better than your general useless MSDN madness. There’s also tons of tutorial, free and paid online courses, blog post available for .NET Core. Also, most of the .NET Framework developers migrated to .NET Core, so you’ll find ample online presence in discussion forums such as /r/dotnet and forums.asp.net.
While you can use same programming languages (C#, F#, VB.NET (limited support)) with both .NET Framework and .NET Core, the way projects are structured, system & SDK library names and APIs are quite different, so there’s definitely going to some learning curve whichever way you go. If you start with .NET Core there’s always a chance you’ll get asked to look into a legacy .NET Framework web app at work, but don’t be afraid – while they are different in a lot of ways, you’ll still have a bit of a head start when it comes to C#, CLR and .NET as a platform.
One of my awesome readers pointed out that complete VB.Net support is lacking in the current .NET Core (3.1). Seems like you can only target Console apps and Class Libraries if you’re using VB. Full support is planned for .NET 5. See this blog post for more details: Visual Basic support planned for .NET 5.0
Microsoft stopped actively developing .NET Framework, and will only be releasing maintenance and security updates. So essentially it’s a dead-end, progress-wise. Having said that, companies that have apps running on the .NET Framework will be supported for quite some time, effectively for as long as the underlying platform (Windows) is supported.
.NET Core, on the other hand, is being actively developed, with grand plans of releasing a new version by the end of 2020 (and then yearly afterwards). Doing the usual Microsoft thing, they are going to rename it yet again and call it .NET 5. I guess they’re trying to bring it back in line and unify the naming, but boy do I feel sorry for all the new devs that come to the ecosystem and need to decide WFT they are supposed to be using.
As far as the modern Web Development are is concerned, without any doubt .NET Core should be your choice over .NET Framework. The main question is which part of the framework you should start learning depends on the sort of web app you’re planning to build.
If you’re planning to build new microservices or Single-Page Applications (with front-end frameworks like ReactJS), you should start with ASP.NET Core. Check out this article “Create web APIs with ASP.NET Core” to get started.
If you’re planning to build a more traditional web app, where there’s not a whole lot of client-side Javascript logic required, i.e. you’re not planning to use ReactJS/Angular/Vue and just want your app to render some pages, let users submit information and display something back, you have several options:
While there’s still a lot of web apps running on .NET Framework that supporting real business needs and bringing home bacon so to speak, .NET Core is definitely the way where the job market is moving. Sure, there will be plenty of jobs that list .NET Framework as a requirement, but most likely that’d be for the maintenance of existing apps, not writing new ones.
When interviewing for a dev role that involves .NET Framework, there’s a couple of things to watch out for. Ask your prospective employer these questions:
Hopefully, this article helped to answer your questions and pick the right technology to learn web development. If you have any questions - just leave your comment below and I’ll do my best to answer it.
Interested in learning more about web dev with .NET Core? Check out this blog post on best resources to learn web development with .NET Core
Also, join my mailing list to get helpful advice, tips & tricks on .NET development.