How NodeJS Is Dominating .NET in 3 Easy Charts

by Mike-EEE

Wat Now? ^

OK I have to admit my title to this article is my first attempt at click bait.  Hey, I’m learning my new toy here, what can I say?  But, I think what you’ll find in this article will be of value to you if you are a .NET developer (or an application or web developer with any sort of business acumen).

In this article, I am going to put a little more thought into a concept that have touched on and by accounts have assumed readers might already understand.  I am going to dive into it a little more to make sure that I have this stated and also provide an opportunity for those to offer their feedback (welcomed — as always!) to correct any assumptions (to assume does indeed make an “ass of u and me” — but mostly me in this case) that I have.

In doing so, I hope this will help others understand the driving business force and factors for Microsoft to provide a ubiquitous .NET client application development model offering.

Platform Market Reach ^

To start with, I am going to give an overview of the big three players: Microsoft (around which my 15-year career and consequently this blog is built around), Apple, and Google.  Here I have made a chart with the awesome amCharts showing the three platforms as they currently stand to my knowledge in the marketplace:

First, if you are wondering about the colors, I attempted to find a color from each store’s logo and use it accordingly.

Secondly (and more importantly), how did I get these numbers?  To be fair, they are all guestimates.  I do not have the quoted $6-10k (!) required from NetMarketShare to get exact numbers that an analyst will have to work a few weeks to figure out.  However, I can extrapolate from data that I have seen around the interwebs. To start with, if Apple currently has 1 billion active devices, and Apple has ~33% of the market, that means if Droid has ~59% of the market, then Google Play has around 1.7 billion devices.  Additionally, if Windows 10 has 200 million installs, and Windows 10 has ~12% of the market, then I can extrapolate the numbers for Windows 7 at ~52% (885.5 million – !), Windows 8 at ~3% (45 million) and Windows 8.1 at ~10% (175.5 million).

Make sense?  Please let me know in the comments below if I am way off base here in some way and I will adjust accordingly.

Native-Hosted Technology Reach ^

With our platform market reach ascertained, we can start to break down the relevant different technologies available to .NET developers, and see how they stack up.  I will start first by way of native-hosted client application technologies.  These are technologies that are run within a host of a native platform process (like a store or OS).  For a .NET developer, the following options are available to them:

From the looks of this, a .NET developer might be tempted to go with Xamarin.Forms, which is understandable.  However, as we can see, NodeJS gets as much reach as Xamarin.Forms.  Let’s also remember that from an ISV perspective, Xamarin.Forms is a 3rd-party product and not a first-class promoted and supported technology like UWP is.  Additionally, we also have a very significant scenario to consider: web-hosted applications.

Web-Hosted Technology Reach ^

Now I am going to take the same technologies available to .NET developers as listed above and chart them out as they are available to web-hosted application development.  In this case, a web-hosted application is an application that lives within a web-host — or to be more precise, an HTML5-compliant browser.

Notice something?  Not a single available recommended .NET technology offering works within a web-hosted environment with the exception of NodeJSwhich is not even a Microsoft technology!  In fact, instead of creating a competitive .NET model to NodeJS, Microsoft leadership is inexplicably pushing its developers to use NodeJS on the client and .NET on the server, which will only create costly and inefficient solutions — which in turn will eventually push every .NET developer to NodeJS!  Well, those who care about writing cost-effective and efficient solutions, that is.

NodeJS Dominance ^

To wrap up here, NodeJS:

  • Works in Native-hosted application scenarios (via Cordova), reaching over approximately 3 billion devices.
  • Works in Web-hosted application scenarios, again reaching over approximately 3 billion devices and workstations.
  • Works in server-process-hosted scenarios and therefore (most importantly)
  • Saves money and resources by allowing code reuse between server and client, preserving encapsulation and honoring DRY.

It is no wonder that .NET developers are starting to gravitate over to NodeJS and ditching .NET altogether.  I personally have to be honest here and say that the more I talk about this subject, the more I am convincing myself to do the exact same thing!  However, it is hard to give up 15 years of investment (I still have faith!), and that is why I am promoting the following vote.

Show Your Support ^

If you like the idea of a ubiquitous .NET client application development model offering from Microsoft, please take the time and let Microsoft know by voting for this idea on UserVoice by clicking the pretty button here and voting on the issue there:

Thank you all as always for reading, your feedback, and support!

  • trisys
    • Thank you so much for that @trisys:disqus. That really means a lot. I get about 50 hits a day on this blog at present from all over the world (Russia and China are spiking lately, especially), so it’s good to get the feedback as I do not know if what I am saying is resonating with anyone. I sometimes feel like a crazy person because I do not see anyone else saying these sorts of things. Maybe they don’t have the medium to do it which is why UserVoice is so important. If it wasn’t for such a high vote turnout on the issue, I would close shop and become a painter or something LOL. Anyways, I have written an article about this Under Review status and you can see that here: http://blog.developers.win/2016/02/for-your-review-we-are-under-review/

      Thank you again for your support!

  • s977

    Well, Microsoft just bought Xamarin, so I guess it will now be supported first class! 🙂

    • Yes… let’s hope they also build out to the web/browser-hosted scenarios and it will be a great day to be a MSFT developer once again!

  • jeremyg85

    for Windows 7 at ~52% (885.5 billion – !), Windows 8 at ~3% (45 billion) and Windows 8.1 at ~10% (175.5 billion). MILLION??

    • Thank you @jeremyg85:disqus. Fixed. Maybe I was subconsciously facing the worst tech fear I could ever possibly imagine (nope, not a fan of Windows 8). 😛

  • Alexey Solovyov

    There are some outstanding tries to bring .NET to browsers via JavaScript transpiling: http://bridge.net/ and http://duoco.de (already with live debug). Community works on https://en.wikipedia.org/wiki/WebAssembly to make runtime faster and .NET has a potential there. From the other side .NET with garbage collector is not enough for special types of applications where currently C/C++ is used and in plans https://developer.apple.com/swift/ or complex RUST.

  • Lizard man

    I don’t know what you’re going on about, nobody uses node.js in the browser.
    Even if they do use the odd module, via Browserify, same language across the stack is no big deal.
    If you already know C#, and you need to know javascript for the front end, there is not a massive difference between whether you are using ASP.NET MVC or Node on the server. I pretty much use Node all the time now, but I’ve never had a WooHoo! – full-stack, same language moment.

    • To be sure, it is not node.js in the browser, but node.js as the development paradigm that allows you to create/develop the model that is deployed to a (node.js-capable) server, loaded and rendered in the browser. The actual libraries in the model would be angular/aurelia/etc, that are managed/loaded through NPM (*node* package manager).

      The problem here with your statement above is that you currently “need to know JavaScript” for the front-end as well as C# in the backend. These are two incompatible languages that create two different codebases that either you, your team, and/or your organization have to develop, manage, and maintain. From a technical perspective, this ultimately breaks DRY and encapsulation as described here: http://blog.developers.win/2015/10/the-broken-burned-bridge/

      Finally, if you have never had a WooHoo! same language moment… then you are probably doing it wrong. :p It’s either that and you have truly been using NodeJS through your entire stack (no .NET backend) and you have been enjoying it from the start and are blessed to have not had to endure our pain — ignorance is indeed truly bliss!