Есть консольное приложение С#, которое подключено к некоторому оборудованию, и есть веб-сайт, написанный на MVC 5, на котором нужно получать нотификации, когда консольное приложение обнаруживает проблемы с оборудованием.
Задача — нужно каким-то образом органинзовать проброс нотификаций от консольного приложения на веб-сайт.
В идеала сделать так:
1. консольное приложение поднимает серверный сокет TcpListener
2. веб-приложение подключается с помощью TcpClient и держит TCP-соединение открытым
3. когда возникает проблема с оборудованием, консольное приложение через открытое TCP-соединение нотифицирует серверную часть веб-сайта
4. для нотификации клиентской части веб-сайта можно использовать веб-сокет
Два вопроса:
I. может ли asp.net держать открытым TCP-соединение для решения п.2,3?
II. есть ли альтернатива веб-сокетам для решения п.4?
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, busybox, Вы писали:
B>>Задача — нужно каким-то образом органинзовать проброс нотификаций от консольного приложения на веб-сайт.
G>Смотри signalr
Насколько понимаю, это решит только часть задачи — взаимодействие между бэкэндном и фронтэндом сайта. Мне нужно, чтоб бэкэнд держал постоянное подключение к консольному приложению. SignalR тут тоже может помочь?
Re: Передача нотификаций из консольного приложения на сайт ASP.NET MVC
На сайте отобразить сообщение можно при помощи SignalR.
Нотифицировать сайт, из консольного прилодения можно разными вариантами.
Самый простой — дёрнуть на сайте специально предусмотренный url.
Либо вариации на тему akka.net, msmq/active mq.
Нет времени на раскачку!
Re: Передача нотификаций из консольного приложения на сайт ASP.NET MVC
Здравствуйте, busybox, Вы писали:
B>I. может ли asp.net держать открытым TCP-соединение для решения п.2,3?
Зачем постоянное соединение? Чем не подходит вариант с обычным HTTP-запросом? Он же на порядок проще.
B>II. есть ли альтернатива веб-сокетам для решения п.4?
Я б таки рекомендовал веб-сокеты. Оно довольно простое в реализации. Там только с надёжностью не очень понятно — я так понимаю, если клиент пропустил сообщение (сеть пропала на секунду), то на уровне протокола это никак понять нельзя. Нужно городить что-то своё, какую-то систему подтверждения получения сообщений со стороны клиента.
С уважением, Artem Korneev.
Re[3]: Передача нотификаций из консольного приложения на сайт ASP.NET MVC
Здравствуйте, busybox, Вы писали:
B>>>Задача — нужно каким-то образом органинзовать проброс нотификаций от консольного приложения на веб-сайт. G>>Смотри signalr B>Насколько понимаю, это решит только часть задачи — взаимодействие между бэкэндном и фронтэндом сайта. Мне нужно, чтоб бэкэнд держал постоянное подключение к консольному приложению. SignalR тут тоже может помочь?
Неправильно понимаешь. Ты делаешь SignalR хаб. Подключаешься к нему из браузера и из консольного приложения. Консолька дергает метод, который шлет всем клиентам оповещения.
Re[4]: Передача нотификаций из консольного приложения на сайт ASP.NET MVC
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, busybox, Вы писали:
B>>>>Задача — нужно каким-то образом органинзовать проброс нотификаций от консольного приложения на веб-сайт. G>>>Смотри signalr B>>Насколько понимаю, это решит только часть задачи — взаимодействие между бэкэндном и фронтэндом сайта. Мне нужно, чтоб бэкэнд держал постоянное подключение к консольному приложению. SignalR тут тоже может помочь? G>Неправильно понимаешь. Ты делаешь SignalR хаб. Подключаешься к нему из браузера и из консольного приложения. Консолька дергает метод, который шлет всем клиентам оповещения.