17 ms·
What Makes .NET Core So Special?
- keithnz 8y agothis seems odd. The main advantage other than going faster than Node ( which you'd expect ) is that it's cross platform and can run in containers and has libraries.....like MOST other languages. Not knocking .NET Core, I use it a lot... but this just doesn't seem like it tells you what's special about it
- aerophilic 8y agoI agree, they can do a better job articulating what is “awesome”. For me personally, there are 3 main reasons that I have been super excited about .Net core: 1. It is C#, in my opinion the best statically typed language. The easiest way I have described it to other folks is it is Java++. Combine it with really good intelligence, and it is like the code “flows out of you”. Part of the reason for that is the effort put into the language itself (getters/setters, lambda functions, etc), but equally and possibly more important is the support of Microsoft, so this is a language/toolset that is being used daily to make itself better. (In my opinion this is why Jetbrains is so good, the developers use their own tools constantly). 2. It is cross platform from the ground up. I can’t understate how great it is to have an alternative to java 3. Rosleyn: being able to compile and potentially be as fast as C++ Just my 2 cents
- ygra 8y ago> 3. Rosleyn: being able to compile and potentially be as fast as C++ Roslyn is the C#/VB compiler and analysis tool. Yes, that allows you to compile C#. No, it doesn't have anything to do with performance. That's where other things come in, like RyuJIT, or .NET Native.
- sitepodmatt 8y ago1) As a static language C# is extremely weak. You have a minor edge over Java due to reified generics, but in terms of a type system saving your ass C# is miserable. 2) Err... You just came to the party a few years ago. JVM has been running on Linux and MacOS and a host of other operating systems for nearly 20 years. 3) JVM? I like C# but know where it stands.
- a_imho 8y agoFor someone who is not well versed in MS world, what is the C# equivalent of the Java Streams API?
- barrkel 8y agoLINQ, the IEnumerable extension methods, and IQueryable extension methods.
- marxama 8y agoI'd like to point out that the extension method feature of C# is one big reason why I like this whole story much better than the Streams API in Java. There are often methods I wish were part of the IEnumerable interface, and with extension methods, I can add them myself! (if they are not already provided in, say, MoreLinq [1]). Very convenient, and a big boost in productivity. https://github.com/morelinq/MoreLINQ https://github.com/morelinq/MoreLINQ
- BjorksEgo 8y agohaving a look at it, it seems like LINQ?
- arethuza 8y agoI had no idea what Java Streams was (a long time since I wrote much Java) and it appears to be the Java version of LINQ: https://www.foreach.be/blog/java-and-net-comparing-streams-linq https://www.foreach.be/blog/java-and-net-comparing-streams-l...
- wisam 8y agoI would say IEnumerable<T> interface.
- gameswithgo 8y agolinq, kind of, but it has more run time overhead and is more flexible.
- tigershark 8y agoJava streams is the awful copy of LINQ, written something like 7 years later.
- gameswithgo 8y agoI wonder if it is the garbage collected language with the highest performance ceiling now?
- deleted 8y ago[deleted]
- zamalek 8y agoJava might still be faster, and that's deliberate. The goal of RyuJIT is understandable code and predictable machine code. HotSpot aims for performance at all costs. Many HotSpot features have been moving over to RyuJIT, even more are planned. I've always been envious of HotSpot. The main feature I've been envious of is its namesake: it aggressively optimizes hot spots. .Net now has this (tiered compilation), but it's still ultimately as-conservative as the compiler a few years back. The hill that Java has to climb over is the extreme degree of "enterprise code." ASP.Net core is designed with the predictable performance profile of .Net in mind. Java has, well, this[1]. [1]: https://ptrthomas.files.wordpress.com/2006/06/jtrac-callstack1.png https://ptrthomas.files.wordpress.com/2006/06/jtrac-callstac...
- saberience 8y agoAs of the latest versions of .net core, it's definitely faster than Java and it's not even a contest. Oracle is asleep at the while and the new version of Microsoft is pushing C# and .net much harder. https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/csharp.html https://benchmarksgame-team.pages.debian.net/benchmarksgame/...
- gameswithgo 8y ago.NET Core now has a ton of memory/data layout control with ref, ref returns, span<t> and also has support for hardware intrinsics as well. Even without the intrinsics C# is beating the JVM on the benchmark game already. Though I think those benchmarks may not all alllow hotspot to do its thing.
- blinkingled 8y agoSanely designed/mature libraries I might add. I went through an exercise to build a simple web app with Rust and ASP.NET/Core - I was mind boggled how mature the .NET Core stack/ASP.NET felt compared to pulling in 3rd party crates that are constantly in flux. Even after you're done fighting them the code still looks daunting compared to C# - there is a certain cleanliness to it. Not criticizing Rust which is a very new and different language - I am just comparing it's current state to something as established as .NET now that it's cross platform.
- mercurial 8y agoThe .NET ecosystem is a lot more mature than Rust's, there is no arguing that. As for code cleanliness, though, it's debatable. Rust has ADTs, Option, exhaustive pattern matching, Option and Result. C# doesn't.
- drewrv 8y agoThere are a lot of .NET engineers who assume they can't use docker or run on Linux, and simultaneously a lot of other engineers who think if they build on .NET they'll be married to Windows or Azure. So I can see why the cross platform nature of it gets harped on a lot. Personally I think the strongest case for .NET is the C# language and associated tooling, but the only way to really appreciate that is to dive in.
- rtpg 8y agoWell.. I think some people might think "well I need to go faster than Node... so do I need to go to C? Java is slow too. But the C library ecosystem is _rough_...." Nice infrastructure around the language + speed +... not being Rust (with all the difficulties that come with the language)? Is pretty interesting
- ahoka 8y ago>>some people might think "well I need to go faster than Node... so do I need to go to C? Java is slow too. But the C library ecosystem is _rough_...."<< They would be utterly mistaken on all accounts.
- oblio 8y agoThat "all" makes for a bold claim. "well I need to go faster than Node..." .NET is generally faster than Node.js, at least based on most benchmarks I've seen. " so do I need to go to C?" Is there any other official/stable extension mechanism for Node? "Java is slow too." That one, I agree, is false. Java is at least as fast as .NET. "But the C library ecosystem is _rough_...." The C library ecosystem is very rough. The lack of memory management and the overall creakiness of C showing its age are easily apparent.
- mathw 8y agoThat would be a weird thing to think, because there's a long, long list of languages and platforms which are faster than Node but friendlier than C. Java and C#, two of the most popular languages in corporate development, being very much at the top of it (not necessarily in that order).
- EdgarVerona 8y agoI think it's because C# and (most of) its ecosystem is a joy to use compared to many languages that are popular with large corporations. Having that ecosystem and that particularly delightful language become cross platform is a welcome change, and also a welcome sign that Microsoft is willing to open up a bit more than many of us were expecting.
- bonesss 8y agoWith the right kind of cross-compiler I believe that C# and shim libraries are a near-ideal way to handle javascript development... You've got a strongly typed OOP langauge on top that is also pleasantly dynamic and anonymous when it wants to be, available through one of the best IDEs on the market, and it can compile to javascript that is remarkably similar to the original source. You preserve the well-optimized JS runtime for execution, but preserve a primo development experience that eliminates a lot of the pain of larger JS code-bases. IMO "Typescript" should have just been a compiler variant for C# that was more scripting oriented with associated tooling.
- EdgarVerona 8y agoThat would have been/would be fantastic. I'd be all in on that.
- unsignedint 8y agoOne thing that makes .NET Core makes me special for me is PowerShell Core. I have been coding quite a bit of PowerShell Cmdlet in C# lately, on Windows and Linux, and it's very nice that I can pass around .NET datatypes interactively, and in a script.
- velobro 8y agoPowershell Core has allowed me to do 90% of the Office 365 administration I need to do from MacOS and has reduced my time in a Windows VM substantially. Very happy that Microsoft is making this effort.
- soulwatcher 8y agoMany of the features (Dependency injection, etc) seem only to be available for ASP.Net Core. What about cross platform desktop applications? Do we have a GUI layer that is cross platform as well?
- MastrChefRocks 8y agoElectron.NET should allow you to do that: https://github.com/ElectronNET/Electron.NET https://github.com/ElectronNET/Electron.NET
- ygra 8y agoMicrosoft's offering here is Xamarin Forms. If you're an application developer that's probably enough and useful. Otherwise, given that Microsoft is now a cloud and services company there doesn't seem to be much of a push for cross-platform desktop applications. Personally I'm still hoping for Avalonia to be picked up officially, but perhaps that's just me liking WPF too much and hoping in vain.
- EdgarVerona 8y agoOh, the dependency injection definitely works independently of ASP.NET Core - it's just something frequently talked about in tandem with it. Just wrote a console app that used it a couple of days ago. I don't know about the current status of the GUI layer, other than that I've heard plans for WPF to be ported over to .NET Core. I don't know if or when that will actually happen.
- cdash 8y agoThere are plans to bring WPF to .NET Core but it will still be windows only. It is being done because Microsoft wants to move all development to be on top of .NET Core.
- rpeden 8y agoBoth WPF and WinForms will be part of .NET Core 3.0. They've done a few demos of it already, and were able to port over existing apps without any changes to the code. This even worked when using third party controls like the ones you can get from Telerik. They just added references to the Telerik .dll's they already had, and everything just worked. They'll still only run on Windows, but it's a nice option for teams that want to move their existing apps over to .NET Core and take advantage of the quicker update cycle and improved performance.
- OnlyRepliesToBS 8y agothe advertising
- PhilWright 8y agoThe post only mentions .NET Core, but should actually be mostly talking about ASP.NET Core that runs on top of .NET Core. The features such as dependency injection and Razor Pages are ASP.NET Core specific. 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.
- h3h3 8y agoMicrosoft.Extensions.DependencyInjection is developed as a ASP.NET Core extension but has no dependency on it. https://www.nuget.org/packages/Microsoft.Extensions.DependencyInjection https://www.nuget.org/packages/Microsoft.Extensions.Dependen...
- joshschreuder 8y agoIndeed. It's possible and quite easy to use it in a console app for example
- thejosh 8y agoYou can use the DI stuff without ASP.Net Core though?
- ahoka 8y agoYes, you can. If you don't need anything fancy (in that case you are better off with autofac), then you can just add the nuget to your console app and start using it with a few lines of code.
- merb 8y agoto be fair autofac is not really needed in most projects. you can even write a bunch of lines that will automatically register all your controller dependencies. (of course autofac makes this more simple). but I actually prefer explicit registration (i had the implicit variant on guice and as soon as the project was big, implicit is a mess).
- deleted 8y ago[deleted]
- euske 8y agoWhat about client-side apps? Is it possible to write a cross platform client app with .NET Core, a la Electron way? That would be my dream framework. I've been waiting for it for decades, seriously. (I looked at Avalonia UI and mono/xwt. Not sure how stable/reliable they are.)
- edwinyzh 8y agoCheck Lazarus, it's not c# but Object Pascal, but it's a decent IDE for developing cross-platform GUI programs, it's concept is from Delphi which was from Visual Basic. Code editor, GUI designer, UI framework, runtime library, debugger, everything is included and it's being developed actively for nearly 2 decades.
- MastrChefRocks 8y agoElectron.NET does exactly that https://github.com/ElectronNET/Electron.NET https://github.com/ElectronNET/Electron.NET
- deleted 8y ago[deleted]
- deleted 8y ago[deleted]
- alyx 8y agohttps://github.com/aspnet/Blazor https://github.com/aspnet/Blazor
- sunnyP 8y agoThis is the Electron demo using Blazor by Steve Sanderson. https://github.com/SteveSandersonMS/BlazorElectronExperiment.Sample https://github.com/SteveSandersonMS/BlazorElectronExperiment...
- sitepodmatt 8y agoWe had failed incarnations of this many times. WPF/Everywhere. Silverlight. And now Blazor - albeit this is a little better as targetting Wasm, but embedding the Mono runtime, I still don't get it..
- LeonB 8y agoI moved all my indie projects from .net to .net core, so i get the same development model i know and love, but can host on linux.
- buboard 8y agohow hard is it to port an existing mono application to .net core for linux? does .net core run stable on linux ? I am thinking of a particular open source server application written for .net/mono: opensimulator.
- oblio 8y ago> does .net core run stable on linux Can't say that I've used in production on Linux, but everything I've seen so far for .NET Core on Linux seemed fine and .NET overall as a platform has been historically pretty solid. It would be strange if it would be really flaky in production with all the engineering resources Microsoft is pouring into it. And despite all the hate, Microsoft does have great engineers and great engineering processes in most core teams (Windows, Office, .NET, Visual Studio). They're held down most of the time by legacy stuff, management and marketing, but that's a bigger discussion.
- merb 8y ago> does .net core run stable on linux it's probably more stable on linux than if you host in inside iis. hosting in iis is a pita btw. it's easier on windows to create a service and proxy it inside iis (if you need multiple different applications). however compared to just systemd+dotnet+nginx it's way harder to debug if something goes bogus.
- Double_a_92 8y agoIt's one of the few halfway modern "lightweight" languages with static typing and other full fledged OOP features.
- dustinmoris 8y ago.NET Core and F# are the only reasons why I still develop .NET. I really hope the platform can break out of the Microsoft silo and attract talent from other dev communities, because the biggest problem with .NET Core, despite the whole OSS move, is still that the majority of C# developers let themselves happily trap by the Microsoft marketing machinery. 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. Visual Studio is littered with SQL server and Azure tools which doesn't even make sense. Either offer equal tools for all major tech or none, but this subconscious constant selling of their own tools sickens me slowly.
- xps 8y agoI think that's unnecessarily angry at Microsoft. Of course they have to sell something. They offer some great tools for free (as in free speech) and you still complain that their MVPs promote their own paid services at their conferences?
- dustinmoris 8y agoWell Visual Studio is certainly not free (maybe the community edition) and therefore I don't think I deserve to be littered with Azure ads all over a tool which costs already a lot of money. However, my main complaint is not that they advertise their own products, which is absolutely fine, but the way how it is done is starving the .NET community from anything else but Microsoft. The way how all their .NET products are extremely tightly linked to a point where wanting to use something else but Azure or VSTS becomes almost unnaturally difficult, which is what I really dislike. For example, if I look at a nodejs product then I see documentation for all various integration points, with AWS, GC, Azure, etc., but when I look at a Microsoft library there is no documentation or integration points out of the box but Azure and that has a ripple effect on the rest of the community. Every library author only builds their tools optimised for Azure and don't even think about what else there is, which is quite upsetting.
- deleted 8y ago[deleted]
- dodyg 8y agoIf you intend to learn ASP.NET Core, check out my micro samples https://github.com/dodyg/practical-aspnetcore https://github.com/dodyg/practical-aspnetcore (171 samples so far).
- smashedtoatoms 8y agoI’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. When I started the port I was skeptical, but it is legit cross-platform. I would consider starting a project in it for lambda... I never thought I’d say that about a MS product. Something over there is different, and I suppose it has been for awhile. I think it could get a lot more popular as non-ms devs realize that MS has built dotnet to work really well on Mac/Linux cli, far away from the weird tightly-coupled Windows/VisualStudio-hit-f5-to-do-the-magic-with-the-15-billion-auto-generated-magical-xml-files world. It feels well engineered instead of thrown together, which is nice. Also, So far, I’ve pulled in no external libs other than the AWS sdk for the port either. C# with linq is a pretty complete toolset. I’m sure I’ll pull in more as I get more familiar, but it’s been solid on its own. Really nice surprise.
- spiderPig 8y agoDevdiv (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.
- pjmlp 8y agoC++ belongs to WinDev, hence the whole politics WinDev vs DevTools, the torpedoing of Longhorn and WinRT.
- arethuza 8y agoI actually find the "f5-to-do-the-magic" experience in Visual Studio Code to be preferable (TypeScipt project with Mocha tests) to the Visual Studio experience :-)
- MarvelousWololo 8y ago
- doombolt 8y agoWhen I try to run a random .Net exe file with dotnet core it will complain about libhostpolicy.so dependency missing. I understand that it is not supposed to run .exe files (no idea why, okay), but overall it sounds like awful usability.
- pokemongoaway 8y agoMakes me sick that thepp1983's comment was censored for no reason. Sure he made an account to make the comment, but didn't we all at some point? He seems to have experience in the area - why are his words so offensive to you admins? You need to answer for your beligerant censorship across HN. It is entirely gratuitous. As usual, you've prevented people from supporting his comment by killing it - which allows you to fraudulently and prematurely claim that no one supports his view.
- cryptos 8y agoBesides 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.
- deleted 8y ago[deleted]
- jbergens 8y agoIt depends on how much better you think C# is but I think of this the other way around. You don't have to use Java anymore to get cross platform support, good performance and a stable and statically typed language. Regarding things that might be better I think the linq support in dotnets collections is better than the streams support in java since java has kept more old collection libraries.
- marxama 8y agoI'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 working with Java, you shouldn't count on being able to work with some other JVM language. At my current job, we've been forced to give up on Clojure (a language I love) because the higher-ups have decided we should stick to Java. I really hope especially Kotlin will gain more traction in the coming years, but in the meanwhile there is at least an order of magnitude more jobs in C# (where I live).
- jgalentine007 8y agoI hate dealing with checked exceptions in java.
- nestorD 8y ago> C# is a bit nicer than Java, but you can use Kotlin or Scala on the JVM. With .Net you get F#
- wiineeth 8y agoHow is ASP.NET core these days? How is it compared to node js? Is it worth using it?
- Yusho 8y agoWe are replacing out homegrown PHP ERP system with ASP.NET Core MVC since Version 1.0. It is a blast to work with LINQ and Lambdas and I really miss it in other languages. EF Core also matures quickly and we sucesssfully connected it to mysql and sql server. So far there hasn't been a problem we couldn't solve in .Net Core. For a small side project I used .Net Core Razor Pages very productively. Only needed the SDK and visual studio code. Planning on moving more small stuff away from python to .net core based on that. Really looking forward to Version 3.0 and Kestrel replacing IIS for good.
- kristianp 8y agoReads like an overenthusiastic sales piece posted here by the author to sell their own product.
- mcny 8y agoI would say not being actually free and open source is a show stopper but I'm glad there's finally some progress. https://github.com/dotnet/source-build/issues/782 https://github.com/dotnet/source-build/issues/782 I don't get it. They rewrite the whole think from scratch and there's still code they can't show the source for... I have a feeling there is still push back inside Microsoft against Scott Guttrie and the open everything crowd.
- gjm11 8y agoOn an entirely superficial point, in case the author is reading: > It offers developers modern tooling that can scaffold projects, build, run, test and deploy using incredibly easy-to-use CLI tools. I think this is one place where the abbreviation CLI should be avoided, since it means two completely different things both of which are somewhat plausible here at first glance. "Command line interface" -- even though this is a Microsoft-derived thing, you can do everything using the command-line tools you're used to from Unix, node.js, etc.; "Common Language Infrastructure" -- even though this is happening on Mac and Linux as well as Windows, you can do everything using the Microsoft .NET tools you're used to from Windows. I'm pretty sure the first of these is the intended meaning, but I had to think about it.
- alexmuro 8y agoPersonally the biggest advantage .NET core has for my situation is that it creates a pool of programming talent and mindshare that I'd now be open to hiring and working with on projects that can now be made with open source tools in a sane environment. I don't think it would be my go to choice for projects currently, but its an option I would happily consider and I give Microsoft a lot of credit for moving in this direction. That being said so far the reasons I've had to look at it were modernizing older .NET projects and last I looked there were so many incompatibilities be between .NET core and .NET standard that the projects would have been almost complete re-writes, somewhat of nullifying its advantages against other choices, but that was a while ago.
- javcasas 8y agoFor us, hiring .NET core developers is very hard. The pool of programming talent is gigantic, but it's also full of ultra-low quality developers. It has taken us almost half a year to find a decent C# .NET developer, with an average of 2 interviews per week on the best developers we could find. Meanwhile the previous developer had time to construct a behemonth of Java overengineering (Enterprise code they call it) that is taking us several months to tear down. We couldn't fire him because we didn't have a replacement, but in hindsight, firing him soon would have been better. @alexmuro: best of luck finding quality in the pool of programming talent.
- SimonPStevens 8y agoI 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 separate netfx and core package, and many times the core package has restricted functionality. You will almost certainly find a whole host of things you need are missing. And then you get the fact that ASP.Net Core is dropping support for .Netfx in the next release, so if you want to use ASP.net Core you are now limited to EF core too, which means you are making a full jump and can't just go halfway first. And .netfx is now not going to support .net standard 2.1. The list of incompatibilities and restrictions just goes on and on. I certainly can't keep the full list in my head. So right now I'm not really willing to commit to a new project of any significance on .net core because I know there will be dozens of missing dependencies or features. You could argue this is just want it's like at the cutting edge, and the gaps will be filled in time. But .netfx is clearly already going into maintenance mode, so the push to move to .net core has already started.
- ajryan 8y agoWe use .NET core in production and are very happy. A mixture of EF Core (for ad-hoc queries) and Dapper (for stored procs) works just fine. Also, new in EF Core 2.1, you can map views and stored procs just fine: https://docs.microsoft.com/en-us/ef/core/modeling/query-types https://docs.microsoft.com/en-us/ef/core/modeling/query-type.... That's your only specific example - what other functionality are you missing? You're not willing to commit to .NET core but you admit that NetFx is going into maintenance mode?
- wolfspider 8y agoYes, totally agree- I worked on a project that wasn't Core but regular MVC + EF and Dapper which surprisingly worked out well. Actually so well I started mentioning it as a feature but really was just too lazy to redo all the dapper stuff since it worked so well.
- 8y ago
- bungie4 8y agoI just inherited a .Net core app that was a proof of concept. It's a real pot luck of glued together functionality. I remember working in MS ASP land almost 2 decades ago and I swore I wouldn't invest a single minute learning another proprietary MS technology. I by and large held to that but here I sit, banging away at some C# code. This is day 3. Did you know if you specify a path in JSON and apply it to Use app.UseStaticFiles with a single trailing slash, instead of a double, it'll bring down the .Net kernel in flames. Not confidence inspiring in the least.
- jackcosgrove 8y ago.NET Core is special because it increases the portability of your .NET code in case your cloud provider decides to jack up costs by 15% for no reason other than you are locked in. cough cough
- atsjie 8y agoI 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.