Служба 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 довольно прост в использовании, писать свой собственный код может быть быстрее, чем использовать другие.