1. 23
    1. 2

      I wish they would slow down a bit more or focus more on a longer lasting LTS. We’re still on .NET Core 3.1. Fire and motion I guess.

      1. 9

        I believe .NET is now on a yearly release cycle, with LTS (three years) releases every two years. .NET Core 3.1 support ends in five weeks, so you should strongly consider moving to .NET 6 (the current LTS release).

        As for the pace, I think they’ve hit a good balance. .NET Core was definitely a tumultuous period, but the future of .NET looks good! I’m glad we now have a dependable release cycle.

        I don’t think I’d want them to support LTS versions for more than three years. That gives you a full calander year of support to upgrade to the latest LTS release, so it should be reasonable to keep up with releases.

      2. 4

        Compared to previous upgrades, .NET 3.1 to 5 or 6 is fairly painless on the “how much do you have to rewrite for the sake of rewriting” axis but there are new features and better ways of doing things available. The bigger issue is that some APIs behave mildly to radically differently beneath the hood in ways that can either not make even the smallest difference to you/your app or can be huge surprises when you discover them in production. YMMV, of course.

    2. 1

      Can someone briefly explain what .net does? I know next to nothing about development on Windows.

      1. 2

        .NET is a cross platform (Android, iOS, Linux, macOS, Windows) development environment, comparable to Java.

      2. 2

        If you know Java, or at least conceptually understand Java, there are a lot of parallels:

        • JVM -> .NET CLR (“Common Language Runtime”)
        • Java standard library -> .NET BCL (“Base Class Library”)
        • Java bytecode -> .NET IL (“Intermediate Language”)

        Similar to the Java ecosystem, .NET supports multiple languages which can run and interoperate on the platform, though the big ones are all languages supported and developed by Microsoft:

        • C#, which started out looking a lot like Java, and still sometimes does, but has made different choices over the past couple decades and diverged as a result.
        • F#, a functional language designed to resemble an ML.
        • VB.NET, which is a port to .NET of Microsoft’s Visual Basic language.

        The cross-platform support is good these days; you can do .NET stuff on Windows, Mac, Linux, and a lot of deployments of web apps is on Linux. There’s also stuff in the platform for targeting mobile (iOS/Android) platforms, and for compiling to WASM.

        The main differences from Java/JVM-land, as I see them, are:

        • Different choices in how to evolve the flagship language. C# did a big compatibility break in order to have reified generics, for example, where Java kept backwards compatibility but has to do generics with type erasure. Or: Java still largely requires you to write getters/setters where C# added support for something similar to Python’s properties, and for having get/set methods that don’t require explicit code.
        • Both are ecosystems that lean heavily on the IDE, but in the .NET world it feels a bit easier to get along without one – the dotnet command-line tool lets you do a lot of the project-management stuff you’d generally be delegating to your IDE in Java, for example.
        • A single vendor (Microsoft) dominates the .NET ecosystem. In Java-land there are of course a bunch of major “everybody uses this” frameworks and tools, but they’re spread out across multiple organizations/entities which maintain them. In .NET, if you’re doing web apps you’re probably using Microsoft’s framework (ASP.NET MVC); if you’re talking to a database you’re probably using their ORM (Entity Framework); etc.
        1. 1

          A bit late but thanks a lot for the detailed response