Home
Scrutor
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Home
-
Shepherd's Oasis: Statement on RustConf & Introspection
Are you sure you want Microsoft in particular to step in? https://github.com/dotnet-foundation/Home/discussions/39
-
Rust has been forked to the Crab Language
Indeed, by criteria of community drama, .NET is also too immature for use. See [1], as the conclusion of that.
[1]: https://github.com/dotnet-foundation/Home/discussions/40
- 6 .NET Myths Dispelled — Celebrating (Almost) 21 Years of .NET
-
.NET 6
Saying that outcry was about one tiny decision is like saying WW1 was because an Archduke got assassinated.
Microsoft's handling of .NET 's OSS community has been haphazard at best. Just a week or two prior to the 'dotnet watch' debacle, there were issues and concerns with the .NET Foundation that led to the Executive Director stepping down [0].
I bring this up, because in many cases the perception is that there is -still- lock in, just in a different fashion.
By that, I mean, if you Ask a typical .NET developer what they use, they'll probably say ASPNETCORE, EF Core, maybe you'll hear Hangfire, MediatR, RestSharp, or Dapper.
So, you've got a bunch of .NET devs that -only- know Microsoft technologies for the most part. Yeah there's some other stuff like MongoDb, Kafka, Redis, stuff like that, but It's not very frequent you hear about teams reaching out to other technologies.
It's very rare I hear people bring up Linq2Db, a beautiful* Micro-ORM that is best described as a type-safe, extensible SQL DSL. Or Websharper, a really-freaking-cool library that basically lets you transpile your C#/F# code into Javascript and/or Reactive HTML, complete with seamless server calls if you'd like.
You might run into some interesting things at different places. One shop I was at used MassTransit, which was kinda cool. I've wound up using Akka.NET a few times in the past, which has always been super fun.
The end result of this though, is the -perception- of what .NET Developers are like. And sometimes those perceptions are real. I remember the dev that felt Dapper was some sort of 'black magic' and would stick to writing DataReaders and or datatables by hand, and another that was so against the idea including Non-MS tech in a project that it wound up costing him his job; he insisted there was a way to get EF to do things in a performant way (answer: not sanely, and not easily the way the app was built on an arch level,) and refused to accept a PR that solved the problem with Dapper.
He wound up doing the thing I've seen a -lot- of .NET developers do; fight the Framework.
To be clear here, I'm not referring to the BCL. It's not always perfect (I'd love for an analogue to SSLEngine, please?), but it's -fine-. I'm referring to bits like ASPNETCORE, EFCore, SignalR, and Microsoft.Extensions.(DependencyInjection/Logging) where developers wind up getting in awkward tarpits around some weird edge case because of a business requirement or some other decision that, unfortunately, can't be undone.
Or are just plain 'well, that sounds sensible in theory' like "I would like to update N rows in an new status that are older than 1 month and set to overdue, and not have it be N update statements." Maybe EF does that now, but last I knew the answer was not really.
At my first 'Real' Dev job, we were a .NET shop, that often had to 'fight the framework' (it didn't help that we were on an Oracle Backend, which made -everything- more of a PITA before we discovered Dapper.) When the .NET guys hit one of these roadblocks, it would often take sprint after sprint of fighting to either have no solution, or have a solution that would render the app hard to maintain. The newer teams using Java? They didn't have those problems. We later heard they had 5 different ORM-ish libraries in use over there. At the time, a lot of the .NET devs kinda treated it as a sort of derision. 'hows somebody gonna understand it?'... But the Java teams delivered. It is also worth considering, maybe those were the best libraries to solve the problems that the app in question needed to deal with.
And that's kinda the 'mindset' that is a set of .NET developers that fit the stereotype; if it's not an app that fits their cookie-cutter world, they break down and can't understand it. In other words, they're afraid to step outside the box, which means they're less likely to think outside the box.
The typical 'litmus-test' of this type for me is a sliding scale based on their past/current experience with other languages and willingness to work with them.
* - I do some contribution work to Linq2Db, so my opinion may be a little biased.
[0] - https://github.com/dotnet-foundation/Home/discussions/39#
-
.NET Hot Reload Support via CLI Restored
I've heard this so many times within the last 10 years, and it's always after they've done something really stupid. At least in the FOSS realm, regarding microsoft, people are just so naive it's laughable. Like here where everyone is responding by pretty much saying "oh, it seems I've signed my rights away. I sure hope Microsoft doesn't abuse this in the future" ... I stopped feeling bad after reading responses.
- Can we trust Microsoft with Open Source?
- Detailed thoughts on the State of the .NET Foundation · Discussion #60 · dotnet-foundation/Home
-
.Net Foundation opens discussions around recent issues.
Part of the drama: https://github.com/dotnet-foundation/Home/discussions/39 Many things before were on twitter.
- Miguel de Icaza comment on the .NET Foundation
Scrutor
- Reflection -> Source Generated
-
Why asp.net core is not popular like Spring boot or nodejs, although it's better than both in all aspects?
You can with MS's default DI as well via scrutor.
- C# Design Patterns: Implementing the decorator pattern
-
Migrating to .Net Core MVC from .Net framework 4.8
if you are heavily invested in autofac you can replace the build in DI with another container. at this point i don't think it is that necessary. especially if you use scrutor. it gives your some nice assembly scanning registration that autofac/simple injector give https://github.com/khellang/Scrutor
-
ModuleLoader vs Reference
If you wouldn't mind, I have one additional question. If I wouldn't bother to remove this loading, how could one add that as service when using DI? I have found tool called Scrutor (https://github.com/khellang/Scrutor), is it something commonly used in situation like this?
-
Would you use an attribute that registers your interface/classes with .nets IoC container?
I much prefer using Scrutor and asbly scanning myself. https://github.com/khellang/Scrutor
-
Dependency Injection
you can also use Scrutor to get closer to Autofac functionality https://github.com/khellang/Scrutor
-
You Probably Don't Need to Worry About MediatR
That can't be the only justification, because you can easily register services using reflection without using MediatR.
-
A new small opensource library - Autojector.
I might suggest additional registration time extensions to modify the behavior as needed on classes. Take a look at Scrutor for some inspiration on API specifically.
-
6 .NET Myths Dispelled — Celebrating (Almost) 21 Years of .NET
There is a package that simplifies it for you if you want. But not everybody agrees that automatic registration is good pattern, so you have a choice.
What are some alternatives?
jedi-language-server - A Python language server exclusively for Jedi. If Jedi supports it well, this language server should too.
Autofac - An addictive .NET IoC container
sdk - Core functionality needed to create .NET Core projects, that is shared between Visual Studio and CLI
Lamar - Fast Inversion of Control Tool and Successor to StructureMap
splat - Makes things cross-platform
Microsoft.Extensions.DependencyInjection
zig - General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.
Simple Injector - An easy, flexible, and fast Dependency Injection library that promotes best practice to steer developers towards the pit of success.
crab - A community fork of a language named after a plant fungus. All of the memory-safe features you love, now with 100% less bureaucracy!
Unity - This repository contains all relevant information about Unity Container suit
loom - https://openjdk.org/projects/loom
DryIoc - DryIoc is fast, small, full-featured IoC Container for .NET