服务器与客户端应用程序之间的推送通知机制

12

我正在使用C#开发一个桌面应用程序,它通过WCF Web服务与服务器通信。这是一种同步应用程序,也就是说,当我在客户端应用程序上进行一些更改时,我应该立即更新服务器(可以使用服务调用轻松实现),但是此机制还应提供反向同步,即服务器上的更改必须立即应用于多个客户端。我知道我可以对服务器进行轮询,但这看起来对我不太整洁,而且我听说过双向服务,但我不确定是否可以使用它来实现此机制。

我希望对此问题提出一些建议。谢谢事先。


1
请查看 http://signalr.net/,使用浏览器控件可以满足您的要求...希望这能帮到您... - MANISHDAN LANGA
3
WCF双工服务可以满足您的需求。请查看此处:http://www.codeproject.com/Articles/491844/A-Beginners-Guide-to-Duplex-WCF - Dragomir Răzvan
你确定SignalR.net符合我的要求吗?因为我正在编写一个桌面应用程序,但这似乎只适用于Web?我错了吗? - Tolga Evcimen
1
这里有一篇stackoverflow文章描述了相同的内容:https://dev59.com/4kfRa4cB1Zd3GeqP5gj8 - Kai Hartmann
4个回答

7
您需要实现发布与订阅设计。您可以使用net-tcp协议在WCF中连接双工客户端和服务器。
您可以从这里下载一种相当不错的实现:http://www.idesign.net/Downloads/GetDownload/2032 并且您会在这里找到一篇很好的文章:here
祝好!

2

tolga,你可以使用SignalR和WinForms结合使用,服务端可以是ASP.NET或一个独立的Windows应用程序。


谢谢,伙计。我会看一下 SignalR 这个东西的。我听说过它,但我认为它只适用于 Web 应用程序。如果它也支持 WinForms,那么它确实可以成为双工服务的替代方案。 - Tolga Evcimen

2
PushSharp:一个用于向客户端(基本上是移动设备,但也可以是自定义设备)发送推送通知的服务器端库!你可以通过谷歌搜索一些关于如何使用PushSharp的教程。

0
        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();
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接