|
cool, does it work in all browsers or need helper plugins?
Not being able to do so was the biggest downfall of the project using coffeescript I was on some years back; and when I asked about typescript a few times before I never got an answer.
Did you ever see history portrayed as an old man with a wise brow and pulseless heart, weighing all things in the balance of reason?
Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful?
--Zachris Topelius
Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies.
-- Sarah Hoyt
|
|
|
|
|
Dan Neely wrote: cool, does it work in all browsers or need helper plugins?
No plugins required. I'm able to debug TypeScript in VS without problems. VSC - now there I had problems with setting up breakpoints.
|
|
|
|
|
You absolutely can.
Idaho Edokpayi
|
|
|
|
|
Pete O'Hanlon wrote: and the new features such as Span<t> means that it can work with much lower code overhead.
Care to elaborate on that a bit? As in, I can understand memory overhead, so I'm curious how it can affect code overhead?
modified 6-Dec-19 13:50pm.
|
|
|
|
|
I was loose with my terminology here. It should, of course, be memory overhead.
|
|
|
|
|
"We're going to stop speaking English and start speaking French."
If there is a compelling reason to do something then do it. If you're doing something simply because you fancy a change or you think other people are doing it so there has to be a reason, then you shouldn't be in charge of making technical decisions.
|
|
|
|
|
Hey, we finally agree on something.
|
|
|
|
|
Even with TypeScript, you're still dealing with the Highly Cursed Number type for arithmetic. There is neither checked arithmetic nor unchecked , only cursed , and it is up to you to force it to do the right thing.
|
|
|
|
|
I'd stick with C# . And don't rewrite at all without good reason.
Sadly, where I am now, we're beginning to rewrite all the SSIS (ptui) we've been working on since 2011 in Ab Initio, for no good reason, except for maybe because it costs more and therefore must be better.
|
|
|
|
|
What's their reason for switching to Node?
Node is JavaScript, which is awful, and TypeScript just makes it look more like C#
It kind of depends on your environment though.
Personally, I'm using Microsoft all the way down, so switching out anything would make it harder to integrate with everything else.
For example, if you're using Jenkins instead of Azure DevOps, C# integration is a lot harder to begin with and switching to JavaScript may make certain tasks easier.
One reason I'd use Node over .NET Core is to re-use code between a back-end and a front-end (website).
This is actually a scenario that came up recently for a web app we wanted to do with instant front-end calculations that we also had to do back-end for an initial generation for the data.
Node would probably also be a better fit if your data is unstructured (with a MongoDB database, for example).
Using Node could be a hiring decision if you can get plenty of JavaScript developers (because everyone knows JS), but no C# developers.
Other than that I have no reason to use Node instead of .NET Core, they're both multi-platform and lightning fast.
It even seems .NET Core is sometimes even faster than Node!
Node invites the horror that is npm with 10.000+ files in 40 MB for a single package into your back-end
However, why not use microservices and use both where they best fit?
|
|
|
|
|
|
Our current ASP.Net WebForms code base requires asmx files so we can communicate with our DAL from javascript.
Our new MVC5 code base is all C#, and we're moving as far away from using javascript (in any of its evil forms) as we can. We also implemented a new DAL that is more generic than the existing one.
We're not using any ORM beyond the EF stuff that comes with your typical MVC project template. To be honest, we'd REALLY like to get rid of EF altogether, but we don't really have time to work on that aspect of the code.
It's hard to decide which I hate more - javascript, or EF.
".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
modified 7-Dec-19 6:03am.
|
|
|
|
|
Our MVC5 talks to a webservice backend (also c# that runs a repo pattern with dapper as the persistence handler). It's lightning fast and pretty easy to implement.
Once you have a webservice/micro service layer, your frontends are really whatever makes your project easier for quicker ROI. I've never used node but I'm wondering why one would use a javascript library for server side implementation?
|
|
|
|
|
From an architecture and design standpoint, I'd first look at the team and their core skills. The platform I chose would heavily depend on what my developers were used to coding, and could be productive in.
That's one of the primary considerations of any platform or stack, assuming they meet functional requirements.
So if it were me, again, I'd start there.
From there, most of the rest is dev fodder, that really people will tend to holy roll over.
What's important at the end of the day, is can it meet the requirements necessary to build your app?
And so if it were me, I'd go back to the design phase, mock up some overall system diagrams, and flow, maybe come up with a preliminary SBD, and then match it against the various offerings.
Whichever comes up strongest in helping the app fulfill it's behavioral requirements is what I'd go with, in the context of the given team's skillset
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
I would do a lot more who/what/why discovery before choosing either - why are we rewriting, why do we need to do the whole thing, what skill sets do we have, what is our hosting story, what is the budget etc.
|
|
|
|
|
Marc Clifton wrote: Assuming your 7 year old back-end is written in .NET, if you had to rewrite it, would you switch from .NET to Node? I would oppose a rewrite even. You can replace parts of it, but you don't abandon the applications that make money.
Marc Clifton wrote: So what's you're take? Why would you use one vs. the other for back-end development? If developing for a Rich UI, I will want to provide a Rich UI - not a simplistic website, but a UI that supports Windows color scheme's, resizing of panels, resizing of columns, and would always use the Common Controls (nearly unchanged still, since Win3).
Installed this "Slack" desktop application, and it is unintuitive and bloody ugly, does not support high-contrast color schemes, and is an insult to development in general.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
I would use F#
|
|
|
|
|
You should never switch tech because it's old, although we always like new and shiny things.
If it works you should maintain it (I have 16 year old code in production).
The reason to use (continue) .net :
- control over the environment (in house deployment)
- existing competence in the technology
- better IDE and dev tools
Reasons to switch to something else:
- not in house and in the cloud
- environment running costs at scale (generally .net more expensive)
Exception up = new Exception("Something is really wrong.");
throw up;
|
|
|
|
|
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.
Honestly, if my team would suggest to scrap a C# back-end in favor of using node.js and typescript, I'd either resign or ask for resignations. I wouldn't want to work with people like that, especially not with WASM and .NET Core creeping into the web-stack, threathening the future of javascript back-end frameworks. That's basically expecting you to learn skills for the next 5 years, that might be obsolete in the same timeframe.
Madness. Pure madness.
|
|
|
|
|
It doesn't look like it is the right time to switch from .NET to anything else at the moment:
- .NET Core
- WebAssembly
- How can the Node ecosystem stand in comparison to the .NET ecosystem, in terms of available libraries, classes, object model, tools, etc.
|
|
|
|
|
My personal experience has been that classic C# MVC (Without .NET Core) is often the easiest to debug for complex business logic (not necessarily UI logic). I spent most of my years developing ASPX WebForms (or PeopleSoft hack... [1]) and a little time with ASP.NET MVC and some JavaScript and even a small bit of Node.js. I've even snuck F# and Haskell in (for simple tasks) when I could.
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.
Then there is the whole part of the "stupid errors". I'm unfortunately a very absent minded person so I often make "stupid errors" in JavaScript that I wouldn't make in C# because C# protects the user from some level of "stupidness". That's where Haskell comes in.
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".
[1] - I really don't want to talk much about my time as a PeopleSoft developer. While I did have legitimate business problems during this time, PeopleSoft was one of the worst languages I've ever worked with - possibly even worse than raw Javascript.
|
|
|
|
|
rewrite or port?
If you had to port/upgrade the project, do not see much reason to switch the language. The basics likely the same, but I could imagine a bunch of headaches due to hidden logic operations. Some function which is 1 based counting in .net but 0 based in Node/JS (looking at you javascript Date getMonth value yet days of the month are 1 based )
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.
I've not had that much exposure to Node (what I have has mostly been from writing some Electron apps), but I'm not keen on it... Could be because of Javascript - I really don't like Javascript... I'd prefer to use something like Purescript, because it's got a proper type system. Having said that, I'd sooner use F# than C# for the same reason... Crazy type dude...
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Marc Clifton wrote: So what's you're take? Why would you use one vs. the other for back-end development? If all you have is a hammer, then even screws look like nails.
What languages and technologies do the future developers you're going to want to pass the maintenance off to know? Use that (even if you consider it to be the wrong tool for the job).
|
|
|
|
|
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.
|
|
|
|
|