Hacker News new | ask | show | jobs
by mosen 1489 days ago
What about C#? That being said, I might just be accustomed to all the boilerplate.
2 comments

Biggest downside is you're likely committing yourself to the Microsoft stack and a single vendor for most of your technology.

I don't think it's necessarily the wrong decision but you have to decide if it's right for your project.

Dotnet core runs fine in Docker/on Linux?

Most C# apps I've worked on in the last 5 years are deployed to Kubernetes.

fair enough, perhaps I should give it another look
100% inaccurate/outdated (by 5 years) info. I've run .NET Core applications on Linux/Docker/K8s + Postgres. The only Microsoft 'stack' there is .NET itself.
.NET Core is still absolutely designed to nudge you into the MS stack.

- EFCore is MSSQL first, even if other options are provided

- Many libraries ship with two implementations: an over-engineered Windowsy version that barely works (with a big scary warning that it should never be used in production), and a thin wrapper around some Azure service

- Important tooling like the debugger (which wouldn't be so necessary if .NET had halfway decent support for printf debugging, but here we are...) is locked to be compatible with VS and (MS' build of) VSCode, despite both of them using supposedly open (and Microsoft-pushed!) standards like DAP

- The community is really culty, the response to "X is broken when using the non-MS-Stack alternative" always seems to be "well use the standard MS solution then"

- It's practically open source in name only, because the build engineering is so convoluted that it's nearly impossible to find the canonical source code of core features like the standard libraries

- EF Core is not MSSQL first. EF Core is an abstraction layer and is in no way tied to Sql Server. In fact, Microsoft's own getting started tutorial uses Sqlite (1). I've personally used the Postgres drivers in production and they are as good/production-ready as Microsoft's SQL library for EF Core.

- "Many libraries ship with two implementations..." I've yet to come across these "many" libraries in the 5 years since I've been building services with .NET Core.

"The community is really culty" - I'm not sure where this is coming from. It's hard to refute such vague criticisms.

- "It's practically open source in name only" - Here is the base class library source: https://github.com/dotnet/runtime/tree/main/src/libraries or https://github.com/dotnet/corefx/releases (depending on what version you're looking for)

1. https://docs.microsoft.com/en-us/ef/core/get-started/overvie...

If you want to build .NET Core yourself, Microsoft provides you with the steps necessary to do so here: https://github.com/dotnet/source-build

Maybe our definitions of open source are different, or maybe you're just shitting on Microsoft for your own reasons. Regardless of whatever your experiences have been with .NET in the past, they don't mirror the majority of the folks that use it everyday.

.Net Core is universal platform. Our API servers run .Net Core exe’s on Ubuntu behind NGINX. Full AWS stack, some Google Cloud and Mongo Cloud services internally. I don’t think we even have an Azure account.
Still a lot of Windows baggage with C#. It's changing, but I think most c# devs are still learning fundamental unix and docker stuff. So you'll get an overhead with C# too, just not in technical performance.
Source? As a .NET developer I can tell you that there are plenty of us with Linux/Docker experience. There is zero Windows baggage with C# in .NET (Core). Your information is out of date.
Projects making use of Sitecore, Dynamics, SharePoint, SQL Server CLR,... GUI frameworks out of Redmond

Graphical tooling to deal with process dumps, etw data, and profiler information only available on VS.

> Projects making use of Sitecore, Dynamics, SharePoint, SQL Server CLR,

What projects? None of those are forced on you or have any references to them built into .NET Core. I've been building .NET apps since 1.0 reached beta (in 2001?) I can count on one hand how many times in total that I've worked with those systems. This argument is a hell of a reach.

> GUI frameworks out of Redmond The upcoming Microsoft MAUI is cross-platform (no, Microsoft isn't building support for Linux, but there are open source efforts working on it.)

You can use https://avaloniaui.net or https://platform.uno

> Graphical tooling to deal with process dumps, etw data, and profiler information only available on VS.

https://www.hanselman.com/blog/dotnettrace-for-net-core-trac...

There's also https://github.com/SachiraChin/dotnet-monitor-ui

You can use JetBrains rider to profile in Linux/MacOS as well: https://www.jetbrains.com/help/rider/Profiling_Applications....

If you don't want to use .NET, you obviously don't have to.

I work for a C# shop. However maybe the signal is ex-Microsoft rather than C# itself, when I think about it more. We have lots of ex-MSFT.
Switched from a career of a windows/.net/c# to a max/ruby/js shop. Docker skills transferred. Had to learn Unix commands but it didn’t feel much different from cmd/powershell