Обновить

Комментарии 2

Я прочитал ваши статьи, местами по диагонали, но не понял какая прикладная применимость у либы. Где ее типовое применение? Потому что на ум приходит только какой-нибудь nanoFramework, где аллокации в DI действительно могут иметь вес.. так чтобы это не казалось экономией на спичках

Мы все когда-то обходились без генераторов кода C#, и сейчас многим они не нужны. Хотя они уже есть много где: ASP.NET Core, System.Text.Json, Microsoft.Extensions.Logging, CommunityToolkit.Mvvm, EF Core... Все верно «экономия на спичках». Что, если спичек нужно очень много?)) Наверняка вы использовали .NET Regex Source Generator? Как говорится: «Копейка рубль бережет».

Во многих своих решениях (вот пример) я пытаюсь полностью переходить на DI и минимизировать использование операторов new где это возможно. Если бы я использовал классические DI библиотеки, не уверен, что смог бы обойтись без каких-то компромиссов. А сейчас и не задумываюсь, где стоит использовать DI, а где нет.

Но самое важное для меня это не производительность, а уверенность в том что: если мой код скомпилировался, то DI в рантайме на каком-нибудь хитром сценарии (который еще попробуй воспроизведи) не кинет исключение типа «не могу разрезолвить тип, так как не все что нужно зарегистрировано» или «циклическая зависимость» или еще что.

Так что я бы назвал лучшим местом применения:

-         Библиотеки, в которых важна надёжность и высокая производительность

-          XAML based UI приложения (WPF, Avalonia, Uno, MAUI), так как с Pure.DI они выглядят особенно красиво (DataContext, bindings, design time и т.п.) и без костылей в виде дополнительных классов к каждому XAML

-         С Web, скорее нет, так как MS сделал ставку на свой DI, и он очень хороший. Но это только про саму инфраструктуру. А библиотеки, которые работают под нагрузкой в этих приложениях вполне подходят для использования с Pure.DI

-         Консольные приложения

-         Игры на Unity

На самом деле везде))

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации