powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NETMVC подписка на события
25 сообщений из 36, страница 1 из 2
ASP.NETMVC подписка на события
    #39477415
RAVen42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую, уважаемые участники форума!

Есть задача, подписаться на события класса.
Класс генерирует раз в N секунд событие, нужно подписаться на это событие и отправить результат на фронт.

Как это сделать в десктопе понятно.
Как это сделать в ASP.NET MVC ?
Жизненный цикл ASP.NET MVC не позволяет этого сделать, так же как в десктопе.
Или возможно я чего-то не знаю?
...
Рейтинг: 0 / 0
ASP.NETMVC подписка на события
    #39477419
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RAVen42,

ну почему ж можно к примеру лонг пулинг сделать или веб сокеты а можно через signalR. просто в вебе чуть по другому
...
Рейтинг: 0 / 0
ASP.NETMVC подписка на события
    #39477423
RAVen42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
handmadeFromRuRAVen42,

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

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

Если в десктопе жизненный цикл прерывается когда программа закрыта, то в WEB жизненный цикл начинается с запроса со стороны клиента и заканчивается после ответа на запрос.
Как заставить метод отреагировать на событие другого класса, в промежутках между запросами со стороны клиента?
...
Рейтинг: 0 / 0
ASP.NETMVC подписка на события
    #39477446
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RAVen42, Вы путаете цикл обработки запроса со всей программой.
Пока живет w3wp процесс, то можете реагировать на свои события сколько угодно.

Задачу опишите, а не проблемы своей неудачной реализации.
...
Рейтинг: 0 / 0
ASP.NETMVC подписка на события
    #39477496
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RAVen42Класс генерирует раз в N секунд событие, нужно подписаться на это событие и отправить результат на фронт.

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

Сделай хендлера для нужного события, пусть шина находит подходящие хенделы и отдаёт событие им.

Реши вопрос с транспортом. Например, через SignalR.


RAVen42Если в десктопе жизненный цикл прерывается когда программа закрыта, то в WEB жизненный цикл начинается с запроса со стороны клиента и заканчивается после ответа на запрос.
Как заставить метод отреагировать на событие другого класса, в промежутках между запросами со стороны клиента?

Не так. Жизненный цикл обработки запроса и жизненный цикл приложения — разные вещи. Веб приложение стартует с первого запроса, или через горячий старт. А завершается, когда происходит Recycling пула, инициируемый IIS-ом.
...
Рейтинг: 0 / 0
ASP.NETMVC подписка на события
    #39477541
RAVen42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANARAVen42, Вы путаете цикл обработки запроса со всей программой.
Пока живет w3wp процесс, то можете реагировать на свои события сколько угодно.

Задачу опишите, а не проблемы своей неудачной реализации.

skyANA Есть библиотека, сторонняя не моя, эта библиотека с периодичностью генерирует события.
Мне нужно подписаться на эти события. И при очередном, событие отправить информацию клиенту.
...
Рейтинг: 0 / 0
ASP.NETMVC подписка на события
    #39477544
RAVen42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt, вопросов с транспортом нет, нет вопросов и с реализацией всего описанного, в десктопном приложении.
Я не могу понять как это реализовать в MVC.
...
Рейтинг: 0 / 0
ASP.NETMVC подписка на события
    #39477564
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RAVen42,
такой пример подойдет?
http://www.csharpcity.com/2016/consuming-rabbitmq-messages-in-asp-net-mvc/
...
Рейтинг: 0 / 0
ASP.NETMVC подписка на события
    #39477571
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
соответственно чтоб канал типо signalr заюзать то( ну или что ты там решишь)
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
consumer.Received += (model, ea) =>
            {
                var body = ea.Body;
                var message = Encoding.UTF8.GetString(body);
                // Display message with signalr
                var context = GlobalHost.ConnectionManager.GetHubContext<SomeHub>();
                 context.Clients.All.Notification(body)
            };
...
Рейтинг: 0 / 0
ASP.NETMVC подписка на события
    #39477588
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RAVen42Я не могу понять как это реализовать в MVC.

А чё, MVC другая планета? В чём проблема создать объект статического класса?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
public class EventReceiver
{
    private static Lazy<EventReceiver> _instance =
       new Lazy<EventReceiver>(() => new EventReceiver());

    public static EventReceiver Instance 
   { 
      get  { return _instance.Value; }
   }

   public void Publish(IMessage message)
   {
         /// блаблабла
   }
}

Везде и всегда тебе будет доступно EventReceiver.Instance.Publish(...)



Не стоит тупо копировать этот код, я просто привёл банальный пример, для размышления. Объект EventReceiver.Instance будет жить, пока приложение живо. А приложение умрёт либо когда его грохнет IIS, либо из-за неактивности может помереть. Это уже совсем другая история. Для надёжности и персистентности можешь использовать RabbitMQ какой-нибудь, тогда пофиг вообще будет на работу приложения.
...
Рейтинг: 0 / 0
ASP.NETMVC подписка на события
    #39477593
RAVen42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
handmadeFromRu,

Как вариант, можно и rabbit использовать, попробую.
...
Рейтинг: 0 / 0
ASP.NETMVC подписка на события
    #39477597
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RAVen42,
ну рабит я привел для примера подписки и как потом отослать клиент, а не то что только через него делать, а как ты реализуешь тебе решать. надеюсь помогли.
...
Рейтинг: 0 / 0
ASP.NETMVC подписка на события
    #39477602
RAVen42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt, Не совсем другая конечно, но НЕМНОГО всё таки отличается.
IIS грохнет процесс через 15 минут (если не ошибаюсь).

Ок. реализую объект. А дальше?
Реализовать в этом статическом классе подписку на события ?
...
Рейтинг: 0 / 0
ASP.NETMVC подписка на события
    #39477610
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RAVen42IIS грохнет процесс через 15 минут (если не ошибаюсь).


мм почему 15 а не 5 или 60 ?) нет ты тут ошибаешься, можно настроить в иис чтоб не выгружался или сайт сам себя пингует, или сервис варианты есть. + тригеры перегрузки по ошибкам и прочее.
собственно поэтому и рекомендуют делать фоновые задачи на сервисах или еще чем то, но никто не запрещает делать это внутри асп, просто иногда может что то потеряться изза ребута и тут вопрос критичности.

хвост тебе говорит что тебе надо твой объект сделать статическим/сигнлетом или в global.asax его как глобальную переменную инициализировать со старом приложения и там ж подписываешься на события. главное чтоб он висел в памяти в рамках вей жизни приложения.
...
Рейтинг: 0 / 0
ASP.NETMVC подписка на события
    #39477718
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RAVen42skyANARAVen42, Вы путаете цикл обработки запроса со всей программой.
Пока живет w3wp процесс, то можете реагировать на свои события сколько угодно.

Задачу опишите, а не проблемы своей неудачной реализации.

skyANA Есть библиотека, сторонняя не моя, эта библиотека с периодичностью генерирует события.
Мне нужно подписаться на эти события. И при очередном, событие отправить информацию клиенту.
Хм, ну вот есть библиотека Quartz.NET, что с периодичностью выполняет таски.

Похоже на Ваш случай? Если да, то идём в гугл: Quartz.NET + ASP.NET MVC .
...
Рейтинг: 0 / 0
ASP.NETMVC подписка на события
    #39477940
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RAVen42 hVostt, Не совсем другая конечно, но НЕМНОГО всё таки отличается.
IIS грохнет процесс через 15 минут (если не ошибаюсь).

Ок. реализую объект. А дальше?
Реализовать в этом статическом классе подписку на события ?

Что дальше решать вам. Я только показал, что ASP.NET это не какой-то другой волшебный мир, в котором всё живёт только в процессе выполнения запроса. Есть Quartz.NET, есть HangFire, есть таски,... выбирай что душе угодно.
...
Рейтинг: 0 / 0
ASP.NETMVC подписка на события
    #39477954
RAVen42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA , у меня немного другая тема.
Сторонняя библиотека самописная, используется как для десктопа так и для web. В десктопе всё ОК.


hVostt не могу я использовать, ни Quartz.NET, ни HangFire, ни таски.
Только ту библиотеку что есть.

Сделал статический класс ,как писали ранее, инициализировал, подписался на события, но они почему то не срабатывают. Почему ни как не могу понять.
...
Рейтинг: 0 / 0
ASP.NETMVC подписка на события
    #39477955
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RAVen42Сделал статический класс ,как писали ранее, инициализировал, подписался на события, но они почему то не срабатывают. Почему ни как не могу понять.

Как именно подписался? Где?
...
Рейтинг: 0 / 0
ASP.NETMVC подписка на события
    #39477966
RAVen42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt,
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
....
 public class TEvents

    {        
        private static TVM _m;        
       
        public static TrVM GetInstance()
        {
            TCore.Tr t = new Tr(vTM);
            _m = new TVM (t);            
            t.OnRenamed += new ItemEventHandler(t_OnRenamed);
            return _m;
        }

        static void t_OnRenamed(object source, ItemEventArgs e)
        {
            //Здесь логика при срабатывании события
        }
....
...
Рейтинг: 0 / 0
ASP.NETMVC подписка на события
    #39477971
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RAVen42,

У тебя GetInstance() всегда возвращает новый объект, и старый при этом отправляется на свалку.
Весь смысл статики смылся в одно место.
...
Рейтинг: 0 / 0
ASP.NETMVC подписка на события
    #39477973
RAVen42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt,

Почему всегда? я же вызываю GetInstance() один раз.
...
Рейтинг: 0 / 0
ASP.NETMVC подписка на события
    #39477986
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RAVen42hVostt,

Почему всегда? я же вызываю GetInstance() один раз.

GetInstance() у тебя публичный метод. Значит может быть вызван сколько угодно раз откуда угодно.

Ну да ладно, лирика. Попробуй в отладке погоняй, логи прикрути, проверь работу компонента изолировано, в тесте, например. Я же не могу знать, чего это за компонент и как он работает.
...
Рейтинг: 0 / 0
ASP.NETMVC подписка на события
    #39478236
RAVen42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt,

Ради эксперимента сделал десктопное приложение с статическим классом и web. Десктоп всё отлично работает web не реагирует на события.

Десктоп:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 public class TEvents3 : TEvents
    {

        public static TEvents3 Instance
        {
            get { return new TEvents3(); }
        }
       
    }
}

 private void Form1_Load(object sender, EventArgs e)
 {
   var t = TEvents3.Instance;
 }




WEB:

Код: c#
1.
2.
3.
4.
protected void Application_Start()
{
   var t = TEvents3.Instance;
}



Ни чего не понимаю, почему в WEB не работает ????
...
Рейтинг: 0 / 0
ASP.NETMVC подписка на события
    #39478247
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RAVen42Ни чего не понимаю, почему в WEB не работает ????

Видимо проблема с окружением, в котором работает веб.
...
Рейтинг: 0 / 0
ASP.NETMVC подписка на события
    #39478281
RAVen42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt,
Интересно, а почему на просторах интернетов, нет инфы про события в MVC в том контексте, что мне нужно. Есть много всего про Rabbit и им подобное, и ни слова по моей задаче??
Для десктопа же вагоны инфы.
Может быть всё таки с WEB что то не так? в плане events'ов ?

И еще, мысли в слух, если я инициализирую переменную в global.asax - то эта переменная будет доступна всем пользователям сайта? так ?
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NETMVC подписка на события
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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