DEV Community

Cover image for A Love Letter to .NET
Matt Eland
Matt Eland Subscriber

Posted on • Edited on

A Love Letter to .NET

With Microsoft's official release of .NET Core 3 today, I want to give you my perspective on .NET and tell you how the platform continues to innovate solutions to modern problems.

I've been using .NET since beta 2 of the framework back in 2001 and have seen a lot of change over the years. Sure, I've diversified into JavaScript and TypeScript development among others, but I keep coming back to .NET.

Let me tell you why.

A Brief History Lesson

When Microsoft introduced .NET, they decided that they weren't building a single language, but a managed framework that different languages would compile down to run in. This made sense given that one of the primary goals of .NET was to address "DLL hell" and simplify managed code interoperability by giving people a smarter alternative to COM development.

This meant that you could code in VB .NET if you were used to Visual Basic or try the new C# programming language if you were more a fan of C++ or Java style syntax. This also gave Microsoft room to introduce new languages down the line such as F#.

.NET was a huge success in terms of addressing the woes of COM and improving developer productivity and application quality.

But today's world is vastly different than it was back in the early 2000's.

.NET in Today's World

With .NET starting as a productivity solution to Windows desktop and web development, it's interesting how it has since radically embraced cross-platform and cloud development. Microsoft realizes that people want to run servers in things like Docker containers and on platforms other than Windows. This is not a grudging acknowledgement on their part, but a true open-arms embrace and sprint into the cross-platform open-source world.

The world has changed and cloud services are the norm. Microsoft technologies work extremely well in a wide variety of cloud hosting environments, with more capabilities coming every release. Sure Microsoft would love for you to use Azure, but it's still awesome if your team prefers AWS.

Front-End Solutions

Front-end technologies have changed more than perhaps anything else. This is evident in Microsoft's stack just by looking at Windows Forms, WPF, XBAPs, Silverlight, Windows Phone, Windows Universal, ASP .NET WebForms, MVC, and now Blazor.

At the beginning of .NET, JavaScript was this little thing to validate a shopping cart before you clicked submit. Now, JavaScript is a major part of the technology stack and a key part of the user experience. Microsoft contributed some to this boom via giving us TypeScript to help bring compile-time type safety to JavaScript.

Microsoft has also released VS Code an extremely capable - and free - cross-platform IDE that is fantastic for JavaScript development. Visual Studio also now runs on Mac, while we're on the topic of cross-platform development.

Microsoft continues to innovate with Blazor where they are taking compiled languages and generating Web Assembly to allow developers to write web applications in languages other than JavaScript. This is still an emerging technology and in its early stages, but the continued dedication and promise are there.

What do I Love?

So, now that we've covered what the framework is and how it has changed, why do I personally love it?

It's not right for every project, but for me .NET is fantastic for back-end code and desktop / mobile development. Sure the web aspects are great, but I personally gravitate more towards Angular and JavaScript / TypeScript SPAs for web presentation - paired with an extremely capable .NET back-end API solution.

C# gives you some very strong syntax for dealing with object-oriented problems.

.NET gives you a wide variety of built in libraries for solving known problems. On top of that, there are a multitude of libraries freely available via NuGet to integrate other technologies into your application in less than a minute.

If you're more functionally-minded, F# offers the capabilities of the .NET Framework mixed with functional programming. On top of that, F# code can talk to C# or VB .NET code - and vice versa - allowing you to mix functional and object-oriented code.

As far as actual language features, I'm particularly in love with .NET's generics, extension methods, lambda expressions, and LINQ. EntityFramework makes database flexibility significantly easier and productive.

.NET Core web applications are very minimal in their boilerplate code, letting you focus on what matters and easily integrating various middleware components into your application.

Conclusion

I've written before about how .NET is like the Borg - slowly acquiring new features and capabilities. This remains relevant and is an incredibly strong reason for the framework - it adapts to new situations and offers new capabilities as the world changes.

I'm reminded of a joke thread comparing various programming languages to boats from back in 2008. In the comments, a user named RJ said this of .NET:

.Net is undoubtedly a flotilla of mid-size ships in various states of dis-repair, with no one boat leading the others. At random intervals new boats, partially complete, will be added to the flotilla – but as these ships do the same as some of the other ships – nobody will bother to finish them. Sometimes, some of these ships sink never to be seen again, but nobody really notices.

RJ wasn't too far off. Sure we've lost some ships, but .NET is now a glorious armada capable of taking on whatever seas the ocean has to offer.


If you're considering learning .NET, give it a try. It's a lot to take in, but you'll be rewarded. I recommend you start somewhere small, like a console app or building a .NET Core Web API.

Reach out to the community if you get stuck. The .NET community is professional, courteous, and incredibly innovative and I am proud to be part of it.

.NET is not for every team or every problem, but it's amazing to be a part of, and I do not regret investing my time in this technology over the years.


Photo by Matt Popovich on Unsplash

Top comments (11)

Collapse
 
thebuzzsaw profile image
Kelly Brown • Edited

I love .NET, but I never understood how people could have used the language since its birth. Like, it was a pretty bad language (alongside Java) in those early years. It only started to come to life as a worthwhile tool in 2008-2012. Whatever. Let the past die, I guess. All I know is 2020 .NET is freaking amazing; .NET Core changed the game and finally made me feel good about dropping C++ as a primary language. I am working on a brand new game + game engine in C#, and I've never been happier.

Collapse
 
integerman profile image
Matt Eland

It was still pretty cool back in the old days, it's just way better now.

Collapse
 
leob profile image
leob • Edited

Microsoft is much more open these days than it was before ... I mean, .NET is even "cross platform" nowadays, right? At least I've heard about ".NET Core" that it's able to run on Windows, Linux and Mac.

I'm a longtime Java developer (well over the last few years I've largely moved to other stacks), and in my mind .NET was always conceptually very similar to Java, but tied to Windows. But even that isn't the case anymore since it's cross platform now.

Collapse
 
integerman profile image
Matt Eland

That's correct

Collapse
 
c0derr0r profile image
Irkan Hadi

I have been using .NET on and off for almost a decade now and I hate the fact that it is being stigmatized in the dev community (less so now than before though).

Blazor is one of the things that I am very excited about!

Collapse
 
lazerfx profile image
Peter Street

Did you have the tall flip-out cardboard version, with (I think) 6 CD's and a DVD of the .NET Beta? I can still recall writing my own site in that, setting up XSLT transforms with some basic AJAX script (All the buzz words at the time)... Brings back memories :D

Collapse
 
integerman profile image
Matt Eland

I was a student programmer at University of Wisconsin at the time, working on a fitness center web app for them, so I never saw a box, but back in the day, massive boxes like that were common.

Collapse
 
kamranayub profile image
Kamran Ayub

I've been using .NET since around the same time! Even though full-time I focus on full-stack JavaScript/TypeScript, I run a website built on .NET. Now the issue is I am migrating to .NET Core so that I can run on Linux which will save me on cost but also I've become a pretty big fan of the JAMStack architecture so ideally I'd like to remove the MVC tier and switch to only an API and perhaps use Next.js for the frontend (which allows me to scale to SSR in the future if needed).

After using TypeScript so much now though, I find myself wanting a lot of the type features in C#. I know I could use F# but to be honest it can be really hard to interop with C# libraries. F# is good as a consuming language in an app but less-so as a library language.

Collapse
 
saint4eva profile image
saint4eva

With .NET Core, developers can now integrate AI and ML capabilities into their apps with ease. The ecosystem is getting better and broader, and many other big companies such as Google, Amazon, Samsung etc. are betting on .NET. What a time to be a .NET developer.

Collapse
 
twigman08 profile image
Chad Smith

Great post.

I have been using .NET for about 6 years now and have loved it. It got a bad name for a while from developers, still does sometimes, but most of them never really sat down to try .NET Core.

Blazor is very interesting and it's very fun to play around with. I wouldn't build a production web app on it just yet, but I'm really excited to watch how it grows. I'm big into Web Assembly being part of the future.

Collapse
 
vinceumo profile image
Vincent Humeau

Thanks for this post, I started to look at .Net core recently and found it really enjoyable, love signalR. As a front-end I'm really looking forward playing with Blazor!