.NET does not (yet?) have the same level of availability of high quality free libraries that other major platforms do. Things like image processing, database DSLs, etc. I think this is in part because Microsoft provides such a comprehensive stack that it kind of discourages the kind of diversity that leads to the proliferation of libraries.
My experience is that LINQ pretty much beats every other way of interacting with a database I've ever seen.
Core is likely a more restrictive right now - EF Core for example is still in a very weak state, but things are improving and in a few versions I fully expect it to be a solid product.
[0]: http://www.aidanjryan.com/blog/2012/08/25/sqlmetal-bug-with-...
Until you're going to do more complex queries over multiple tables.
On your second point, isn't that a good thing?
.NET has the most comprehensive set of high quality paid libraries i have worked with so far. Yes they can be expensive, but you get long term support and professional documentation. For a commercial product this is worth a lot.
Like what? Care to elaborate?
Also you're right that the standard framework libraries are very comprehensive, which in fact lessens the need for 3rd party dependencies in the first place. Stuff like LINQ and await/async is incredibly productive and unmatched elsewhere. Why rely on various outside libraries when you already have what you need?
PS: criticism of MS or .NET in HN even in reasonable terms is guaranteed -6 karma. But I have karma to spend.
Incidentally I agree with you although MSDN has been difficult to find the content in for a few years as the auto generated stuff takes precedence.
update: Downvoting started already.
To stay on topic I find some of the new docs pretty nice where they have a more coherent story for example
https://docs.microsoft.com/en-us/ef/core/querying/related-da...
It has the perfect storm of REST API & SPA web app hosting framework features in my mind:
- Annotation and convention based controllers. Binding of headers, body, and query params is so damn easy now.
- Annotation-based Swagger API documentation. It just works if you follow the directions. No need to define metadata classes or any other nonsense. Response types, content types, headers, required properties, etc - its all annotations and its all easy.
- Much better hosting of static content. We love how easy it is to build out a RiotJS SPA web app and backing RESTful JSON API service in one quick stack.
- Flexibility with HTTP hosting: HttpSys, IIS, Kestrel, Roll Your Own, etc.
- Pipeline and extension items are very easy to write now. We actually found it easier and faster to just hand-roll our token authentication pipeline item than to configure an existing provider.
- DI is some intersection of magical and simple. Microsoft's built-in DI provider kicks ass.
- Leverages open-source libraries where obviously appropriate by default. E.g. Newtonsoft.Json as it's the best JSON serializer ever written for .NET (or any language for that matter IMO).
- Can host on Windows directly through full 4.6.x framework for access to DirectoryServices and Drawing or host on top of dot net core for cross platform (sacrificing windows-specific capabilities).
- Windows service hosting features built-in (used to have to resort to TopShelf).
I had to hack in a few things that we liked from the Nancy project (e.g. automatic URLACL setup for HttpSys hosting), but these were very minor QOL items.
I think that every .NET/C# shop should take a VERY HARD look at this stack for any new development. Keep in mind that even though cross platform is marketed as a large part of this, you can reap 100% of the benefits on full 4.6 framework if you still need to operate in that domain.
But now, I'm a .net core junkie. The build tools, VS Code, C# itself. I just find it has the perfect mix of features for speedy development.
I don't dislike coding in java ever since kotlin, but even with IDEA I just prefer the .net core ecosystem overall.
I wish they made that documentation as pleasant and well put together as Django's documentation.
As a junior dev good docs are the biggest thing for me.
* .NET Standard 2.0 is implemented by .NET Framework, .NET Core, and Xamarin. For .NET Core, this added many of the existing APIs that have been requested.
This seems to support the narrative that windows is really fickle in what is 'the thing we are definitely going to support from now on'.
I personally have no experience with any of this, so am just going of second hand information.
2. `set DOTNET_CLI_TELEMETRY_OPTOUT=true` to disable spying.
You can see an example of something similar here: https://aspnet-core.azurewebsites.net/ and https://github.com/kriasoft/aspnet-starter-kit
I like it best on RHEL, or better yet on OpenShift for instant Kubernetes goodness.
The Java guys better up their game, pronto. .NET Core 2.0 is capable, miles ahead of 1.0. If 3.0 jumps that much, it'll be a compelling platform.