Служба Windows С#, подписанная на веб-сервер
Я работаю на веб-сайте интрасети.
Все пользователи должны получать всплывающие окна с веб-сервера каждый раз, когда на веб-сайте размещается что-то новое.
Я искал, чтобы сделать свой собственный сервис Windows, который будет подписаться на сервер (используя что-то вроде SignalR), а затем эта служба будет показывать простое всплывающее окно, уведомляющее пользователя, когда сервер отправляет сообщение.
Но вместо того, чтобы строить это самостоятельно, мне было интересно, если что-то вроде этого еще не существует. Я немного оглядывался, но ничего не мог найти.
Я в основном веб-разработчик и никогда не создавал службу Windows или настольное приложение С#, поэтому я бы предпочел использовать какой-то существующий код.
Кто-нибудь знает об этом?
Ответы
Ответ 1
Для создания службы Windows попробуйте Top Shelf: http://docs.topshelf-project.com/en/latest/
В общем, это легко, как один, два, три...
public class TownCrier
{
readonly Timer _timer;
public TownCrier()
{
_timer = new Timer(1000) {AutoReset = true};
_timer.Elapsed += (sender, eventArgs) => Console.WriteLine("It is {0} and all is well", DateTime.Now);
}
public void Start() { _timer.Start(); }
public void Stop() { _timer.Stop(); }
}
public class Program
{
public static void Main()
{
HostFactory.Run(x =>
{
x.Service<TownCrier>(s =>
{
s.ConstructUsing(name=> new TownCrier());
s.WhenStarted(tc => tc.Start());
s.WhenStopped(tc => tc.Stop());
});
x.RunAsLocalSystem();
x.SetDescription("Sample Topshelf Host");
x.SetDisplayName("Stuff");
x.SetServiceName("Stuff");
});
}
}
Ответ 2
Я работаю на веб-сайте интрасети. Все пользователи должны получить рабочий стол всплывающие окна с веб-сервера, когда что-то новое публикуется на сайт.
с использованием таймера не является хорошей методикой здесь, поскольку обновления не гарантируются в конкретном интервале или сеансе. Но вы можете принять это как опцию, основанную на необходимости.
Я искал свой собственный сервис Windows, который подписался бы на сервер (используя что-то вроде SignalR), а затем это служба будет показывать простое всплывающее окно, уведомляющее пользователя, когда сервер отправляет сообщение.
Да точно как приложение чата, в котором часто появлялись сообщения и пользователи. ASP.NET SignalR - это библиотека для разработчиков ASP.NET, которая упрощает процесс добавления веб-функций в реальном времени к приложениям. Веб-функциональность в режиме реального времени - это возможность мгновенного доступа к содержимому сервера для подключенных клиентов, поскольку он становится доступным, а не для того, чтобы сервер ожидал, что клиент запросит новые данные.
![enter image description here]()
Но вместо того, чтобы строить это сам, мне было интересно, если что-то вроде это уже не там. Я немного оглядывался, но ничего не мог найти.
Ссылки для SignalR Link1, Link2, Link3
![enter image description here]()
Я в основном веб-разработчик и никогда не создавал службы Windows или С#, поэтому я бы предпочел использовать какой-то существующий код.
Выполнение C#
рабочего стола или службы Windows не так уж важно, поскольку вы уже являетесь программистом . Некоторые существующие коды для всплывающих окон появляются здесь.
Ответ 3
для сервера signalr Server, я бы предложил вам использовать winform С#.
для клиентской стороны, вы можете использовать JavaScript внутри любого html файла для "получения" сообщения с сервера signalr, тогда вы можете всплывать предупреждающее сообщение или все, что захотите, однако в этом случае вы должны убедиться, что пользователи просматривают этот html файл в браузере, иначе сообщение не будет получено.
нет готового кода, так как signalr поддерживает разные типы серверов, а также различные типы клиентов, я считаю, что вам нужно написать свой собственный код. Фактически Signalr довольно прост в использовании, писать свой собственный код может быть быстрее, чем использовать другие.
Ответ 4
Этот вопрос: Приложение SignalR Chat в WinForm с удаленными клиентами выглядит так, как будто это может указывать на правильное направление. В частности, эта статья:
https://damienbod.wordpress.com/2013/11/01/signalr-messaging-with-console-server-and-client-web-client-wpf-client/
Ответ 5
вы могли бы использовать DesktopToast: https://github.com/emoacht/DesktopToast
или Growl: http://www.growlforwindows.com/