Live data from Hacker News

Performance Improvements in .NET 6

devblogs.microsoft.com

151–160 of 256 posts

Re: Performance Improvements in .NET 6

#151
post #28

Earlier quoted context omitted.

Check out F#, the bastardized yet legitimate child of MSFT. If you like functional languages or would like to try it, give it a whirl! https://dotnet.microsoft.com/learn/languages/fsharp-hello-wo... If you use vscode, highly suggest to use Ionide extension. You’ll be quickly amazed at how smooth it all works.

F# is cool, but definitely not where to start. C# is by far, by far, by far the most popular .net language

C# is more popular but actually harder to learn IMO (although this does depend on your prior experience). C# is huge, but F# achieves more with fewer language constructs. F# can also be transpiled to JavaScript, which is a huge advantage.

Re: Performance Improvements in .NET 6

#152
post #81
post #40

.NET 5.0+ drops the 'Core' from the name. The whole .NET platform has improved incredibly within the past 5 years. Previously, to run a C#/.NET app you would need Windows, Visual Studio, and a license for IIS. These days, you can run .NET entirely on Linux, without ever touching Windows or Visual Studio. (Founder here) At Amezmo [0], we've supported .NET for sometime now, and recently added .NET 6 as an option for ou…

You can, but if you actually start .NET on Linux without Windows and Visual Studio, you're not going to have the best experience. Lacking the background knowledge of the old .NET framework and how VS works was a consistent pain - both when reading outdated documentation and when getting help on something. I'd recommend it to a Windows dev who wants to go crossplatform, but never to a crossplatform dev.

This is simply not true. I have developed years .NET Core C# solutions on Linux with zero friction. My choice for IDE in Linux is Jetbrains Rider, which I actually think is in many ways supperior to VS.

Re: Performance Improvements in .NET 6

#153
post #96

Earlier quoted context omitted.

Couldn't agree more. Microsoft lost their minds on the UI / desktop app side - which was a core strength (historically). WinForms was fine / great / amazing. 90% of business / line apps could be handled with it. I have no idea how / why it's taken them so long and they STILL have not gotten their replacement story straight for it and they regressed the designer in .NET. Did they just lose their minds there? Hire a bu…

> Did they just lose their minds there? Hire a bunch of idiots caught up in fads instead of folks who've been around for a bit. No, they just took the focus off the Windows UI. They went cross-platform with .Net Core, which enables it to run in the cloud on Linux boxes. This was the focus. I hope they come back around to a proper .Net WinForms designer under .Net Core, but for now the full framework can be run and wi…

It is funny how much they have strived for one platform to rule them all when it would have been easier and cheaper just to maintain windows, web and mobile separately and kept the frameworks suited to their particular platform.

Re: Performance Improvements in .NET 6

#154
post #110

Earlier quoted context omitted.

> My company has been using WinForms on .NET Framework for over 10 years now and it's working really, really well. Despite WPF being preferred amongst developers, WinForms solves most use-cases well. I’ve not really kept up with Microsoft UI developments but I’d be interested in seeing any cross-platform UI toolkits they develop now or in the future just as an alternative to gtk/qt

The problem is that many features in Forms like data binding or layouts, have bugs, which happen to be only fixed on WPF, because that was the new boy in town. So when you move beyond VB6 style of applications, there are several head scratching moments.

Sadly this is their policy across the board. Even though things like dotnet core 3.1 is supposed to be LTS, when you report a bug, you are most likely to get the response, "we will only fix it in .Net 5" as if upgrading everything is a 5 minute exercise.

For a company who turns over an enormous amount of money and employs 10s of 1000s of people, you would have thought they could support these separate frameworks with dedicated teams of 10-20 reasonably high calibre devs.

Re: Performance Improvements in .NET 6

#155

Earlier quoted context omitted.

All upcoming UI frameworks by MS are still hung up on XAML. I get that their existing userbase is heavily invested in XAML, but in my experience XAML doesn't add much value, just unnecessarily layer of complexity, that lacks expressiveness of a programming language and makes interoperability between UI and code more convoluted. There is some "experimental" support for code based UI composition in MAUI, but since XAML…

What's wrong with XAML and what could have replace it? Maybe HTML?

There's nothing "wrong" with XAML, at least nothing "more" wrong than what folks are _really_ comparing it to, which is HTML/CSS/Javascript concoctions.

I like it because it's relatively easy to make half-decent-looking UI's that have excellent functionality. If you need bigger guns, there's some powerful libraries you can use for more polished UI's or you can roll your own with a lot of effort and a long learning curve. For corporate in-house apps, it's hard to beat WPF/XAML.

The same is simply NOT true for anything web-based. I see it is getting better with CSS grid. At least layout is becoming sane-r than the days of tables, flex-box, and bootstrap-everything. But you still have house-of-cards javascript library dependencies on a boat-load of complexity. I realize that the folks who do web-apps day-in-day-out see it differently.

I also remember the winform days when people could make ridiculously elaborate high-function UI's with breath-taking speed. These would look ugly and dated by today's standards (especially on today's high-resolution monitors), but that development speed, the ability to just execute what you want quickly, is sadly missing today. WPF/XAML comes close but that winforms speed is just gone. Unless you want to do winforms-- which you CAN if you really want to, along with wearing double-knit polyester pants with bell-bottoms.

Re: Performance Improvements in .NET 6

#156
post #23

Earlier quoted context omitted.

I'd like to see them to roll their own identity platform after IdentityServer went close source.

Identity server is still open source, it just has a much more restrictive license and is paid. https://github.com/DuendeSoftware/IdentityServer

That's not open source. The term "open source" (in the context of computer software) refers to a specific set of criteria (with some disagreement on philosophy and minor details[1][2][3]) that include the right to modify, redistribute and to use for any purpose. The term originates from the open source movement which branched off from the free software movement.

If open source meant simply that the source code is available, Windows would also have to be considered open source, as Microsoft makes the code available to some of its customers. This is not how the term is generally understood.

[1] https://www.gnu.org/philosophy/free-sw

[2] https://opensource.org/docs/definition.html

[3] https://www.debian.org/intro/free

Re: Performance Improvements in .NET 6

#157

Earlier quoted context omitted.

For windows what's your hello world workflow / stack. I've wanted to get into QT, but there seem to be a bunch of different flavors out there. I'm more a winforms guy then an HTML/XAML/CSS type person.

I'll be honest I don't think that doing C++ on windows is a good idea. The language needs to do a lot of file access for includes, and on NTFS those are super slow, my builds on Linux are something like 1/3 of the time on windows (building the same software with the same commit of clang 12 and lld, same computer, same SSD). But if you don't want to install a Linux partition, then just use aqt to install Qt: https://g…

C++ builds are only bad when you use too many templates, which Chrome famously does. If you use MSVC you get some additional speedup as well because it tries to avoid disk IO.

I would say Qt on Windows is probably a worse idea than just using .NET as it ties into the OS. If you need cross platform and normally use Windows it's not a bad idea.

Re: Performance Improvements in .NET 6

#158
post #40

.NET 5.0+ drops the 'Core' from the name. The whole .NET platform has improved incredibly within the past 5 years. Previously, to run a C#/.NET app you would need Windows, Visual Studio, and a license for IIS. These days, you can run .NET entirely on Linux, without ever touching Windows or Visual Studio. (Founder here) At Amezmo [0], we've supported .NET for sometime now, and recently added .NET 6 as an option for ou…

> Previously, to run a C#/.NET app you would need Windows, Visual Studio, and a license for IIS.

Only the .NET Framework (for Windows) or Mono (for Mac and Linux) was required to run .NET apps. Since the early 2000s, development could be done with SharpDevelop (Windows) or its fork MonoDevelop (Mac/Linux) instead of Visual Studio as well.

Re: Performance Improvements in .NET 6

#159
post #59

and we're stuck with Java. Sad, I hope that bigger companies and startups choose to use .NET for the future. I love it but can't it seems like 80% of the big tech companies here are using java

I like the uniformity of Java language. I like the "inner class" feature that has to be manually emulated in C#. I also like that I can implement anonymous abstract class-interface ad hoc in Java. I wish that internal visibility in C# was tied to a namespace instead of assembly, like package visibility in Java. Method co-/contravariance in C# is tied to interfaces. I prefer it tied to individual methods, like in Java…

As a counter example: As someone that worked for years in .Net and started trying to develop some projects in the Java ecosystem... what a fucking mess.

Days of work to try and get projects to BUILD. Do I have to use Gradle, Maven, or something else? Which IDE to use? The IDE isn't working with whatever version of Gradle or Maven I'm using. Dependency hell. Restarting my IDE repeatedly, re-downloading dependencies, trawling through the horrible Maven site trying to work out what version of a certain dependency I need. Keeping massive amounts of notes because I'm sure in two weeks I'm going to forget which arcane command I need to keep my Java build environment working.

The horrible verbosity of Java making it way harder to read then C#. Realising that there's no standard equivalent of tasks and async and I have to work out which of the 10 3rd party implementations is the "good one" and then realising that the recommended one is again verbose, ugly, and more complex to write and understand than Tasks and Async in .Net.

Having to work out which Java runtime environment I need. Having to register on the Oracle website to download their runtime, then finding out that maybe an open source runtime is better, then finding out nothing is supported for ARM macs. Then realising that this runtime means my IDE ends up breaking. Multiply all these problems if you decide to write Scala instead.

The Java and JRE environment in general is a huge mess in comparison to Microsoft's .Net platform. .Net "just works." There is no confusion of how to build, what IDE to use, what package manager, everything works together seamlessly. I can get a new engineer setup to write and deploy .Net in minutes. Our company literally has to have three engineers gather around someone's computer for half a day to get a Java or Scala environment working correctly and often it ends up working seemingly by magic, i.e. we can't deterministically understand why it ended up working.

Java was actually my first programming language in college but Oracle has radically mismanaged it. I would not recommend it unless you really need some specific library that only exists in the Java ecosystem.

Re: Performance Improvements in .NET 6

#160

On the topic of WPF apps in .NET core: Can anyone who has successfully migrated WPF apps to .NET core, in production, chime in on what was the experience like? Any major pitfalls or pros/cons to consider? I have a prospective client, running a WPF app in a soon to be deprecated windows embedded machine. They have a lot of domain knowledge in the app so are unwilling to re-write or port. I was thinking if it is feasib…

Some minor stuff with dispatching to the UI thread, nothing serious. Oh and you'll need a new package to get the System.Windows.Interactivity stuff.
Post reply on HN