The Lounge is rated Safe For Work. If you're about to post something inappropriate for a shared office environment, then don't post it. No ads, no abuse, and no programming questions. Trolling, (political, climate, religious or whatever) will result in your account being removed.
C# has a low learning curve and the language, debugger and IDE's are all mature. And that's not mentioning the security patches the web stack gets every few weeks.
It doesn't look like it is the right time to switch from .NET to anything else at the moment:
- .NET Core
- How can the Node ecosystem stand in comparison to the .NET ecosystem, in terms of available libraries, classes, object model, tools, etc.
My experience with Node.js in VS2019 was that the intellisense and debugging wasn't as rich as what you would get if you used old-school C#/MVC. Seems I couldn't drag the instruction pointer around at will like I could in C#/MVC and I maybe couldn't run certain commands in the debugger window when using Node.js instead of C#. Also, when using C#/MVC I felt the intellisense was quite rich but I didn't get that same feeling with Node.js in VS2019. You might have a better experience with Node.js in *other* IDEs besides VS2019.
I know this is off topic, but Haskell has a really rich type system and is highly immutable so is really hard to achieve side effects or stupid errors in pure Haskell. With that said, I've found the debugging/IDE experience in Haskell to be a bit awkward even if I personally do feel Haskell is the best overall language for Line of Business applications. I think Microsoft tried to bring a "Haskellish" language called F# to the masses, but I think they kind of messed it up by making F# impure. I think this decision on Microsoft's part was to reach a broader audience and make it easier for F# to work with .NET but honestly, as much as I respect Don Syme (and other great F# contributors), I feel Microsoft may have been better off just sticking with pure Haskell and highly discouraging mutability.
Now, I think the fact of the matter is that Haskell, F# and maybe even C#/Classic MVC "might" require a higher learning curve than Node.js. The callback and promises in Node.js did seem to give me some headaches but I got over them and I found Node.js to be very intuitive. The libraries in Node.js felt pretty mature to me. Things like WebSockets felt quite trivial in Node.js to me but they seemed to be a royal pain to me in C#/MVC.
Regarding .NET Core. Personally, for everything new, I would use .NET Core instead of Classic MVC. With that said, however, it seems like the old ASP.MVC debugging experience was easier for me than .NET Core. For some goofy reason, when I have a fatal bug, it seems like .NET Core likes to crash in my browser window instead of in VS2019 like I thought classic ASP.MVC did. It's easier to debug a problem when the problem opens up in VS2019 than it is when the problem happens in the internet browser.
These are just my current opinions though. I'm not necessarily willing to guarantee any of them. Some of the information I said above might be inaccurate so I welcome "kind" corrections and urge you to verify this all yourself. If you chose to downvote me, please add a comment as to why and I will try to adjust my "learning".
If rewriting, with a stack of helpdesk tickets thrown in, weighing Node.js as a possible replacement is well within consideration. Azure functions can be done in multiple languages if moving away from self hosted to code as service.
Depends on so many things... but I'd probably stick with C# because you could be able to get away with a partial rewrite to (for example) factor out WCF or migrate to .NET Core.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
If I were to create a small webapp without the need for significant security, I would consider using node all the way. It is after all very convenient to only have one language to work with in an app, also I do love typescript. Yet, as mentioned, if we are talking about a larger app and need for some real security, .net core is the only way to go for me. Mostly because I know it well and also because I know how to secure my apps using .net core. With node on the server, while it may be possible to write secure code with node on the server, I would have to learn that all over again and given I own my own iis server that would not be something I would even consider at this point. Also, there is Blazor for .net for writing wasm web apps, that I consider using in the frontend instead of Typescript and Angular, because it is convenient to only have one language to work with in a project. My current app, while Blazor was out as a demo when I started, has an Angular frontend and a .net core 3.0 ef core 3.0 backend.
What is all this nonsense about Node and C#? You mean to tell me you did not write your back-end in the one true language of LISP? Hark, thy hast done wrong! Repent, my child! Seek thee of that which hast the ever loving and gentle embrace! Ah, that is better. Well, gentlemen, ladies, now that I have been refreshed, let us have a civilized and quaint discussion. I expect you all here at 4 sharp for tea.
In all seriousness, I have heard that .NET Core is superior to Node as of now. Though, I have nothing to back that up with. Personally, I would stick with something that I was familiar with and not do a rewrite into different languages. But, I would also listen to what they say, if they can make a good case for the switch, and provide ample amount of data to back them up, then perhaps it could be an option to consider. Might want to prepare a defensive case for your side of things on that path.
This is my signature,
There are many like it but this one is mine.
Why would you use one vs. the other for back-end development?
... Choose what they know best as the language solution. I could bet money that if you did a poll asking both:
1) Which language do you know best? ... and ...
2) Which language would you choose?
... that there would be a 95% correlation between the 2 answers.
THINGS WE SHOULD BE ASKING:
1) Is the expected lifespan of the desired language good? (If you have to have to rebuild in 7 years, then either your language, or more likely your application architecture (or Software Architect) is broken.
2) Is the language supported by a good library base (connectors to different databases, etc).
3) Does the language or its libraries have significant characteristics important to your application which are not available in other languages (i.e. set based processing of SQL for reporting productivity)
4) Does the language support the desired environment characteristics. (RAM usage, response times, CPU requirements, scaling, ...)
5) Is the language supported by a good experience pool? (i.e. can I easily hire new people to support it, and the associated things it may also require, like IIS or Apache)
6) Is the language going to unnecessarily increase the required breadth of skills for my organization? (more important for smaller organizations)
7) Cost of ownership - Includes things like: cost of rebuild? Do I have to maintain an additional developer skillset? Do I have to maintain additional hardware/OS/Web stack? Do I have to maintain an additional hardware/OS/Web skillset? (the actual build and new hardware costs are often less significant than ongoing maintenance of the required people resources)
8) ... yes, I'm sure there are other items I missed ...
Often, (and likely in this case) looking at these larger picture items, the answer is "It doesn't matter", assuming the languages being compared are mature, robust, and purvasive, which they are in this case.
Although I've a better system, as well, my primary work PC is a refurbished Dell Optiplex of some sort which came with a video card for direct HDMI. I did upgrade it from 4GB to 8GB (DDR2 !) which did make a difference but I wonder if there's any reason to upgrade.
Why? It's main use is to connect to a VM "at work" and from there, another hop to my desktop. So I sit back in a recliner with a 49" monitor I can almost touch with my toes and tap away on my (non-gamer) wireless keyboard/mouse (recently upgraded to Logitech MK710).
Considering the path between me and my work-box (Xeon 32GB and something like 8 3.5GHz cores) - and that it does all the real work (and reaches out even more hops to the server farm, as needed) is there any sensible reason to upgrade anything, except, perhaps, a more comfortable recliner?
No amount of hardware (at either end) will overcome/improve your internet bandwidth. Leave your hardware alone. It actually comes down to how much you want to pay for your internet connection.
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
Basically fits with my minimalist philosophy (I'm a card-carrying minimalist).
I was just curious if anyone else could see what I couldn't.
As for internet bandwidth - the hype of the millennium (for now). My provider keeps incrementing mine up (and of course, encourages me to upgrade). 15->25->100->200 Mbs. I allow this because my cost has actually gone down.
But when I streamed at 15Mbs all was OK - didn't improve at 25Mbs, or 100 or 200. I try to explain to people that (unless they're sharing with an entire fraternity or something) they've no use for that speed because internet traffic and data rates from most sources won't be supplying data at that rate as they've lots of other users to service.
Some are touting their 1GB/s options - my entire company connects two offices (about 450 users) with a 1GB line. To what use can a family of 2-6 have for it, except to say their bandwidth is bigger than than neighbors?
Well - I actually do get up for some of that stuff - keeps my legs from getting cramped or going into full atrophy.
On the other hand, I have a (rolling) coffee table next to me in easy reach whereon I keep my coffee and, if early enough, some Trader Joe's Dunkers (plain back). Occasionally some spring rolls or a knish.
Although it's never happened to me before, I do fear this scenario happening. So much in fact that I always dress up as a bag of chips when I go out in public. That way, when it finally happens, I don't have to worry about looking silly in front of people.