back to article Tangled in .NET: Will 5.0 really unify Microsoft's development stack?

"There will be just one .NET going forward, and you will be able to use it to target Windows, Linux, macOS, iOS, Android, tvOS, watchOS and WebAssembly and more," Microsoft's Richard Lander promised on the announcement of .NET 5.0 at the Build 2019 developer conference. .NET is Microsoft's development stack, which includes a …

  1. hammarbtyp

    With apologies to Tolkein

    Three Frameworks for the Mobile kings under the sky,

    Seven for the Open source developers in their halls of stone,

    Nine for windows developers doomed to die,

    One for the Dark Lord on his dark throne

    In the Land of Microsoft where the Shadows lie.

    One Framework to rule them all, One Framework to find them,

    One Framework to bring them all and in the darkness bind them

    In the Land of Microsoft where the Shadows lie.

    1. Roger Greenwood

      Re: With apologies to Tolkein

      Oh don't apologise, that was brilliant and exactly what I thought. It was written in the runes.

    2. Anonymous Coward
      Anonymous Coward

      Re: With apologies to Tolkein

      >One Framework to rule them all, One Framework to find them

      And .Net should also burn in the fires of Mount Doom.

      1. Anonymous Coward
        Anonymous Coward

        Re: With apologies to Tolkein

        "And .Net should also burn in the fires of Mount Doom."

        You obviously have not had to manage an environment with multiple Java applications. .Net is way way less painful.

        1. Anonymous Coward
          Anonymous Coward

          Re: With apologies to Tolkein

          "You obviously have not had to manage an environment with multiple Java applications."

          I do, as well as .Net ones, and the level of pain experienced is all down to the application vendor and how they package and distribute their wares; the runtime used makes little difference. Java apps distributed as either proper OS packages, compressed archives or WAR files are normally trivial to manage, even at scale. Likewise for .Net apps in archives, MSI packages or at least scriptable installer apps.

          OTOH app vendors who insist on only using human-interactive binary installers (either GUI or CLI) can go pound sand regardless of the runtime they use.

          1. TheVogon

            Re: With apologies to Tolkein

            " the runtime used makes little difference"

            I call bollocks. The .Net runtime just works, is fully backwards compatible and there are only 2 versions to install (3.5 or 4.7+) that cover all other versions.

            With Java there are dozens of versions that sometimes have to coexist - which are commonly not backwards compatible. And you can only have ONE set as the browser default version! Not to mention a couple of orders of magnitude more security holes and generally inferior performance. Its a sucky mess in comparison.

            1. Anonymous Coward
              Anonymous Coward

              Re: With apologies to Tolkein

              I'll give you the browser one, sure. That's also the biggest source of security woes too. Fortunately that's long past now and virtually all Java apps I deal with are web server apps which really are trivial to manage with any of the popular CM tools available today.

              As for CVEs, the Oracle JRE has around 6x what .Net framework has (so significantly less than a single order of magnitude) but at a lower average severity. As is often the case with MS, the vulns are commonly nasty RCE style (over half for .Net!) with two 10.0 scores last year alone. Java is also much more widely compatible across different platforms.

              So it's not that one is significantly better than the other overall; I deal with both all the time and they both have plenty of their own warts, like pretty much everything in this industry. :)

    3. deadlockvictim

      Re: With apologies to Tolkein

      Tolkien.

      Apologies accepted.

    4. bombastic bob Silver badge
      Thumb Up

      Re: With apologies to Tolkein

      If I gave you 2 additional thumbs up, right NOW, it'd be at 42

  2. NerryTutkins

    what a mess

    Microsoft's platforms used to be quite simple - they had .NET and you could use similar code on the web and desktop. But in recent years, they've been so keen to chase the latest thing, they just keep spewing out new ones, MVC, then core, standard, razor, blazor, etc., and now they're realized it's a total mess, they're trying to unify it. But without actually unifying it by supporting web forms or WCF.

    Web forms has plenty of problems, but it's also a very quick way to develop and it handles a lot of the security aspects, and there is a huge amount of legacy code. Microsoft claim they're all into open source now, but they haven't open sourced .NET 4.x, or web forms, so it's clear they'd rather kill that off and get everyone onto whatever their latest offering is.

    If Microsoft abandons web forms, you can bet that an open source alternative that fills a similar gap in the market will rise, and in 5 years time, Microsoft will basically be copying it and telling us all it's the future.

    If Microsoft really wants to convince everyone it actually has a plan or a consistent approach, and isn't just steering people towards Azure services, why not open source the original .NET platform and let that develop alongside the others, so the market and developers can choose which way they want to work.

    1. rmullen0

      Re: what a mess

      Finally, a voice or reason. The fact is that Web Forms to this day still works best depending on what your needs are. I'm using it with Telerik's UI controls and I will take that any day over the "new and improved" way of doing things. As far as I'm concerned, all MVC ever was, was a copy of Ruby On Rails. I don't have a problem with copying the good aspects of it. However, the problem all along IMHO was a lack of UI controls. IMHO, ASP.NET Web Forms and JavaServer Faces had it right to begin with. I disagree with those who claim that you need to program web apps at the bare metal. That is just flat out wrong. I want to program at an appropriate level of abstraction for what I do, which is developing applications. I am able to that without using JavaScript at all using Web Forms. And that is AJAX enabled and has robust UI controls such as grid controls with built-in sorting, filtering, grouping, inline editing, etc. etc. I am not happy at all with the direction the ASP.NET team has been taking for the past 10 years for this reason. Also, Microsoft is saying that Web Forms developers should move to Blazor, an unreleased framework that si barely alpha quality. It remains to be seen whether it even pans out or will be dropped, just like Silverlight was. Microsoft got themselves into this mess to begin with because they insisted on tying .NET to Windows. The same way they made idiotic claims like IE is an integral part of the operating system. Now, they have a mess on their hands trying to clean everything up. Python is on the rise as was evidenced by StackOverflows survey results for the past several years and C# is going down. Developers Web Forms and WCF developers should take note of this an evaluate other platforms after being screwed by Microsoft. Personally, I think Microsoft is just trying to push everyone into the cloud to make more money.

      1. NerryTutkins

        Re: what a mess

        "I disagree with those who claim that you need to program web apps at the bare metal. That is just flat out wrong."

        I think there are times when it makes sense - for very high traffic apps or ones that are very performance sensitive.

        But what I do find a bit ironic is that people championing MVC/core because it's faster, gets you closer to the bare metal, etc. also generally pair it up with EF, which is the complete opposite - an extra layer of abstraction on the db to make it easier and quicker to develop, but which is 5-10 times slower.

        Virtually all the performance issues I see on web sites are database related rather than issues in the web app code, or the verbosity of the HTML.

        I just don't really see the logic of going bare metal on the HTML/javascript and application code, and then doing the exact opposite on the database, which is in most cases a far bigger performance bottleneck.

        It seems many of these choices are made based on what is fashionable, rather than a rational analysis.

        Personally I use both web forms and MVC, but I never use EF because I'm not willing to take a speed hit like that just to avoid having to write and optimize SQL code.

        1. rmullen0

          Re: what a mess

          @NerryTutkins Good point about EF being slow and it being paired with MVC. Very true. I have been a heavy user of EF and EF Core, but have found Dapper to be much faster.

    2. bombastic bob Silver badge
      Meh

      Re: what a mess

      "Microsoft's platforms used to be quite simple - BEFORE they had .NET"

      Fixed it for ya

      (everything post .Not has been a continuous stream of "and then it went horribly, horribly, WRONG"

      1. Nick Ryan Silver badge

        Re: what a mess

        Arguably everything before as well. It's been one DLL hell after another for years as well as one interop system after another too, with DDE, ActiveX, COM, DCOM and .net amongst the most common - often built on top of one another. All starting with an operating system that had no concept of decent library management, and rather than introduce one they just bodged layer upon layer of copies of files and versioning and path precedence mangling until we get to the stage that it's pretty much untanglable. The WinSXS directory, being one many GB horror of an example.

        To be fair the importance of system security has made the task much harder. However, with the combination of no appreciable library management system combined with no initial consideration for security is not a good one. If security is not deployed from the start then attempting to retro-fit it will always fail at some point. Windows was designed from the concept of it being a single trusted user environment and has had amendments to this cobbled on since. The world of computing has changed since, of course and it's quite forgivable for the early developers of single user, stand alone operating systems to not consider the impact of web browsers and prevalent malware...

  3. Alan Bourke

    Glad that Blazor is getting the official nod

    as anything that hastens the demise of JavaScript is fine by me.

    There might be a lot of Web Forms out there but only in the way that there's a lot of VB6 out there. Things have moved on

    1. MacroRodent
      Mushroom

      Re: Glad that Blazor is getting the official nod

      I suspect JavaScript will turn out to be like the cockroaches: will survive even a nuclear war.

      1. bombastic bob Silver badge
        Flame

        Re: Glad that Blazor is getting the official nod

        Javascript as an application language, and I'm talking SPECIFICALLY about NodeJS, is an ELDRITCH ABOMINATION of the WORST variety, and needs to be *EXTERMINATED* just like a cockroach, for the exact same reasons.

        If they'll survive a nukular fire, perhaps they'll DIE in a REGULAR one...

  4. This post has been deleted by its author

    1. Ben1892
      Trollface

      Re: The most divisive issue remains...

      Tabs

    2. MJB7
      Trollface

      Re: The most divisive issue remains...

      Spaces

    3. Zippy´s Sausage Factory

      Re: The most divisive issue remains...

      If you've used Visual Studio for any length of time, you'll notice it keeps resetting your "tabs or spaces" preference back to tabs. Given that this "bug" has been around since at least Visual Studio 2013 (if not earlier) I can only assume that in Microsoft-land, there is only one answer...

    4. Anonymous Coward
      Anonymous Coward

      Re: The most divisive issue remains...

      Spabs.

      1. Mr Benny

        Re: The most divisive issue remains...

        Taces!

    5. bombastic bob Silver badge
      Trollface

      Re: The most divisive issue remains...

      indent at 2, spaces only [no tabs]. And Allman style. And the worst thing I ever see in anyone's code is the construct "} else {" which should be punished by 50 lashes with a cat 5 o' nine tails...

      There. I said it. The argument is NOW completed, and shall not be debated again. Heh.

      (troll icon because obvious)

  5. deadlockvictim

    Wasm

    Maybe it just me, but the thought of generating wasm all day makes me feel as if I need to take a shower.

    1. Doctor Evil
      Coat

      Re: Wasm

      Look, you can't talk like that here! It's just NSF

  6. fredesmite

    .net to java converter ?

    where can I find it ?

    1. Tessier-Ashpool

      Re: .net to java converter ?

      In Java, don’t you have to trap every exception under the sun? C# lets you get away with murder.

      Apologies if I’m putting Java down. The last time I looked at it was in the 90s.

      1. bombastic bob Silver badge
        Megaphone

        Re: .net to java converter ?

        C (not micro-shaft's version) does not *NEED* exceptions. People who *KNOW* *HOW* *TO* *CODE* do NOT rely on exceptions, and test parameters so that they would NEVER HAPPEN in the FIRST place. Only the SLOPPIEST coders ever need to catch them, except for maybe bugs in the OS [which I've had to deal with from time to time]. But only if it's Windows...

        Yeah C++ is great, too, when you do NOT use exception handling. Who's FEELING "brilliant" idea was it in the FIRST place to put THAT CRAP into the lingo in the FIRST place? I sentence YOU to 100 strikes with a CLUE BAT!

        That's right - REAL coders do NOT use exceptions! When you code for the kernel, an exception usually causes data loss, a system crash, etc.. A _REAL_ programmer understands this, and writes BULLET PROOF CODE.

        1. RyokuMas
          FAIL

          Re: .net to java converter ?

          "A _REAL_ programmer understands this, and writes BULLET PROOF CODE."

          Oh man. In over 20 years commercial programming, this is probably one of the most ridiculous statements I have ever encountered.

          The idea that you can predict all possible actions that the end users of a system might attempt is nothing short of laughable. Heck, half the time you can't be completely certain that what you're working on on is going to interact correctly with the code that the team in the next room is working on in 100% of use cases thanks to that wonderful little thing called "scope creep", when a PO asks "oh, can we just make it do this as well?"

          This is why we trap exceptions - so that we can handle the unexpected gracefully, instead of having the system fall on its arse and potentially damage the provider's corporate reputation. It's why we unit test as well, so that changes in the system requirements over time are less likely to introduce exception-causing behaviours.

          But the ultimate irony here is that we repeatedly hear you ranting and raving about how crap Windows is, how it always crashes etc., and yet hear you are spouting exactly the same kind of rhetoric that ends up creating systems that crash and burn, leading to their users ranting and raving...

          So if anyone here needs a good beating with a clue bat, it's anyone who believes that their system is bullet-proof...

        2. Anonymous Coward
          Facepalm

          Re: .net to java converter ?

          I never check return codes either; I am the master, and I expect the computer to do as I command. Every time.

        3. zenstain

          Re: .net to java converter ?

          I honestly cannot tell if you're trolling, which makes your comment either funny af or hopelessly idiotic.

    2. Steve Channell
      Windows

      Re: .net to java converter ?

      Alas Java does not have Value Types (struct), properties or tail-call optimisation so not everything can convert + you'd have to choose which broken implementation of DateTime to map to. Going the other way (Java -> .NET) was done years ago with IKVM, but you need to be careful of the broken RMI implementation.

    3. The Mighty Biff

      Re: .net to java converter ?

      I looked for one for ages, but there just isn't one that's survived the test of time. Loads of third party and open source stuff that long withered and died. In the end I ended up going down the Java JNI -> C++ -> Managed C++ -> C# route, which is fiddly but at least it's all mine.

      It was fiddlier on Linux unfortunately, cos mono's handling of the managed / unmanaged code transition is unpleasantly like JNI. At some point we'll have to jump ship to .NET Core I expect, but I'll leave it til the last minute.

      IKVM for going the other way is awesome, but Jeroen Frijters has said he's no longer updating it, so it's stuck at Java 8. In the ideal world, it being open sourced, someone would take this on......

  7. HmmmYes

    Its like WinSocks but 1000x worse.

  8. Anonymous Coward
    Linux

    Xamarin for mobile uses Mono with special compiler technology

    "There is Mono, there is .NET Core (about to go to version 3.0), and there is full framework. Then there are variations on top of that. For example, Xamarin for mobile development uses Mono with some special compiler technology."

    I'm confused, what special compiler technology would that be? I thought .NET and Mono were open source?

    I doubt they will be able to clone a Palantír. It is very difficult to do technically. we have made Palantíri a moving target

    One OS to rule them all, One FrameWork to find them, one Runtime to bring them all and in the darkness bind them

  9. Ross 12

    Jesus wept

    What a mess. And why oh why did they use the name .NET Core for something that isn't the core of .NET?

    1. jelabarre59

      Re: Jesus wept

      What a mess. And why oh why did they use the name .NET Core for something that isn't the core of .NET?

      Because *MARKETING*!!!

      It's a recohnizable name (good or not) and it's easier to market under an illusionary "unified" product line. IBM has been notorious for it well before Microsoft did it (yet another thing Microsoft didn't originate).

    2. Anonymous Coward
      Thumb Up

      Re: Jesus wept

      It was originally going to be called "NOT Cool", but Tay autocorrected it.

  10. RLWatkins

    What does Mono have to do with any of this?

    Mono is not a Microsoft product. Microsoft would like to take control over it, have been trying to for a decade and a half now, but it's open-source. No one owns it.

    Try to stay with me here....

    Microsoft "de-supported" Visual Basic 6, and stopped (for a while) even distributing the parts which would allow software written in VB6 to run on their newer OS releases. Microsoft's plan was to "encourage adoption" of the new VB.Net language and its twin, C#.

    The EU raised hell, because in one fell swoop Microsoft had rendered worthless many tens billions of dollars of investment in software written in VB6. By "raised hell" I mean that they refused to use the new Microsoft products unless Microsoft registered their designs as open standards.

    Microsoft did exactly that, registering the design of the CLR and the libraries with the ECMA.

    Novell reacted by hiring a team of programmers to make an open-source version of the CLR, libraries and compiler, known as the Mono project. (The principal programmer explained the name Mono: "'Mono' is Spanish for 'monkey'. I like monkeys.")

    Microsoft began desperately trying to put that genie back into the bottle, at one point even trying to buy Novell. In the mean time, Mono was ported to... well, to just about everything. It runs on about as many platforms as does Python.

    Xamarin released a set of programming tools for writing C# code, to run on Android, using the Mono CLR. Microsoft then bought Xamarin and declared victory: "We now own Mono." And now, "We can converge our forks of .Net and Mono into a single product line."

    Er, no. Someone went off their meds. Mono is still Mono, doesn't belong to Microsoft, isn't under Microsoft's control except in their demented dreams.

    And that's a damn' good thing, as I've used Mono to run C# programs on Linux for something like ten years. I want it to keep working properly.

    How do I know all this? I was using both systems, including the Android version, while all this was unfolding.

POST COMMENT House rules

Not a member of The Register? Create a new account here.

  • Enter your comment

  • Add an icon

Anonymous cowards cannot choose their icon

Other stories you might like