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

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

Откуда: Чебаркуль
Сообщений: 3019
Petro123
Ролг Хупин
Да, но чтобы такое использовать надо много существующего кода перелопатить, чего не хотелось бы
то есть твоя идея притащить react на банальное событие?
Смешно.


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

Откуда: Зеленоград
Сообщений: 26639
Петя-фильтр в действии:

К сообщению приложен файл. Размер - 11Kb
29 май 19, 13:00    [21896647]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
Petro123
Member

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

Откуда:
Сообщений: 5104
skyANA
Петя-фильтр в действии:

Юзер-скрипты рулят :)
29 май 19, 13:07    [21896659]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Сон Веры Павловны,
Фильтруйте. Чо вы так возбудились).
Значит правда глаза уколола).
29 май 19, 13:09    [21896663]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Ролг Хупин
Почему бы и нет?
если вы прочитаете противопоказания к лекарству реактивному программированию, то увидите что ПРОТИВОПОКАЗАНО легаси проектам. Все будет переписано с нуля.
29 май 19, 14:10    [21896717]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3019
Petro123
Ролг Хупин
Почему бы и нет?
если вы прочитаете противопоказания к лекарству реактивному программированию, то увидите что ПРОТИВОПОКАЗАНО легаси проектам. Все будет переписано с нуля.


это интересно, где такое почитать?
29 май 19, 14:34    [21896744]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Ролг Хупин
это интересно, где такое почитать?
ну, в явном виде встречу - дам.
А по логике, вот:
автор
Есть два варианта получить данные. Можно пассивным способом, это когда мы сами делаем запрос на получение и нам приходит ответ (вариант pull). И есть второй вариант, когда данные сами нас уведомляют об изменениях и выталкивают данные нам (вариант push). Реактивное приложение, это когда приложение само извещает нас об изменении своего состояния. Не мы делаем запрос и проверяем, а не изменилось ли там что-то, а приложение само нам сигнализирует. Ну и конечно эти события, эти сигналы мы соответственно можем обрабатывать.

Это разные парадигмы программирования.
При реактивном у тебя поток или стрим с данными. А не запросы к базе "изменилось ли что"?
Две парадигмы в одном приложении это просто нонсенс.
29 май 19, 15:24    [21896808]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4794
skyANA
Петя-фильтр в действии:

Скрыть просто, а вот скажем затроить его сообщения слабо? :)
29 май 19, 16:07    [21896943]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
Petro123
Member

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

Откуда: Москва
Сообщений: 4794
Petro123,
ага
29 май 19, 16:27    [21896994]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
fkthat
Member

Откуда:
Сообщений: 1164
ЕвгенийВ
Скрыть просто, а вот скажем затроить его сообщения слабо? :)

Со скоростью размножения его сообщений в этом нет нужды.
29 май 19, 16:33    [21897007]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
Petro123
Member

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

Откуда: Чебаркуль
Сообщений: 3019
ЕвгенийВ
skyANA
Петя-фильтр в действии:

Скрыть просто, а вот скажем затроить его сообщения слабо? :)


А вот скрипт бы - Петя-собеседник, т.е. Петро пишет, а этот ему отвечает типа: о, йез!
и т.д.
29 май 19, 17:35    [21897112]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Ролг Хупин,
Угу.
Вы написали Г. код и не сумели событи отправить из А в Б.
А вам надо писать: "хороший мальчик)))
29 май 19, 17:44    [21897118]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
Petro123
Member

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

Откуда: Зеленоград
Сообщений: 26639
ЕвгенийВ
skyANA
Петя-фильтр в действии:

Скрыть просто, а вот скажем затроить его сообщения слабо? :)

Минутку, вуаля!

К сообщению приложен файл. Размер - 28Kb
29 май 19, 19:24    [21897168]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
fkthat
Member

Откуда:
Сообщений: 1164
Картинка с другого сайта.
29 май 19, 21:52    [21897236]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4794
skyANA,
а как сделал то? :)
30 май 19, 09:40    [21897475]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 2076
ЕвгенийВ
skyANA,
а как сделал то? :)
Молча
30 май 19, 10:38    [21897510]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4794
Дмитрий Мух
Молча

Все понятно. Фотошоп.
30 май 19, 11:06    [21897534]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26639
ЕвгенийВ
Дмитрий Мух
Молча

Все понятно. Фотошоп.

Ни фига не угадал. Chrome developer tools + FastStone Capture

Если тебе нужен скрипт, чтобы утраивать Петины сообщения, так и скажи.
Я вполне лоялен к таким странным желаниям.
30 май 19, 14:16    [21897710]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26639
ЕвгенийВ,

лови:
// ==UserScript==
// @name         Petro123x3
// @namespace    https://www.sql.ru/
// @version      0.1
// @description  Triples all Petro123 messages on a page!
// @author       skyANA
// @match        https://www.sql.ru/forum/*
// ==/UserScript==

(function() {
    'use strict';

    var messages = document.querySelectorAll('table.af-userid-27411');

    if (messages) {
        messages.forEach(m => [0,1].forEach(_ => m.parentNode.insertBefore(m.cloneNode(true), m)));
    }
})();

Жду скриншота, подтверждающего то, что ты его используешь Картинка с другого сайта.
30 май 19, 14:41    [21897725]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4794
skyANA
Жду скриншота, подтверждающего то, что ты его используешь Картинка с другого сайта.

Я не умею.
30 май 19, 15:04    [21897743]     Ответить | Цитировать Сообщить модератору
 Re: Reactive: как реализовать такую обработку?  [new]
WebPrj
Member

Откуда:
Сообщений: 376
Модератор,
Чистить топик кто будет?
Кто его или их вырастил, тот за ними и подчищает.
30 май 19, 16:57    [21897872]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3      [все]
Все форумы / WinForms, .Net Framework Ответить