Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Reactive: как реализовать такую обработку?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3019
Есть две формы, хотелось бы сделать так:

1. в форме 1 при нажатии на клавишу выполняется запрос к SQL Server.
2. если он выполнился, то в форме1 и в форме 2 перерисовываются контролы (листбоксы, тривью)
3. если не выполнился, то в форме 1 пишется запись в текстбокс об ошибке

Вопрос: я создаю субжект в форме1, подписываюсь в форме1, там же реагирую.
Как быть в форме 2 с подпиской не теже события и реакцией на них? там ведь не виден субжект?

Собственно, хотелось бы сделать подписку и реакцию на то же событие по многим классам приложения, потом и вопрос.
29 май 19, 10:40    [21896407]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
fkthat
Member

Откуда:
Сообщений: 1164
Гугли паттерны "Model-View-Controller" и "Model-View-Presenter".
29 май 19, 10:46    [21896412]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3019
fkthat
Гугли паттерны "Model-View-Controller" и "Model-View-Presenter".


Хорошо, но это концепция, а как реализовать, используя Reactive то, что я описал?
Т.е., я так понимаю, субжект должен быть виден для обоих классов? Значит, выносить и делать его глобальным?
29 май 19, 10:50    [21896420]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
fkthat
Member

Откуда:
Сообщений: 1164
Ролг Хупин,

В MVC модель может быть разшарена между несколькими "view" (представлениями), в данном случае формами. Контроллер формы получает пользовательское событие от формы и обновляет модель. Модель в свою очередь уведомляет все зависящие от неё представления о том что она обновилась. В ответ на это уведомление каждое представление обновляет себя данными модели. В общем случае, да, нужен некоторый глобальный "диспетчер", который управляет созданием представлений (форм), контроллеров, моделей и установлением связей между ними.
29 май 19, 10:58    [21896429]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3019
fkthat
Ролг Хупин,

В MVC модель может быть разшарена между несколькими "view" (представлениями), в данном случае формами. Контроллер формы получает пользовательское событие от формы и обновляет модель. Модель в свою очередь уведомляет все зависящие от неё представления о том что она обновилась. В ответ на это уведомление каждое представление обновляет себя данными модели. В общем случае, да, нужен некоторый глобальный "диспетчер", который управляет созданием представлений (форм), контроллеров, моделей и установлением связей между ними.


ясно, спасибо за комментарий, у меня старое WinForms приложение, накручивать туда еще MVC|MVVM не хотелось бы, хочется проще, добавить реакцию в разных формах/классах на событие, случившееся в каком-то месте
29 май 19, 11:06    [21896442]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
fkthat
Member

Откуда:
Сообщений: 1164
Ролг Хупин
ясно, спасибо за комментарий, у меня старое WinForms приложение, накручивать туда еще MVC|MVVM не хотелось бы, хочется проще, добавить реакцию в разных формах/классах на событие, случившееся в каком-то месте

Паттерн "медиатор" ("посредник")
29 май 19, 11:22    [21896477]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Ролг Хупин
меня старое WinForms
mainForm всегда доступна. Пусть и руководит событиями. А все формочки при родах подписываются и умирая отписываются.
29 май 19, 11:29    [21896492]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Ролг Хупин,
Это если легаси проект.
29 май 19, 11:30    [21896496]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
fkthat
Member

Откуда:
Сообщений: 1164
Petro123
mainForm всегда доступна. Пусть и руководит событиями.

Еще пусть она варит кофе и делает марокканский минет.
29 май 19, 11:34    [21896505]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
fkthat,
Все что ты не напишешь, все верно дорогой). Не переживай.
29 май 19, 11:39    [21896513]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4794
fkthat
Паттерн "медиатор" ("посредник")

Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев.
29 май 19, 12:04    [21896552]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
ЕвгенийВ,
Да)
И если у вас не легаси)
29 май 19, 12:05    [21896555]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3019
Petro123
Ролг Хупин,
Это если легаси проект.


да не то слово, еще и какой легаси, не хочется лишний раз трогать
29 май 19, 12:05    [21896556]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26639
Ролг Хупин
Есть две формы, хотелось бы сделать так:

1. в форме 1 при нажатии на клавишу выполняется запрос к SQL Server.
2. если он выполнился, то в форме1 и в форме 2 перерисовываются контролы (листбоксы, тривью)
3. если не выполнился, то в форме 1 пишется запись в текстбокс об ошибке

Вопрос: я создаю субжект в форме1, подписываюсь в форме1, там же реагирую.
Как быть в форме 2 с подпиской не теже события и реакцией на них? там ведь не виден субжект?

Собственно, хотелось бы сделать подписку и реакцию на то же событие по многим классам приложения, потом и вопрос.

Речь об https://reactiveui.net/docs/guidelines/platform/windows-forms ?
29 май 19, 12:14    [21896565]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3019
Petro123
Ролг Хупин
меня старое WinForms
mainForm всегда доступна. Пусть и руководит событиями. А все формочки при родах подписываются и умирая отписываются.


В общем, сделал так: сделал Singleton, там живет субжект, каждая форма берет его, подписывается и реагирует.
29 май 19, 12:14    [21896566]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Ролг Хупин
Petro123
Ролг Хупин,
Это если легаси проект.


да не то слово, еще и какой легаси, не хочется лишний раз трогать Картинка с другого сайта.

В mainForm добавить интефейс. , IAddEventDB
- заругается... дописать метод из него.
- в этом методе вызвать form2.
А метод запустит form1
Все.
29 май 19, 12:18    [21896571]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Ролг Хупин
Singleton
антипаттерн
29 май 19, 12:18    [21896573]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
fkthat
Member

Откуда:
Сообщений: 1164
Ролг Хупин
В общем, сделал так: сделал Singleton, там живет субжект, каждая форма берет его, подписывается и реагирует.


Да, зачот, все правильно.
29 май 19, 12:18    [21896574]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26639
Ролг Хупин
fkthat
Ролг Хупин,

В MVC модель может быть разшарена между несколькими "view" (представлениями), в данном случае формами. Контроллер формы получает пользовательское событие от формы и обновляет модель. Модель в свою очередь уведомляет все зависящие от неё представления о том что она обновилась. В ответ на это уведомление каждое представление обновляет себя данными модели. В общем случае, да, нужен некоторый глобальный "диспетчер", который управляет созданием представлений (форм), контроллеров, моделей и установлением связей между ними.


ясно, спасибо за комментарий, у меня старое WinForms приложение, накручивать туда еще MVC|MVVM не хотелось бы, хочется проще, добавить реакцию в разных формах/классах на событие, случившееся в каком-то месте

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

Ну заведи интерфейс ICommandHandler, пусть твои формы его реализуют, а главная форма выступает диспетчером команд.
29 май 19, 12:23    [21896579]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26639
Ролг Хупин
Petro123
пропущено...
mainForm всегда доступна. Пусть и руководит событиями. А все формочки при родах подписываются и умирая отписываются.


В общем, сделал так: сделал Singleton, там живет субжект, каждая форма берет его, подписывается и реагирует.

Типа некий общий Store/State?
29 май 19, 12:24    [21896581]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3019
fkthat
Ролг Хупин
ясно, спасибо за комментарий, у меня старое WinForms приложение, накручивать туда еще MVC|MVVM не хотелось бы, хочется проще, добавить реакцию в разных формах/классах на событие, случившееся в каком-то месте

Паттерн "медиатор" ("посредник")


это полезный шаблон, но в нем каждому юзеру передается медиатор, это еще ладно, но медиатор должен знать обо всех юзерах.
Синглетон вроде как более оторван.
29 май 19, 12:25    [21896583]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3019
skyANA
Ролг Хупин
пропущено...


В общем, сделал так: сделал Singleton, там живет субжект, каждая форма берет его, подписывается и реагирует.

Типа некий общий Store/State?


да, практически - общий, глобальный Субжект
29 май 19, 12:27    [21896586]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3019
skyANA
Ролг Хупин
Есть две формы, хотелось бы сделать так:

1. в форме 1 при нажатии на клавишу выполняется запрос к SQL Server.
2. если он выполнился, то в форме1 и в форме 2 перерисовываются контролы (листбоксы, тривью)
3. если не выполнился, то в форме 1 пишется запись в текстбокс об ошибке

Вопрос: я создаю субжект в форме1, подписываюсь в форме1, там же реагирую.
Как быть в форме 2 с подпиской не теже события и реакцией на них? там ведь не виден субжект?

Собственно, хотелось бы сделать подписку и реакцию на то же событие по многим классам приложения, потом и вопрос.

Речь об https://reactiveui.net/docs/guidelines/platform/windows-forms ?


Да, но чтобы такое использовать надо много существующего кода перелопатить, чего не хотелось бы
29 май 19, 12:30    [21896593]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26639
Ролг Хупин,

я вот только одного не пойму...
ReactiveUI - это полноценный MVVM-фреймворк: bindings, routing, message bus, commands и прочее...
зачем что-то накручивать, если в нём итак всё есть?
29 май 19, 12:31    [21896595]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26639
Ролг Хупин
skyANA
пропущено...

Речь об https://reactiveui.net/docs/guidelines/platform/windows-forms ?


Да, но чтобы такое использовать надо много существующего кода перелопатить, чего не хотелось бы

понятно

тогда зачем тащить весь ReactiveUI, реализуй тупо маленькую часть из него
29 май 19, 12:32    [21896596]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / WinForms, .Net Framework Ответить