Nikolay
Зачем?
Ayrat
это как в функцию
let createUser пихануть помимо логера и зависимости для создания юзера ещё зависимость для кеширования запросов, хотя она ему нахер не нужна и не используется
Nikolay
Сейчас 40 контроллеров, будет 120?
Nikolay
И это в лучшем случае
Nikolay
Ayrat
а резолвить при создании контролера надо все 3
Ayrat
проблема не моя, я только способ решения привёл
Ayrat
разделить на разные контроллеры или сделать резолв лейзи
Nikolay
Ну FilesController, пишет и читает файлы
Nikolay
Один сервис для записи, второй - для чтения
Ayrat
И потом снова не понимать почему же у тебя всё в куче
Ayrat
ведь ResponseController такой хороший, он отвечает только за одну сферу - создание респонсов на любые реквесты!
Nikolay
Ну так что, делать отдельные контроллеры на чтение, и отдельные на запись?
Nikolay
Ну допустим, такой пример простой:
Получить картинку профиля пользователя по id пользователя (UsersReadService.GetUserProfileImageId(idUser), FilesReadService.GetFileById(profileImageId)
Nikolay
И UsersReadService создаст свой DbContext, и FilesReadService свой
Nikolay
Разбивать тогда на:
UsersReadController (UsersReadService)
UsersWriteController (UsersWriteService)
UsersReadFilesController (UsersReadService, FilesReadService)
UsersWriteFilesController (UsersWriteServics, FilesWriteService)
?
Ayrat
ИЛИ СДЕЛАТЬ РЕЗОЛВ ЛЕЙЗИ???
Ayrat
я ж 5 раз уже написал
Nikolay
Nikolay
Сервис локатор
Ayrat
вообще не понял как ты сервис локатор и лейзи резолв совместил
Nikolay
Ayrat
т.е. давай уточним в чём проблема. Если у тебя догий резолв (что странно) и ты хочешь соптимайзить на обработке запросов, то тебе или разбивать контролеры или делать их лейзи (Lazy)
Ayrat
а создаёшь Lazy<DbContext>
Nikolay
Резолвит быстро, но мусорит
Nikolay
Мусорит безумно
Ayrat
профилировал?
Nikolay
Плюс есть God object
Ayrat
чем мусорит?
Nikolay
DbContext'ами в основном
Nikolay
Там из-за того, что куча вложенностей
Nikolay
И есть один наследственный God Object
Nikolay
Избавившись от God Object в модуле аутентификации, получил в 4 раза меньше резолва зависимостей
Ayrat
Тут диссонанс.
Ты юзаешь EF и думаешь об оптимизациях.
Давай может или юзать даппер и думать об оптимизациях
Или юзать EF и не думать об оптимизациях.
Nikolay
Есть и EF и даппер
Ayrat
Nikolay
Проект условно разделён на 2 части, легаси и новая
Nikolay
В новой получше всё, но из-за того, что ей нужно со старой взаимодействовать, приходится трогать God object
Nikolay
Который инжектит 100500 зависимостей
Vasily
Кароч, @Dolfik ,у тебя проблема в разделении зон ответственности
Vasily
Обычно бьют по типам объектов
Nikolay
Вообще странные вещи творятся
Vasily
А не по типам операций
Igor
Nikolay
Тут не об ФП думаешь
Vasily
Карочи
Vasily
Делаешь интерфейс
Vasily
В имплементации в конструктор пихаешь всякое
Vasily
Профит
Vladislav
возвращаясь к теме наркомании и лямбд
Vladislav
дженериковый метод это же пример параметрического полиморфизма?
Vladislav
Ayrat
Ayrat
ну вот это вот where T: IService например
Анна
Vladislav
Анна
Vladislav
но я бы хотел разбираться в теории типов
x
не тот ли это лука который полифонический доДиез?
Vladislav
Ayrat
Vladislav
Экзистенциальные типы явным образом доступны в качестве экспериментального расширения языка Haskell, где они представляют собой специальный синтаксис, позволяющий использовать переменную типа в определении алгебраического типа, не вынося её в сигнатуру конструктора типов, то есть не повышая его арность.
Vladislav
ааа
Vladislav
т.е. TFrom не должно быть?
Анна
Экзистенциальные типы - это про абстракцию больше. И вот модули в OCaml - это экзистенциальные типы, по идее
Анна
хотя я не до конца раскурила ещё их
Анна
В дженериках квантор всеобщности, поэтому они универсальные. А в этих квантор существования, поэтому экзистенциальные
Ayrat