使用GZipStream进行客户端/服务器异步通信

时间:2011-10-27 20:49:23

标签: c# client client-server

我有多个客户端和单个服务器的客户端/服务器系统(使用Socket),它在所有客户端上每秒发送一次xml数据。

XML数据总是大小在1到18000个字符之间,服务器需要同时将这些XML-Datas发送到所有客户端。

现在我想知道如何更快地在服务器和客户端之间进行通信。

也许我会问更多一个问题,但我真的被困在这一点上,我不能再继续了。

  • 我应该在发送之前压缩每个XML数据吗?
  • 我应该序列化 XML-Datas吗? (可能会减少xml数据大小)
  • 我是否需要将每个XML-Datas转换为byte []数组(用于缓冲区), 因为必须在同一时间为所有客户进行沟通。

谢谢!

3 个答案:

答案 0 :(得分:0)

如果您当前正在迭代已连接的客户端,则可以使用具有内置pub-sub拓扑的中间层。 0MQ能够让单个发布者非常有效地向n个订阅者发送并具有C#绑定。您也可以按照建议发送邮件之前压缩邮件。

答案 1 :(得分:0)

假设您在Intranet上工作,我建议multicast您的xml数据。这样,您的服务器将每秒发送一个xml数据副本(而不是为N客户端发送N个数据副本)

答案 2 :(得分:0)

如果您使用WCF,则可以轻松集成GZip压缩。

点击此处:WCF Compression over HTTP sample