Live data from Hacker News

What Makes .NET Core So Special?

blog.jamesmichaelhickey.com

221–230 of 247 posts

Re: What Makes .NET Core So Special?

#221

I want to like .Net Core, I really do. But in my opinion its just not yet ready for serious use. An example. If you want to use .Net Core you can't use entity framework, you have to use EF Core, which doesn't yet support mapping to views or stored procs, only tables. Now you might think that's fine, maybe you only want to map to tables. But it's the same story all over the ecosystem. Many major projects have a separa…

EF will be available in netcore 3.

The word you are missing is partially.

It is still not clear if the design tooling will be migrated and DB drivers also need to run on .NET Core.

Re: What Makes .NET Core So Special?

#222

I’m in the process of porting a bunch of go code to dotnet core 2.1 on AWS lambda. I’m on a Mac using vscode. I never installed mono, just the dotnet sdk. Honestly, I’ve been amazed at how good the tools have been. For cli and serverless dev, it’s been surprisingly great. It’s fast. C# is decent. The cold starts are not as fast as go, but not terrible. Memory usage is low. It’s been a legitimately positive experience…

Devdiv (org that builds .NET, C#, VC++, VS etc) has always been one of the top notch organizations within Microsoft with great engineers (although from what I hear, some of them have left recently). Nonetheless, as someone who now works at a company with an open source tech stack, I sorely miss the tooling I had when I worked at Microsoft.

C++ belongs to WinDev, hence the whole politics WinDev vs DevTools, the torpedoing of Longhorn and WinRT.

Re: What Makes .NET Core So Special?

#223
post #131

Earlier quoted context omitted.

> The average .NET developer never even tries different things like AWS or the Google Cloud, TravisCI or AppVeyor, etc. They just swallow anything which so-called MVPs and conference presenters force them down the throat, primarily Azure which is by all measures inferior to the other two and they don't even know. I've made an account because this attitude irritates me. 1. This is patently untrue. The real reason is t…

This is a bit off-topic, but on another occasion, Scott Hanselman infamously used the term "5:01 developers" targetted at many of the same people ;)

Do you have a reference for that?

Re: What Makes .NET Core So Special?

#224

I’m in the process of porting a bunch of go code to dotnet core 2.1 on AWS lambda. I’m on a Mac using vscode. I never installed mono, just the dotnet sdk. Honestly, I’ve been amazed at how good the tools have been. For cli and serverless dev, it’s been surprisingly great. It’s fast. C# is decent. The cold starts are not as fast as go, but not terrible. Memory usage is low. It’s been a legitimately positive experience…

I'm complete new to C# and Java but I'm looking into them to choose a new language to learn. I'm mostly worried about memory consumption since I often use a cheap $5 VPS. Would you happen to know which one would be a better fit for my use case? Thank you.

We're using .NET Core 2.1 in prod on Linux Docker containers. One of our production services that gets 2-3 requests per second on average (not a ton of traffic, but a legit prod workload) uses between 78 and 90 MB of RAM.

Re: What Makes .NET Core So Special?

#225
I was working for a company that was making the switch from Nodejs to C#/.NET Core.

Having taught and worked 4 years professionally with Java I believed I'd make the switch to C# easily.

This was not the case. But not by lack of understanding C# or .NET Core.

Mainly .NET Core and C# felt like a few years back in time. A lot of boilerplate, configuration, and a lack of libraries/alternatives.

I don't necessarily need or want a full-bodied UoW ORM when designing a microservice. It felt like I was trying to practice DDD designed for a monolith; while many of the programmer practices of DDD feel cumbersome when designing a more minimal microservice. Even the concept of a "Controller" feels misplaced for a microservice; request handler functions seem more appropriate.

Some findings I had when I tried it:

- Model validation is very optimistic; casting JSON numbers to strings automatically and vice-versa. To me this feels completely unacceptable. I've never seen something as surprising with regards to validation. While there are ways around this that requires a lot of work and code. In the end I worked around this by parsing the JSON input using JSON Schemas and ignore .NET Core model validation completely.

- The JSON deserialization is a separate step before the model validation; throwing 500 errors if JSON is formatted improperly. If you want consistent error handling and more than just the basic error output across your entire application (deserialization, model validation, business rules, app errors, etc...); good luck. .NET Core makes it difficult to achieve that goal. Same here I used a JSON Schema parsing library to overcome most of my problems and completely ignore .NET Core out-of-the-box features.

- Entity Framework feels as defacto standard; where basic SQL would do in Node or Go. It's a difficult sell to your colleagues if you'd argue EF is redundant and overly complex for the task at hand.

- I first tried to write .NET Core in VS Code like I do Nodejs, Python and Golang. It worked, but I would recommend anyone to use either Visual Studio or Rider instead. The auto highlighting, code hints and refactor tools are just so much better using those tools. Also I frequently ended up deleting the *.sln files and recalculate them using the CLI tool using VS Code. VS Code support for C# + .NET Core is just not mature yet.

- To set an environment variable in Linux the convention is UPPER_CASE. C# / .NET Core uses UpperCase__Double__UnderScore. I know it's minor, but it just feels weird and out-of-touch with linux devops, probably due to a windows-first approach.

- Lack of a popular alternatives like Kotlin or Groovy that provide a more lean & mean approach to tackle simple tasks or build basic microservices. (I don't count F# which is more in the functional domain)

- No out-of-the-box support for measuring test coverage in Linux. Community alternatives are lacking.

- ...

I'm convinced .NET Core is a step forward for the C# community. I'm not convinced it's a step forward for others.

Re: What Makes .NET Core So Special?

#226
post #80

Besides Node.js the main competitor is is Java/JVM. C# is a bit nicer than Java, but you can use Kotlin or Scala on the JVM. All in all I see no real advantage over the JVM/Java world - more of the other way around, since the .Net ecoystem is not as big as the JVM ecosystem. However competition is always good.

I've worked a lot with both C# and Java, and C# is so superior I never want to touch Java again. Especially since around C# 3.5, the distance between Java and C# has grown enormous. The two benefits I can see with Java is that it's a smaller language (easier to train junior engineers), and yes, the huge amounts of libraries. Kotlin/Scala/Clojure are nice, but my experience is that just because an organization is work…

I hate dealing with checked exceptions in java.

Re: What Makes .NET Core So Special?

#227
post #225

I was working for a company that was making the switch from Nodejs to C#/.NET Core. Having taught and worked 4 years professionally with Java I believed I'd make the switch to C# easily. This was not the case. But not by lack of understanding C# or .NET Core. Mainly .NET Core and C# felt like a few years back in time. A lot of boilerplate, configuration, and a lack of libraries/alternatives. I don't necessarily need…

I had a very similar reaction. People complaining all the time about verbosity in Java and then when I look at C# there seems even more boilerplate ... it seems like even the most simple piece of code ends up nested 3 or 4 layers deep and preceeded by 3 qualifiers to declare a simple variable. As a completely random example:

https://github.com/sebastienros/yessql/blob/dev/src/YesSql.P...

And like you say, all the cited advantages of .NET Core just seem to be fixing things that were broken compared to Java.

Yet I completely acknowledge that there seem to be a huge number of people who really love it, and there are some clear technical advantages. And now that Microsoft seems to be genuinely (for now) no longer hostile to open source and mostly out of the patent-trolling business, I would be open to adopting it. But when I actually do try it, I don't experience the advantages that I thought I was going to.

Re: What Makes .NET Core So Special?

#228

Earlier quoted context omitted.

> Microsoft have announced that they will be porting WinForms and WPF over to .NET Core so that they no longer need the heavyweight .NET Framework. However, this DOES NOT make WinForms/WPF cross-platform. They will still be restricted to Windows but will allow you the benefits of .NET Core, such as allowing side-by-side versioning. They've come back full circle to forking Java for Windows only usage. .NET is the clos…

What in the world ever happened to Xamarin? Weren't they acquired by Microsoft two years ago? I felt sure we'd have a nice cross-platform desktop GUI by now. . . I'm feeling more fearful that they acquired Xamarin just to destroy it.

It's actively developed but there's no mature cross-platform UI (Xamarin.Forms is mostly mobile and has many issues). Using something like MvvmCross combined with native UIs on each platform is the best option for now.

Re: What Makes .NET Core So Special?

#229

I want to like .Net Core, I really do. But in my opinion its just not yet ready for serious use. An example. If you want to use .Net Core you can't use entity framework, you have to use EF Core, which doesn't yet support mapping to views or stored procs, only tables. Now you might think that's fine, maybe you only want to map to tables. But it's the same story all over the ecosystem. Many major projects have a separa…

I don't think I can express exactly how wrong you are.

Re: What Makes .NET Core So Special?

#230
post #188

Earlier quoted context omitted.

Also why I don't see .NET Core going anywhere, it's controlled by the same old Microsoft who have a massive conflict of interest for directing everyone to use their preferred libraries and services. Unlike every other popular language which is typically developed with a transparent independent governance model whose direction benefit all libraries and services equally, instead of giving their own preferential treatme…

Using .net core, or even framework on other cloud providers is easy enough. .NET Framework is tied to a Windows environment, but core isn't. I don't get all this hate against Microsoft because they suggest or prefer things they worked on as solutions, without actually tieing you to them. Do you work on software for years and then tell everyone to use something else? If it was actually tied to their other services the…

They still could have created a runtime where all libraries and services are able to compete and succeed on merit and basically how every other popular language evolves. If they want to give special first-class treatment to their libraries and services that's their prerogative, just don't expect for others to be investing in a biased runtime with conflicting interests where alternatives exist as 2nd class citizens limiting them to smaller niche communities and why it will never have the community of other popular languages.

Unless you want to be locked into a future centred around using Azure and Microsoft technologies, there are better, more open vendor-neutral languages with more diverse and mature libraries you could be building on.

Post reply on HN