服务器控制台/服务APP< - >寻求WPF客户通信框架

时间:2013-06-04 09:40:42

标签: c# tcp websocket client-server messaging

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

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

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

提前多多感谢。

2 个答案:

答案 0 :(得分:0)

您不考虑HTTP的任何原因?它只是通过TCP,但你不必担心防火墙和东西,特别是考虑到你想通过互联网这样做的事实。自托管ASP.NET Web API可能是一个很好的选择。火灾和忘记以及请求/响应可以相当直接地完成,对于流式传输它具有PushStreamContent。与WCF相比,ASP.NET Web API重量轻,是开源的。只是一个建议,就是这样。

答案 1 :(得分:0)

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