powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Иньекция DbContext
23 сообщений из 98, страница 4 из 4
Иньекция DbContext
    #40016671
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu
чекал он не держит конекшен открытым. открывает закрывает по запросу.

Да, я об этом выше и написал.
...
Рейтинг: 0 / 0
Иньекция DbContext
    #40016672
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Не закрытый БЛ, а прозрачное кеширование, когда БЛ кеша просто не видит. Кеширующий декоратор .


Декоратор это паттерн, если реализовывать в лоб, то это довольно уродливое решение.
Поэтому лучше говорить про аспекты.

fkthat
И как это вообще связано с кол-вом интерфейсов не пойму. Декоратор он на то и декоратор, что имеет тот же интерфейс, что у декорируемого объекта.


Я так понимаю, ты с кешем работаешь исключительно через декораторы? :)
...
Рейтинг: 0 / 0
Иньекция DbContext
    #40016675
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Декоратор это паттерн, если реализовывать в лоб, то это довольно уродливое решение.
Поэтому лучше говорить про аспекты.

Отличное решение. А аспект это считай синоним. При правильной работе с DI декоратор становится вообще невидимым. Инжектишь интерфейс и получаешь уже задекорированный согласно конфигурации DI объект. У меня для автофака было несколько кастомных расширений, которыми можно было через атрибуты декорировать интерфейсы/объекты разной валидацией, аудитом, обработкой исключений и т.п.

hVostt
Я так понимаю, ты с кешем работаешь исключительно через декораторы? :)

Конечно. Не напрямую же его вызывать, мешая либо логику, либо работу с данными и кеширование. Принцип SR.
...
Рейтинг: 0 / 0
Иньекция DbContext
    #40016679
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
handmadeFromRu
а как CQRS поможет не шлепать репо и uow? не понимаю


так у тебя для публики команды и запросы
никто в репу не ходит, есть она там и или нет.

насчёт uow, по-хорошему нужен, но не обязателен, если структура логики позволяет

так я ж про другое имел изначально вот поголовно пишут repo+uow а тот же ef эт уже эта связка. также можно прокидывать в cqrs контектс напрямую но нынче модно абсракцию поверх орм на всякий
...
Рейтинг: 0 / 0
Иньекция DbContext
    #40016681
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Отличное решение. А аспект это считай синоним. При правильной работе с DI декоратор становится вообще невидимым. Инжектишь интерфейс и получаешь уже задекорированный согласно конфигурации DI объект. У меня для автофака было несколько кастомных расширений, которыми можно было через атрибуты декорировать интерфейсы/объекты разной валидацией, аудитом, обработкой исключений и т.п.


es )

fkthat
Конечно. Не напрямую же его вызывать, мешая либо логику, либо работу с данными и кеширование. Принцип SR.


Ну тогды ладно :)
У нас проектах кеш не только для чистых данных используется, но и много для чего ещё.
Хотя, глядя на единственный CRUD проджект, который у нас есть небольшой, там и правда не используется..
...
Рейтинг: 0 / 0
Иньекция DbContext
    #40016682
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu
так я ж про другое имел изначально вот поголовно пишут repo+uow а тот же ef эт уже эта связка. также можно прокидывать в cqrs контектс напрямую но нынче модно абсракцию поверх орм на всякий


Ну вот как раз на случай обмазать кешем, аудитом и прочей фигнёй)
...
Рейтинг: 0 / 0
Иньекция DbContext
    #40016687
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
У нас проектах кеш не только для чистых данных используется, но и много для чего ещё.

А что в кеше кешировать-то можно кроме данных? Понятно, что можно его просто использовать еще как быстрый key-value store, но это уже как бы и не кеш будет, а просто store для данных. Да и в таком случае не напрямую же использовать опять-таки, а завернуть во что-то хорошо бы.
...
Рейтинг: 0 / 0
Иньекция DbContext
    #40016690
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
А что в кеше кешировать-то можно кроме данных? Понятно, что можно его просто использовать еще как быстрый key-value store, но это уже как бы и не кеш будет, а просто store для данных. Да и в таком случае не напрямую же использовать опять-таки, а завернуть во что-то хорошо бы.


На кеше много чего интересного можно реализовать :)
Как бы, и зачастую проще заюзать IMemoryCache, чем городить город из декораторов.
Понимаю, что есть динамик кастл и прочие прикольные штуки, но это не молоток, чтобы теперь все-все задачи были гвоздями. Где-то уместно, где-то не очень.
...
Рейтинг: 0 / 0
Иньекция DbContext
    #40016729
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt

На кеше много чего интересного можно реализовать :)
Как бы, и зачастую проще заюзать IMemoryCache, чем городить город из декораторов.
Понимаю, что есть динамик кастл и прочие прикольные штуки, но это не молоток, чтобы теперь все-все задачи были гвоздями. Где-то уместно, где-то не очень.

Так декоратор внутри себя и использует IMemoryCache или подобное - ты что же, думаешь, там в нем какой-то самодельный кеш, что ли.
...
Рейтинг: 0 / 0
Иньекция DbContext
    #40016781
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Так декоратор внутри себя и использует IMemoryCache или подобное - ты что же, думаешь, там в нем какой-то самодельный кеш, что ли.


Ну вообще, чаще всего уместно использовать IDistributedCache, это всё очень вариативно, чтобы всегда можно было решать декоратором. Поэтому декоратор это как шаблонный паттерн для массивного применения.

Точечно пилить декоратор это злостный оверхед.
...
Рейтинг: 0 / 0
Иньекция DbContext
    #40016788
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Ну вообще, чаще всего уместно использовать IDistributedCache

Да хоть вообще обычный Dictionary - суть-то не в этом.
hVostt
Точечно пилить декоратор это злостный оверхед.

Он пилится за три минуты даже в пьяном угаре. Причем можно сделать базовый декоратор и сделать так, что при желании сменить кеш-провайдер менять надо будет только в одном месте. (впрочем, у нас использовали CacheManager - он уже сам по себе адаптер к любому провайдеру).

Декоратор он для того, чтобы 1) отделить код работы с кешем от кода и БЛ и ДАЛ в отдельное место. 2) сделать для БЛ кеш прозрачным - он вообще не будет знать, что он вызывает ДАЛ не напрямую, а через кеш.

Может, ты просто под декоратором что-то другое понимаешь?
...
Рейтинг: 0 / 0
Иньекция DbContext
    #40016792
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Декоратор он для того, чтобы 1) отделить код работы с кешем от кода и БЛ и ДАЛ в отдельное место. 2) сделать для БЛ кеш прозрачным - он вообще не будет знать, что он вызывает ДАЛ не напрямую, а через кеш.


1) он итак уже отделён в отдельном месте, называется это место IMemoryCache :)
2) вообще он должен знать, так как без нормальной инвалидации такой кеш приносит больше вреда, чем пользы

Я всё равно не поддерживаю идеалистические подходы, без зрелого и осознанного понимания что делаешь в каждом конкретном случае. Всё делать через декоратор -- такое себе утверждение.

Как бы вот есть отвёртка, есть шуруповёрт, есть пневматика. Для каждого случая, для каждой задачи больше подходит свой инструмент. Говорить, что теперь всё херачим шуруповёртом и гвозди забиваем -- ну хз )))
...
Рейтинг: 0 / 0
Иньекция DbContext
    #40016796
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Может, ты просто под декоратором что-то другое понимаешь?


Декоратор это структурный паттерн, это для организации структуры приложения.

Нельзя решить все проблемы и задачи работы с кешем структурой.
Ибо там дальше может дойти до маразма, и код будет предтсавлять собой десятиэтажную абстракцию, ради решения простой задачи. Это будет медленно работать, жрать ресурсы, а разработчики вынуждены писать тонну оверхеда, ради экономии одной строчки кода.
...
Рейтинг: 0 / 0
Иньекция DbContext
    #40016807
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Декоратор это структурный паттерн, это для организации структуры приложения.

Деление на типы паттернов часто очень условное. Декоратор он для того, чтобы не изменяя интерфейс объекта менять тем или иным образом его поведение (в том числе и динамически в рантайме). А медиатор, например, относят к паттернам поведения, но его также можно отнести и к структурным (структуру-то приложения он тоже задает).
...
Рейтинг: 0 / 0
Иньекция DbContext
    #40016812
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Нельзя решить все проблемы и задачи работы с кешем структурой.

Какая структура? Какие жрет ресурсы? Весь кеширующий код, который у меня в декораторе у тебя без декоратора будет в том же виде либо в БЛ, либо в ДАЛ. С тем же успехом можно сказать, что ДАЛ жрет ресурсы, а чтобы не жрал, его весь внутрь БЛ надо поместить. Ты стопудово под декоратором что-то свое понимаешь.
...
Рейтинг: 0 / 0
Иньекция DbContext
    #40016827
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Какая структура? Какие жрет ресурсы? Весь кеширующий код, который у меня в декораторе у тебя без декоратора будет в том же виде либо в БЛ, либо в ДАЛ. С тем же успехом можно сказать, что ДАЛ жрет ресурсы, а чтобы не жрал, его весь внутрь БЛ надо поместить. Ты стопудово под декоратором что-то свое понимаешь.


Ты лучше расскажи как решаешь проблему с инвалидацией кеша на декораторах :)
...
Рейтинг: 0 / 0
Иньекция DbContext
    #40016828
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Деление на типы паттернов часто очень условное. Декоратор он для того, чтобы не изменяя интерфейс объекта менять тем или иным образом его поведение (в том числе и динамически в рантайме). А медиатор, например, относят к паттернам поведения, но его также можно отнести и к структурным (структуру-то приложения он тоже задает).


Почему условное-то? Вполне себе конкретное :)

Декоратор никоим образом не оказывает влияния на взаимодействие компонентов.
А медиатор это конкретное решение для обеспечения взаимодействие.
И я видел злоупотребление тем же медиатором.
Как видел злоупотребление декоратором.

Любую здравую вещь можно превратить в культ и пихать куда не следует.
В некоторым случаях смотришь на код, где декоратор на декораторе, и думаешь, уж лучше бы этот человек писал обычный лапшекод, чем эту жесть.
...
Рейтинг: 0 / 0
Иньекция DbContext
    #40016898
fkthis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt

И я видел злоупотребление тем же медиатором.
Как видел злоупотребление декоратором.

Если в голове пусто, то злоупотребить даже морковным соком можно.
...
Рейтинг: 0 / 0
Иньекция DbContext
    #40016929
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthis
hVostt

И я видел злоупотребление тем же медиатором.
Как видел злоупотребление декоратором.

Если в голове пусто, то злоупотребить даже морковным соком можно.


Ну вот! К вопросу о transient-ном DbContext, может не надо ломать контекст, чтобы не защащаться от злостных изменений?


Как бы если в голове пусто, то хоть привяжи ко лбу пенопласт, помешать разбить лоб это не поможет.
...
Рейтинг: 0 / 0
Иньекция DbContext
    #40016937
fkthis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt
Ну вот! К вопросу о transient-ном DbContext, может не надо ломать контекст, чтобы не защащаться от злостных изменений?

Ну вот, допустим у меня поверх ЕФ репы. А у репы по самой её сути один вызов - одна транзакция (либо прочитать, либо сохранить). На кой леший мне шарить контекст между ними, если я от этого ничего не выгадываю, а проблем поиметь могу? Расшаренный контекст может иметь смысл, когда действительно с ним, как с UoW работать (таки, правда, и не выяснили, кто этот UoW коммитить будет).
...
Рейтинг: 0 / 0
Иньекция DbContext
    #40017003
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthis
Ну вот, допустим у меня поверх ЕФ репы. А у репы по самой её сути один вызов - одна транзакция (либо прочитать, либо сохранить). На кой леший мне шарить контекст между ними, если я от этого ничего не выгадываю, а проблем поиметь могу? Расшаренный контекст может иметь смысл, когда действительно с ним, как с UoW работать (таки, правда, и не выяснили, кто этот UoW коммитить будет).


Ну ты хоть покажи каких проблем ты там ожидаешь поиметь.
Я в упор не понимаю о каких проблемах ты говоришь.
Может ты с ними столкнулся в реале?

Потому что сейчас это похоже на проблему преждевременной эякуляции оптимизации.
...
Рейтинг: 0 / 0
Иньекция DbContext
    #40017041
fkthis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt
Потому что сейчас это похоже на проблему преждевременной эякуляции оптимизации.

У меня все по-скаутски "будь готов"

Допустим, у тебя в приложении глобальная переменная, она проблем пока не создавала, но ты видишь, что совершенно спокойно можешь сделать её локальной. Ты это сделаешь, или же это тоже будет "преждевременный рефакторинг"?
...
Рейтинг: 0 / 0
Иньекция DbContext
    #40017209
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthis
У меня все по-скаутски "будь готов"

Допустим, у тебя в приложении глобальная переменная, она проблем пока не создавала, но ты видишь, что совершенно спокойно можешь сделать её локальной. Ты это сделаешь, или же это тоже будет "преждевременный рефакторинг"?


Займусь этим когда в этом возникнет необходимость.
Например, глобальная переменная может создать мне проблем для покрытия тестами -- там и сделаю то, что нужно.

А просто так заниматься бессмысленной работой смысла не вижу.

Твой пример -- яркий. Ты себе что-то вообразил и борешься с этим. Тысячи людей пользуют DbContext в скоупе и он так используется по примерам майкрософт, и всё хорошо.

У тебя вдруг с какого-то перепугу в голове стало плохо. Переклинило чтоли?
Ну если у тебя дофига свободного времени, и заняться больше нечем, переноси DbContext из скоупа в транзиент.

Работа настолько же бессмысленная, насколько и бесполезная и глупая. Но если тебе так спокойней, делай кто мешает
...
Рейтинг: 0 / 0
23 сообщений из 98, страница 4 из 4
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Иньекция DbContext
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]