It’s definitely a good time to be a .NET developer. Microsoft has been around for a very long time and have often been labelled (rightfully, I suppose) as “slow” and “closed” in their approach, isolating their products and services solely to users on their platform. But this has changed drastically in more recent years. There are many reasons to be excited.
They’ve gone Agile
Don’t believe me? See this interesting article from Steve Denning on forbes.com . A company of 128 000 employees not only adopting the agile approach but doing so very successfully is no small feat.
Much of their recent development is completely open-source on a GitHub. Now anyone can see their progress, use or test pre-releases, provide feedback or even modify code on their behalf and commit it for review and approval. The earlier you get feedback on a product, the more solid the foundation and sooner you end up with a stable release.
.NET Core is Cross-platform
Yip, you can now host your ASP.NET Core 1.0 web site on anything from a Mac, Linux or even Raspberry Pi. How is this possible? .NET Core has been built completely modular and the .NET assemblies can be deployed as NuGet packages without having to “install” the framework first. As for the runtime, .NET core has what’s called the DNX which hosts the application on any of the mentioned platforms, which has the CoreCLR, so we don’t lose the managed goodies like garbage collection.
Here are some other ways which doors have opened for developers from vastly different technology backgrounds:
- Visual Studio Code is a free version of Visual Studio running on Windows, OS X or Linux
- There is built in tooling for building cross-platform hybrid Cordova mobile apps (TACO) VS, no more command line compiling as in the past.
- Visual Studio has first class support for GitHub source control directly from VS
- Azure has support for pretty much any popular platform, development technology, source control etc.
- VS also has built in support for popular task runners such as Gulp or Grunt and package managers such as bower and npm
- If you prefer create sites with NodeJS, VS even has tooling for that
- Even though this has been around for quite some time, if you have different language backgrounds such as Python or Ruby, you can create Desktop of Web projects from VS with these. For example it blew me away that you can create a WPF application having a XAML front-end with Python code-behind. (This makes use of the .NET’s DLR which bridges the gap allowing dynamic typed languages such as Python to run on the .NET framework).
The point to take from this is that the focus of Microsoft is no longer a attempt at a form of monopoly, but creating platforms and tools that would invite different developers to freely use their products, tools and frameworks (and I assume the goal is to ultimately get them to use Azure)
They went big with Azure
Microsoft’s cloud platform Azure, is huge. I always thought Google’s cloud platform was big, with every second guy having a Gmail account of up to 15 GB free storage. But Azure has topped that, being bigger than both Google and Amazon Web Services (AWS) combined.
Azure seems to offer everything and a kitchen sink, there’s so much to it. From my experience, I’ve enjoyed the simple ways to host back-end mobile, web and data services for some applications, but I feel I haven’t even touched the tip of Azure’s iceberg features.
It’s also a great platform to all a local network to move to the cloud using their “Infrastructure as a Service” (IaaS) or even “Platform as a Service” (PaaS). This obviously saves cost and time spent on hardware and software maintenance, updates, hotfixes etc.
The whole payment model is based on “pay for what you use” and allows easy scaling up or down resources as needed. I’ve got a couple of tiny prototype applications running on Azure at the moment and so far everything’s still free because I use less than 30 MB database storage and have, well, probably no traffic at all to the sites.
Haven’t we all had those projects where our great designs or approaches seem to get in the way years down the line as things change?
This is interesting, because if there’s any company that has years of “backward” compatibility caked into their software which they’d rather wish they’d have done differently or as times changed, the way their API’s get used changed, it’s Microsoft. Backward compatibility means stability but also often means lack in performance and scalability over time (especially if you’re still supporting legacy API’s from a decade ago).
Someone in Microsoft was bold enough to make the call for some rewrites. Off the top of my head, these are things they’ve recently completely rewritten from ground up:
- The C# Compiler (Rosyln)
- NET Core
- ASP.NET Core 1.0
- Entity Framework Core 1.0
These are only the ones I know about and they’re not small either. Besides Roslyn, nothing is directly “backward compatible”, but rather “conceptually” compatible, transferring existing concepts to the new frameworks rather than simply porting code as is.
In case you were wondering, ASP.NET Core 1.0 was initially called ASP.NET vNext and then became ASP.NET 5 with MVC 6, which ran on .NET Core 5 using EF 7. Now that’s a mouthful, so last week they’ve announced it’s been renamed to Core 1.0 (makes sense for a rewrite to start again at 1.0). So at least for now, it’s referred to as:
- ASP.NET Core 1.0
- NET Core 1.0
- Entity Framework Core 1.0
It’s no longer fair to label Microsoft products as slow. There are a lot of smart people that have put much effort into reducing memory footprints and optimizing performance. To name a few performance benefits as a developer I’ve picked up on recently:
- If you’re running .NET Native (such as UWP apps) you get the performance of C++ and the productivity of managed C#
- The RyuJIT compiler [link to other article] means your app will just be a bit faster without doing anything, especially the start-up times.
- And here’s my favourite, ASP.NET Core 1.0 benchmarks when compared to Google’s NodeJS web stack.
- On a Linux server ASP.NET Core is 2.3x faster
- On a Windows server, it’s more than 8x faster with 1.18 million requests per second!
Want to see some code
I’ve been exploring and keeping an eye on ASP.NET Core 1.0 as it goes through the pre-release phases. I’ve personally found it to be quite an big change from ASP.NET 4.6 and hope to be sharing a few nuggets soon on some great features I’ve enjoyed when I get the time.