【问题标题】:Server Console/Service APP <-> WPF Client communication framework sought寻求服务器控制台/服务 APP <-> WPF 客户端通信框架
【发布时间】:2013-06-04 09:40:42
【问题描述】:

我正在寻找一个可以处理我的后端主机和 WPF 前端客户端之间通信的开源框架。以下是我需要考虑的几点:

  • 客户端是 WPF 桌面应用,主机是 C# 控制台应用,但也可以作为 Windows 服务运行
  • 主机可以接受连接请求,客户端连接,但我仍然寻求双向通信能力。
  • 客户端和主机不在同一个网络中(需要通过互联网发送消息)
  • 只有一个(可能更多但少于 10 个)客户端将连接到主机。
  • 我希望能够处理以下通信模式:单向消息、双向请求/响应以及从主机到客户端的流式传输。
  • 内容将由序列化的 POCO/DTO 和序列化的时间序列数据组成。每个序列化的 DTO 大小约为 400 字节,序列化的时间序列可能更大,可能有几兆字节。
  • 某些消息将按计划发送,例如,主机每秒发送一个新的 DTO。 (如果框架包含这样的调度机制那就更好了)
  • 我希望能够将数据流式传输到客户端,例如客户端接收并实时更新其 GUI 上的数据。

我的问题是:处理这个问题的最好的基于 C# 的框架可能是什么? (我在 .Net 4.5 上运行)我不考虑 WCF,因为它对于我试图处理的东西来说似乎太厚了太复杂了。我也不想深入研究 Web 编程,因此不考虑 Rest/Soap 类型的框架。如果有人能推荐一个基于 tcp/websocket 的框架或类似的框架,我会很高兴,它的重量足够轻,可以比每秒更频繁地发送消息。

提前非常感谢。

【问题讨论】:

    标签: c# tcp websocket client-server messaging


    【解决方案1】:

    您不考虑使用 HTTP 的原因有哪些?它只是通过 TCP,但您无需担心防火墙和其他东西,特别是考虑到您想通过 Internet 执行此操作的事实。自托管 ASP.NET Web API 可能是一个不错的选择。 Fire and forget 和 request/response 可以相当直接地完成,对于流式传输,它具有 PushStreamContent。与 WCF 相比,ASP.NET Web API 是轻量级的,并且是开源的。只是一个建议,仅此而已。

    【讨论】:

    • 我尝试了这个想法,实际上我安装了 ServiceStack 库并运行请求/响应消息类型。问题是,我不需要迎合基于浏览器的解决方案,因此所有 DTO 装饰、请求、响应、服务带来的开销远远超过了收益。只要存在可以很好地处理套接字的框架,那么我更喜欢使用这样的框架。我只想远离 http/soap/rest 类型的解决方案,因为主机和客户端都是桌面应用程序,这不会改变。
    【解决方案2】:

    我最终使用 ZeroMQ 在 WPF 客户端和服务器之间进行全双工通信。它是轻量级的,非常快速且非常可靠,可以满足我的需求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-26
      • 2011-09-05
      • 2012-03-01
      • 1970-01-01
      相关资源
      最近更新 更多