powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Репозиторий - глобальный или локальный?
25 сообщений из 91, страница 1 из 4
Репозиторий - глобальный или локальный?
    #38543838
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему ругают глобальный (через статический класс, например) репозиторий? Посмотрел на статью и скачал пример в этой статье. Там у Джоша Смита CustomerRepository путешествует по всем конструкторам - начиная с MainWindowViewModel, затем передаётся в AllCustomersViewModel, затем в CustomerViewModel. Мне это не нравится. Ведь всё равно ссылка идёт на один и тот же репозиторий, т. е. на один и тот же объект, так почему бы не использовать статический класс-репозиторий, который не надо никуда передавать по цепочке конструкторов, а можно вызвать в любом месте?
...
Рейтинг: 0 / 0
Репозиторий - глобальный или локальный?
    #38543849
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320, очевидно, что в рамках desktop приложения пох. А вот когда такой подход в веб перенесёшь, то очень быстро поймёшь, почему ругают :)
...
Рейтинг: 0 / 0
Репозиторий - глобальный или локальный?
    #38543889
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAuser7320, очевидно, что в рамках desktop приложения пох. А вот когда такой подход в веб перенесёшь, то очень быстро поймёшь, почему ругают :)
Что, памяти жалко?

Так почему ругают?
...
Рейтинг: 0 / 0
Репозиторий - глобальный или локальный?
    #38543894
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAuser7320, очевидно, что в рамках desktop приложения пох.
На десктопах не "пох", а как удобнее. Вот тебе на десктопе как удобнее - таскать с собой его через все конструкторы ("не забыть добавить параметр..."), или в любом месте иметь доступ сразу?
...
Рейтинг: 0 / 0
Репозиторий - глобальный или локальный?
    #38543897
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320skyANAuser7320, очевидно, что в рамках desktop приложения пох. А вот когда такой подход в веб перенесёшь, то очень быстро поймёшь, почему ругают :)
Что, памяти жалко?

Так почему ругают?Так тексты ошибок почитай
...
Рейтинг: 0 / 0
Репозиторий - глобальный или локальный?
    #38543900
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320skyANAuser7320, очевидно, что в рамках desktop приложения пох. А вот когда такой подход в веб перенесёшь, то очень быстро поймёшь, почему ругают :)
Что, памяти жалко?

Так почему ругают?
Наверное, всё же не в памяти, а в конкуренциях доступа дело, да? Ну так при равных реализациях репозитория (есть обработка конкуренций, нет обработки) что может за/против статики говорить?
...
Рейтинг: 0 / 0
Репозиторий - глобальный или локальный?
    #38543901
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320skyANAuser7320, очевидно, что в рамках desktop приложения пох.
На десктопах не "пох", а как удобнее. Вот тебе на десктопе как удобнее - таскать с собой его через все конструкторы ("не забыть добавить параметр..."), или в любом месте иметь доступ сразу?На десктопе у меня Singleton, в вебе Singlecall. Один и тот же код.

ViewModel у меня ни фига не знает о репозитории.
...
Рейтинг: 0 / 0
Репозиторий - глобальный или локальный?
    #38543903
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAuser7320пропущено...

Что, памяти жалко?

Так почему ругают?Так тексты ошибок почитай
Какие тексты ошибок? Я ещё не пользовал, вот и спрашиваю. Если бы пользовал, сам бы знал, что и почему. Я просто увидел, что таскают репозиторий, я мне это сразу показалось дико неудобным.
...
Рейтинг: 0 / 0
Репозиторий - глобальный или локальный?
    #38543907
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAuser7320пропущено...

На десктопах не "пох", а как удобнее. Вот тебе на десктопе как удобнее - таскать с собой его через все конструкторы ("не забыть добавить параметр..."), или в любом месте иметь доступ сразу?На десктопе у меня Singleton, в вебе Singlecall. Один и тот же код.

ViewModel у меня ни фига не знает о репозитории.
А что с репозиторием работает? Модель?
...
Рейтинг: 0 / 0
Репозиторий - глобальный или локальный?
    #38543912
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320skyANAпропущено...
Так тексты ошибок почитай
Какие тексты ошибок? Я ещё не пользовал, вот и спрашиваю. Если бы пользовал, сам бы знал, что и почему. Я просто увидел, что таскают репозиторий, я мне это сразу показалось дико неудобным.Мда... Ну вот попробуй, как только увидишь текст исключения, так сразу и поймёшь.
...
Рейтинг: 0 / 0
Репозиторий - глобальный или локальный?
    #38543913
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320skyANAпропущено...
На десктопе у меня Singleton, в вебе Singlecall. Один и тот же код.

ViewModel у меня ни фига не знает о репозитории.
А что с репозиторием работает? Модель?Domain Model.
...
Рейтинг: 0 / 0
Репозиторий - глобальный или локальный?
    #38543914
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAuser7320пропущено...

А что с репозиторием работает? Модель?Domain Model.
Ну это у меня и есть модель.


Вот, нашёл что-то как-то близко ...
...
Рейтинг: 0 / 0
Репозиторий - глобальный или локальный?
    #38543923
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320skyANAпропущено...
Domain Model.
Ну это у меня и есть модель.Отлично!

А с чего вдруг возникла необходимость "таскать с собой его через все конструкторы"? Код в студию.
...
Рейтинг: 0 / 0
Репозиторий - глобальный или локальный?
    #38543942
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAuser7320пропущено...

Ну это у меня и есть модель.Отлично!

А с чего вдруг возникла необходимость "таскать с собой его через все конструкторы"? Код в студию.
Я не буду постить весь код этого Джоша - там дофига , даже если обрезать. Но у него там типа иерархия вью-моделей (примерно так - чуть ниже картинка) - главное окно, потом коллекция (тоже отдельная вью-модель) вью-моделей всех заказчиков - т. е. у каждого заказчика тоже по вью-модели. И сохранение нового заказчика было реализовано во вью-модели этого самого заказчика. Выглядит это примерно так .

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

А сами заказчики у него в файле хранились.
...
Рейтинг: 0 / 0
Репозиторий - глобальный или локальный?
    #38543945
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320,

может у вас вопрос DI vs ServiceLocator?
...
Рейтинг: 0 / 0
Репозиторий - глобальный или локальный?
    #38543954
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanuser7320,

может у вас вопрос DI vs ServiceLocator?
Чего? У меня репозиторий.
...
Рейтинг: 0 / 0
Репозиторий - глобальный или локальный?
    #38545118
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAuser7320пропущено...

А что с репозиторием работает? Модель?Domain Model.
А если у тебя модель (твоя модель домена) одна, а на неё есть несколько моделей представления. Причём эти модели представления имеют, скажем так, совпадающий и разный набор свойств. Например, в модели есть свойства

Код: c#
1.
2.
int Id
ModelTypes ModelType



В одной модели представления свойства

Код: c#
1.
2.
3.
int Id
ModelTypes ModelType
string DisplayName



а в другой

Код: c#
1.
2.
3.
int Id
ModelTypes ModelType
ImageSource Image




Теперь, если у тебя репозиторий работает только с доменной моделью, то возвращает он только Id и ModelType. А в каком месте должна быть логика, выбирающая, скажем, изображение Image для второй модели представления (из базы это изображение тянуть или с файла на диске - не важно)? Если запихать её в логику самой же модели представления, то получается, что репозиторий не до конца отрабатывает свою функцию - я получаю не полноценный объект из хранилища, а только его часть. Остальную часть должна инициализировать логика того представления, к которой эта часть относится.

Может, надо сделать уже два (три) репозитория? Один - для моделей, и по одному - для каждой модели представления. Тогда репозиторий для вторых моделей представления будет сам искать нужное изображение.


И ещё вариант - как альтернатива просто двум разным моделям представления в одном приложении. Представь, что эти модели представления находятся в разных приложениях. Т. е. оба приложения работают с одной сборкой (которая уже как бы третье приложение), оперирующей сущностями предметной области (моделью, DomainModel по-твоему), но в каждом приложении модель представляется своей моделью представления. Стоит ли заводить репозитории для каждого такого приложения?
...
Рейтинг: 0 / 0
Репозиторий - глобальный или локальный?
    #38545127
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320, прочитай внимательно описание шаблона репозиторий и aggregation root .
...
Рейтинг: 0 / 0
Репозиторий - глобальный или локальный?
    #38545133
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAuser7320, прочитай внимательно описание шаблона репозиторий и aggregation root .
мне кажется недавно мы спорили на эту тему?
...
Рейтинг: 0 / 0
Репозиторий - глобальный или локальный?
    #38545173
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanskyANAuser7320, прочитай внимательно описание шаблона репозиторий и aggregation root .
мне кажется недавно мы спорили на эту тему?Не спорили, а разбирались.
...
Рейтинг: 0 / 0
Репозиторий - глобальный или локальный?
    #38545479
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAuser7320, прочитай внимательно описание шаблона репозиторий и aggregation root .
1. По второй ссылке я не понял смысл поля HistoryEntries и почему оно принадлежит типу Order, а не, скажем, Client (логично историю заказов хранить в объекте клиента, чем в конкретном заказе, нет?). В примере 4 там эта коллекция всего один раз заполняется одним элементом в методе Approve. Что, предполагается, что один и тот же заказ может быть несколько раз зааппрувлен?

2. Вообще говоря, путь построения DDD-проектов неочевиден. Скажем, по той же второй ссылке, если выполнять те же требования в тех же 5 примерах, что привёл там автор, можно по DDD построить другую иерархию классов с другим набором полей, но чтобы тоже "было всё правильно"? Я не имею ввиду простое переименование.

3. Самое главное. Я могу понять, что там что-то новое и интересное для меня написано, но я не вижу связи с тем, что я написал выше - когда одна модель и несколько моделей представления. Ты сразу о всяких доменах говоришь, а я об одной модели - об одной сущности и её представлениях. И я спросил, как организовать репозиторий, если модель простая, а в представлениях появляются дополнительные данные, которые в модели предметной области не нужны, а в представлении нужны. Кто будет грузить эти дополнительные данные - дополнительный репозиторий для конкретной модели представления, просто в конструкторе из файла картинку подгрузить или как?

Т. е. я задал вопрос про отдельную модель, а ты сразу отослал меня читать про домены и связки объектов. Или ты хочешь сказать, что шаблон "репозиторий" нельзя применять "просто так" - нужны обязательно домены, DDD и прочие штуки? И если у меня не по DDD построено приложение, то с репозиторием не выйдет?
...
Рейтинг: 0 / 0
Репозиторий - глобальный или локальный?
    #38545501
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320, цитирую абзац из статьи:Domain-Driven Design: aggregation rootВы уже заметили, что мы сохраняем в репозитории только корень агрегации. На самом деле отдельные репозитории нужны только для них. Классы, которые никогда не являются корнями, не нуждаются в отдельных репозиториях . Когда мы сохраняем корень агрегации, изменения в остальном графе объектов сохраняются каскадом.
Ферштейн?
...
Рейтинг: 0 / 0
Репозиторий - глобальный или локальный?
    #38545512
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320, ты спроектировал классы какой-то не известной нам предметной области.
При этом что-то тебе не нравится, но что конкретно, тоже не понятно. То ли твоя реализация, то ли Джоша.
При этом DDD для тебя нечто не понятное.

Короче я не понимаю, чего ты хочешь: порассуждать, или кокретную проблему решить.

Вот такая тафталогия.
...
Рейтинг: 0 / 0
Репозиторий - глобальный или локальный?
    #38545531
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давай так: опиши конкретно свою задачу.
...
Рейтинг: 0 / 0
Репозиторий - глобальный или локальный?
    #38545539
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAuser7320, цитирую абзац из статьи:Domain-Driven Design: aggregation rootВы уже заметили, что мы сохраняем в репозитории только корень агрегации. На самом деле отдельные репозитории нужны только для них. Классы, которые никогда не являются корнями, не нуждаются в отдельных репозиториях . Когда мы сохраняем корень агрегации, изменения в остальном графе объектов сохраняются каскадом.
Ферштейн?вернемся к нашему спору. Репозиторий может быть нужен и просто для объектов EF, которыми скорее всего ТК пользуется. А ваши "корни" агрегации может быть и слой выше. Так что все дело в конкретной задаче :)
...
Рейтинг: 0 / 0
25 сообщений из 91, страница 1 из 4
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Репозиторий - глобальный или локальный?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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