170 похожих чатов

Ребят, нужен совет по архитектуре webapi приложения. У меня есть

куча сервисных классов с бизнес-логикой, в каждый из этих классов в конструкторе заинжекчен самописный ServiceFabric - фабрика сервисных классов, который позволяет получать нужные им зависимости. По сути ServiceFabric это обёртка над стандартным IServiceScope, только с логикой переключения между двумя БД (RW и RO): он не просто инстацирует сервисный класс, а ещё указывает ему, с какой БД тому работать. Это делается, грубо говоря, через булевскую переменную внутри самого ServiceFabric, который передаётся в инстанцируемый класс. Более того, важный момент: эта булевская переменная должна прокидываться дальше по цепочке вызовов.
Т.е. Service1 через свой ServiceFabric инстанцирует Service2, указывав ему работать с RW базой. Service2, инстанцируя нужные ему Service3 и Service4 автоматески передаёт переменную им, так что они тоже невольно работают с RW. Надеюсь понятно объяснил.
Так вот, пока я пользовался Autofac, это было реализовано через TypedParameter - я на этапе резолва создавал экземпляр ServiceFabric и инжектил его. Но сейчас отказываюсь от Autofac, хочу остаться только со стандартным DI от Microsoft, но в нём, как оказалось, нету аналога передачи типизированных параметров.
Гуглю решения - на стэковерфлоу советуют использовать паттерт Options, т.к. по сути во свои сервисные классы добавить отдельный метод инициализации нужным мне экземпляром ServiceFabric. Но вариант мне не нравится по ряду причин. Можете посоветовать другие?

2 ответов

2 просмотра

хорошую вещь ServiceFabric не назовут! https://github.com/microsoft/service-fabric

Dmitry-B. Автор вопроса
Ayrat Hudaygulov
хорошую вещь ServiceFabric не назовут! https://git...

да, я знаю что такое название уже используется, но в моём проекте это именно самописный класс

Похожие вопросы

Обсуждают сегодня

А чем вам питонисты не угодили?😂
.
79
Язык Си можно выучить за день? По книжке ANSI C на 230 страниц
Vincent Vegan
29
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Dim Dim, [02.07.2024 11:07] DB 0x62 Dim Dim, [02.07.2024 11:07] DB 0x66 Dim Dim, [02.07.2024 11:07] кто пояснит что это?
Dim Dim
14
Ошибка: segmentation fault (core dumped) Код: pastebin.com/BEsNNSSV Сообщение от компилятора: отсутствует ОС: Arch Linux Ядро: x86_64 Linux 6.9.7-arch1-1 Процессор: Intel Cele...
sec
4
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
Добрый день, чат. Мне в очередь из других RabbitMQ по shovel валятся метрики в формате текста для Prometheus. Помогите пожалуйста подружить RabbitMQ и Prometheus, чтобы он (...
Aleksey
4
@ahndmn @ayaw0_0 здарова, на чем пишете?
Aiwan \ (•◡•) / _bot
7
Кстати, я тут еще с одной темой столкнулся, вот учу я C++, на таком то ресурсе, а остальные постоянно советуют практиковаться, что то писать, проекты, но как писать если вот т...
aaswq1
7
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Карта сайта