Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SignalR vs WCF将数据推送到客户端?_Wcf_Push Notification_Signalr - Fatal编程技术网

使用SignalR vs WCF将数据推送到客户端?

使用SignalR vs WCF将数据推送到客户端?,wcf,push-notification,signalr,Wcf,Push Notification,Signalr,我有一个WPF客户机-服务器应用程序。现在我有了这样的场景:客户端将连接到服务器,服务器将定期将数据推送到客户端。我有点困惑,我应该选择什么技术和方式通知客户 我认为signar最适合于web应用程序,我有桌面应用程序。使用WCF服务,我们可以通过双工通道和回调实现推送通知。那么,您能告诉我使用信号机或WCF服务的优缺点吗 谢谢信号器不仅仅是关于网络的。signar服务器端代码不关心其客户机的技术,您只需要在客户机端有实现者 如果我们将pusing数据隔离到客户端,我强烈推荐Signal,因为它

我有一个WPF客户机-服务器应用程序。现在我有了这样的场景:客户端将连接到服务器,服务器将定期将数据推送到客户端。我有点困惑,我应该选择什么技术和方式通知客户

我认为signar最适合于web应用程序,我有桌面应用程序。使用WCF服务,我们可以通过双工通道和回调实现推送通知。那么,您能告诉我使用信号机或WCF服务的优缺点吗


谢谢

信号器不仅仅是关于网络的。signar服务器端代码不关心其客户机的技术,您只需要在客户机端有实现者

如果我们将pusing数据隔离到客户端,我强烈推荐Signal,因为它在这方面比WCF简单得多,我也有WCF的问题,我想你自己也有一些问题。 我找到了一个简单的控制台/web应用程序示例

一般来说,双工WCF和使用回调对我来说似乎非常混乱,服务器端有很多配置,这就是为什么我认为SignalR更简单的原因


此外,不能将duplex(AFAIK)与javascript和objective-c一起使用。

以下是我的经验观察:

信号员专业:

  • 易于启动,较低的学习曲线。您可以轻松运行从web上找到的示例
  • 异常处理(例如连接中断、超时)嵌入在API中
信号员控制:

  • 仅支持HTTP协议
双工优点:

  • 除了HTTP之外,还支持TCP。如果您知道您的客户端类型,并且您的系统在封闭网络中工作,那么这可能是一个严重的性能提升。此外,在TCP上工作比HTTP增加了更多的连接稳定性
双工缺点:

  • 更高的学习曲线-更难启动并有稳定的解决方案。想核实一下吗?从web下载一个双工和一个信号器示例,看看您将花费多少时间来成功运行彼此
  • 您需要处理所有异常情况(连接中断、超时等)
  • 我知道,当您想长时间使用双工服务时,我不是唯一一个遇到严重超时问题的人。我们需要定期进行服务调用,以保持客户端连接的活动性

顺便说一句,JavaScript、桌面和Silverlight项目都有使用Signal服务的API。

到目前为止还没有人提出过一点:

  • SignalR 1.0.1要求在服务器和客户端上安装.NET 4。取决于 目标客户机和服务器的版本 可能是一个重要的考虑因素。

如果您只是想定期更新新数据,那么最好只从客户端使用WCF和轮询机制,而不是使用双工WCF或signalr。

我认为您已经获得了很多关于它们的数据点。但选择信号器将为您提供比开发工作更多的优势,在大多数情况下,开发工作是选择技术时的主要决策块

您不需要担心API开发/测试等问题,可以专注于自己的项目实现


希望有帮助PraseR可以方便地使用JavaScript、.NET两种WiFrm和WPF的多个客户端,甚至可以与C++客户端一起使用;使用自托管的.NETSignalr服务器(OWIN)是一种非常好的方式,可以让一个独立的服务器推送/接收/广播到多个客户端。唯一可能更容易的事情是ZeroMQ使用其发布-订阅方法。

您能提供更多关于为什么Signal比WCF更简单的细节吗?我已经编辑了答案,但本质上我发现WCF配置非常混乱,Signal是一个非常优雅的解决方案,但这可能只是一个品味问题。我非常确信,如果您希望添加web客户端或任何其他客户端,SignalR将在将来为您提供更大的灵活性。我还想检查性能,只是出于编码目的,我们不能选择SignalR。我有桌面应用程序,将来不会有任何web应用程序。另外,SignalR仅在Http协议上运行,我认为,SignalR是否支持网络TCP?SignalR的主要兴趣点是它的轻巧性和连接到许多不同客户端的能力。您似乎没有这个要求,WCF可能会使winform/wpf开发更容易。@UpendraChaudhari我也面临类似的问题。我认为我们可以将WebSockets与SignalR结合使用,以在标题大小和所有方面获得一些性能提升。我认为这样的话,使用nettcp,性能可以更接近WCF。你的想法是什么?谢谢你的回复。我已经知道WCF双工通信,就像我在以前的一个项目中所做的那样。所以从发展的角度来看,这对我来说并不难。我只想知道性能方面的问题。当应用程序在很短的时间内有大量数据要推入时,WCF会产生任何问题吗?当它长时间处于空闲状态时,WCF会产生任何超时问题吗?我还没有对我的双工服务进行任何性能测试。但是对于超时问题,正如我在回答中提到的,我们在开发过程中遇到了一些不确定的超时问题。由于我们找不到一个有文档记录的解决方案和完整的工作示例,我们决定手动定期向双工服务发出心跳请求,以使其保持活动状态(=防止连接超时)。Signal支持WebSocket(用于IIS 8),这在大多数情况下实际上比普通TCP更好,在Aron的评论中还有一个额外的注意事项:你需要小心你的客户档案。还不是所有的浏览器都支持WebSocket。@Hasan Signaler仍然不支持TCP?如果我们使用轮询机制,那么甚至不需要WCF服务。但在轮询中,如果轮询时间较大,并且我们不能设置较小的轮询时间和时间,则获取数据会有延迟