it-swarm.com.ru

Механизм push-уведомлений между сервером и клиентским приложением

Я разрабатываю настольное приложение с использованием C #, которое взаимодействует с сервером через веб-службу WCF. Предполагается, что это своего рода приложение для синхронизации. Это означает, что когда я делаю некоторые изменения в клиентском приложении, я должен также немедленно обновить сервер (это легко с помощью сервисных вызовов), но и этот механизм должен быть предоставлен наоборот, изменение на сервере должно быть немедленно применено к нескольким клиентам. Я знаю, что могу опрашивать свой сервер, но мне это не кажется опрятным, а также я слышал о дуплексных службах, но я не уверен, что смогу использовать его для реализации этого механизма.

Я прошу несколько предложений по этому вопросу. Заранее спасибо.

12
Tolga Evcimen

Вам необходимо реализовать дизайн публикации и подписки. В WCF вы можете использовать протокол net-tcp для подключения к дуплексным клиентам и серверу.

Вы можете скачать неплохую реализацию на http://www.idesign.net/Downloads/GetDownload/2032

И вы найдете хорошую статью здесь .

С уважением

7
Brice2Paris

tolga, Вы можете использовать winforms с signalR, на стороне сервера может быть asp.net или отдельное приложение для Windows.

2
Serkan Polat

PushSharp : серверная библиотека для отправки Push-уведомлений клиентам (клиенты в основном являются мобильными устройствами - но также могут быть и пользовательскими)! Вы также можете получить руководство по использованию PushSharp.

1
marifrahman
        var webAddr = "https://fcm.googleapis.com/fcm/send";

        var httpWebRequest = (HttpWebRequest)WebRequest.Create(webAddr);
        httpWebRequest.ContentType = "application/json";
        httpWebRequest.Headers.Add("Authorization:key=YOUR_SERVER_KEY");
        httpWebRequest.Method = "POST";

        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {
            string json = "{\"to\": \"/topics/news\",\"notification\": {\"body\": \"New news added in application!\",\"title\":\"" + Your_Notif_Title+ "\",}}";
            streamWriter.Write(json);
            streamWriter.Flush();
        }

        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            result = streamReader.ReadToEnd();
        }
0
Nitin Suryawanshi