Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
ASP.NETMVC подписка на события
|
|||
|---|---|---|---|
|
#18+
Приветствую, уважаемые участники форума! Есть задача, подписаться на события класса. Класс генерирует раз в N секунд событие, нужно подписаться на это событие и отправить результат на фронт. Как это сделать в десктопе понятно. Как это сделать в ASP.NET MVC ? Жизненный цикл ASP.NET MVC не позволяет этого сделать, так же как в десктопе. Или возможно я чего-то не знаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 07:02 |
|
||
|
ASP.NETMVC подписка на события
|
|||
|---|---|---|---|
|
#18+
RAVen42, ну почему ж можно к примеру лонг пулинг сделать или веб сокеты а можно через signalR. просто в вебе чуть по другому ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 08:09 |
|
||
|
ASP.NETMVC подписка на события
|
|||
|---|---|---|---|
|
#18+
handmadeFromRuRAVen42, ну почему ж можно к примеру лонг пулинг сделать или веб сокеты а можно через signalR. просто в вебе чуть по другому Меня интересует не вопрос транспорта, в этом нет проблем, а вопрос подписки на события. Если в десктопе жизненный цикл прерывается когда программа закрыта, то в WEB жизненный цикл начинается с запроса со стороны клиента и заканчивается после ответа на запрос. Как заставить метод отреагировать на событие другого класса, в промежутках между запросами со стороны клиента? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 08:18 |
|
||
|
ASP.NETMVC подписка на события
|
|||
|---|---|---|---|
|
#18+
RAVen42, Вы путаете цикл обработки запроса со всей программой. Пока живет w3wp процесс, то можете реагировать на свои события сколько угодно. Задачу опишите, а не проблемы своей неудачной реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 09:13 |
|
||
|
ASP.NETMVC подписка на события
|
|||
|---|---|---|---|
|
#18+
RAVen42Класс генерирует раз в N секунд событие, нужно подписаться на это событие и отправить результат на фронт. Сделай шину событий, представленную одним постоянно живущим объектом, и посылай события туда, классу передавай шину для генерации событий. Сделай хендлера для нужного события, пусть шина находит подходящие хенделы и отдаёт событие им. Реши вопрос с транспортом. Например, через SignalR. RAVen42Если в десктопе жизненный цикл прерывается когда программа закрыта, то в WEB жизненный цикл начинается с запроса со стороны клиента и заканчивается после ответа на запрос. Как заставить метод отреагировать на событие другого класса, в промежутках между запросами со стороны клиента? Не так. Жизненный цикл обработки запроса и жизненный цикл приложения — разные вещи. Веб приложение стартует с первого запроса, или через горячий старт. А завершается, когда происходит Recycling пула, инициируемый IIS-ом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 10:09 |
|
||
|
ASP.NETMVC подписка на события
|
|||
|---|---|---|---|
|
#18+
skyANARAVen42, Вы путаете цикл обработки запроса со всей программой. Пока живет w3wp процесс, то можете реагировать на свои события сколько угодно. Задачу опишите, а не проблемы своей неудачной реализации. skyANA Есть библиотека, сторонняя не моя, эта библиотека с периодичностью генерирует события. Мне нужно подписаться на эти события. И при очередном, событие отправить информацию клиенту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 10:53 |
|
||
|
ASP.NETMVC подписка на события
|
|||
|---|---|---|---|
|
#18+
hVostt, вопросов с транспортом нет, нет вопросов и с реализацией всего описанного, в десктопном приложении. Я не могу понять как это реализовать в MVC. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 10:57 |
|
||
|
ASP.NETMVC подписка на события
|
|||
|---|---|---|---|
|
#18+
RAVen42, такой пример подойдет? http://www.csharpcity.com/2016/consuming-rabbitmq-messages-in-asp-net-mvc/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 11:20 |
|
||
|
ASP.NETMVC подписка на события
|
|||
|---|---|---|---|
|
#18+
соответственно чтоб канал типо signalr заюзать то( ну или что ты там решишь) Код: c# 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 11:24 |
|
||
|
ASP.NETMVC подписка на события
|
|||
|---|---|---|---|
|
#18+
RAVen42Я не могу понять как это реализовать в MVC. А чё, MVC другая планета? В чём проблема создать объект статического класса? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Не стоит тупо копировать этот код, я просто привёл банальный пример, для размышления. Объект EventReceiver.Instance будет жить, пока приложение живо. А приложение умрёт либо когда его грохнет IIS, либо из-за неактивности может помереть. Это уже совсем другая история. Для надёжности и персистентности можешь использовать RabbitMQ какой-нибудь, тогда пофиг вообще будет на работу приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 11:40 |
|
||
|
ASP.NETMVC подписка на события
|
|||
|---|---|---|---|
|
#18+
handmadeFromRu, Как вариант, можно и rabbit использовать, попробую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 11:44 |
|
||
|
ASP.NETMVC подписка на события
|
|||
|---|---|---|---|
|
#18+
RAVen42, ну рабит я привел для примера подписки и как потом отослать клиент, а не то что только через него делать, а как ты реализуешь тебе решать. надеюсь помогли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 11:50 |
|
||
|
ASP.NETMVC подписка на события
|
|||
|---|---|---|---|
|
#18+
hVostt, Не совсем другая конечно, но НЕМНОГО всё таки отличается. IIS грохнет процесс через 15 минут (если не ошибаюсь). Ок. реализую объект. А дальше? Реализовать в этом статическом классе подписку на события ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 11:57 |
|
||
|
ASP.NETMVC подписка на события
|
|||
|---|---|---|---|
|
#18+
RAVen42IIS грохнет процесс через 15 минут (если не ошибаюсь). мм почему 15 а не 5 или 60 ?) нет ты тут ошибаешься, можно настроить в иис чтоб не выгружался или сайт сам себя пингует, или сервис варианты есть. + тригеры перегрузки по ошибкам и прочее. собственно поэтому и рекомендуют делать фоновые задачи на сервисах или еще чем то, но никто не запрещает делать это внутри асп, просто иногда может что то потеряться изза ребута и тут вопрос критичности. хвост тебе говорит что тебе надо твой объект сделать статическим/сигнлетом или в global.asax его как глобальную переменную инициализировать со старом приложения и там ж подписываешься на события. главное чтоб он висел в памяти в рамках вей жизни приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 12:07 |
|
||
|
ASP.NETMVC подписка на события
|
|||
|---|---|---|---|
|
#18+
RAVen42skyANARAVen42, Вы путаете цикл обработки запроса со всей программой. Пока живет w3wp процесс, то можете реагировать на свои события сколько угодно. Задачу опишите, а не проблемы своей неудачной реализации. skyANA Есть библиотека, сторонняя не моя, эта библиотека с периодичностью генерирует события. Мне нужно подписаться на эти события. И при очередном, событие отправить информацию клиенту. Хм, ну вот есть библиотека Quartz.NET, что с периодичностью выполняет таски. Похоже на Ваш случай? Если да, то идём в гугл: Quartz.NET + ASP.NET MVC . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 14:15 |
|
||
|
ASP.NETMVC подписка на события
|
|||
|---|---|---|---|
|
#18+
RAVen42 hVostt, Не совсем другая конечно, но НЕМНОГО всё таки отличается. IIS грохнет процесс через 15 минут (если не ошибаюсь). Ок. реализую объект. А дальше? Реализовать в этом статическом классе подписку на события ? Что дальше решать вам. Я только показал, что ASP.NET это не какой-то другой волшебный мир, в котором всё живёт только в процессе выполнения запроса. Есть Quartz.NET, есть HangFire, есть таски,... выбирай что душе угодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 18:56 |
|
||
|
ASP.NETMVC подписка на события
|
|||
|---|---|---|---|
|
#18+
skyANA , у меня немного другая тема. Сторонняя библиотека самописная, используется как для десктопа так и для web. В десктопе всё ОК. hVostt не могу я использовать, ни Quartz.NET, ни HangFire, ни таски. Только ту библиотеку что есть. Сделал статический класс ,как писали ранее, инициализировал, подписался на события, но они почему то не срабатывают. Почему ни как не могу понять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 19:11 |
|
||
|
ASP.NETMVC подписка на события
|
|||
|---|---|---|---|
|
#18+
RAVen42Сделал статический класс ,как писали ранее, инициализировал, подписался на события, но они почему то не срабатывают. Почему ни как не могу понять. Как именно подписался? Где? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 19:13 |
|
||
|
ASP.NETMVC подписка на события
|
|||
|---|---|---|---|
|
#18+
hVostt, Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 19:26 |
|
||
|
ASP.NETMVC подписка на события
|
|||
|---|---|---|---|
|
#18+
RAVen42, У тебя GetInstance() всегда возвращает новый объект, и старый при этом отправляется на свалку. Весь смысл статики смылся в одно место. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 19:45 |
|
||
|
ASP.NETMVC подписка на события
|
|||
|---|---|---|---|
|
#18+
hVostt, Почему всегда? я же вызываю GetInstance() один раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 19:49 |
|
||
|
ASP.NETMVC подписка на события
|
|||
|---|---|---|---|
|
#18+
RAVen42hVostt, Почему всегда? я же вызываю GetInstance() один раз. GetInstance() у тебя публичный метод. Значит может быть вызван сколько угодно раз откуда угодно. Ну да ладно, лирика. Попробуй в отладке погоняй, логи прикрути, проверь работу компонента изолировано, в тесте, например. Я же не могу знать, чего это за компонент и как он работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 20:08 |
|
||
|
ASP.NETMVC подписка на события
|
|||
|---|---|---|---|
|
#18+
hVostt, Ради эксперимента сделал десктопное приложение с статическим классом и web. Десктоп всё отлично работает web не реагирует на события. Десктоп: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. WEB: Код: c# 1. 2. 3. 4. Ни чего не понимаю, почему в WEB не работает ???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2017, 10:36 |
|
||
|
ASP.NETMVC подписка на события
|
|||
|---|---|---|---|
|
#18+
RAVen42Ни чего не понимаю, почему в WEB не работает ???? Видимо проблема с окружением, в котором работает веб. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2017, 10:47 |
|
||
|
ASP.NETMVC подписка на события
|
|||
|---|---|---|---|
|
#18+
hVostt, Интересно, а почему на просторах интернетов, нет инфы про события в MVC в том контексте, что мне нужно. Есть много всего про Rabbit и им подобное, и ни слова по моей задаче?? Для десктопа же вагоны инфы. Может быть всё таки с WEB что то не так? в плане events'ов ? И еще, мысли в слух, если я инициализирую переменную в global.asax - то эта переменная будет доступна всем пользователям сайта? так ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2017, 11:16 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=39478247&tid=1355494]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
26ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 321ms |

| 0 / 0 |
