我想使用WCF开发一个TCP服务器应用程序,它必须是高度可扩展的高性能服务器,可以处理至少200个并发连接:通过GPRS从我的客户端获取原始数据。
我的数据包括:
public class RawData
{
public string deviceID { get; set; }
public string timeStamp { get; set; }
public string messageType { get; set; }
public string driverId { get; set; }
public string senosrs { get; set; }
public string startStatus { get; set; }
public string x { get; set; }
public string y { get; set; }
public string course { get; set; }
public string speed { get; set; }
public string satCount { get; set; }
public string signal { get; set; }
public string message { get; set; }
}
我的问题是:
我可以使用的最佳装订是什么?
我想通过与我们服务器的连接来回调我的客户。
如何检查wcf数据包大小?
我使用过这个教程:
http://zamd.net/2008/08/15/calculating-wcf-message-size/
我的包长了500!是字节还是其他单位?
WCF对我们的情况是否足够好?我们使用gprs作为DataNetwork。
在这种情况下是否需要实施路由服务?
此问题的最佳编码是什么?最好的压缩*速度。
答案 0 :(得分:1)
回答你的问题:
netTcpBinding - 它是性能最高的绑定,因为它基本上是原始套接字。它还支持duplex。
如果您需要一次性而非生产监控,请尝试配置wcf tracing。这可以使用该频道绝对记录每条消息。
有点儿。 200个并发传入连接(如果您的服务为stateless)为fairly easy(虽然可能需要较小的scale out),但双工 wcf是复杂,最重要的是does not scale well - 您需要为所有客户端提供单个服务实例,或者您需要一些持久性后备存储来同步客户端回调代理(尽管可以使用caching高效实现这一点)
除非您需要根据邮件内容动态更改端点,在网络协议等之间进行转换,否则在此方案中我无法看到用户wcf-routing的任何需求,除了作为一种负载均衡器。如果您确实需要扩展,那么使用实际的网络负载均衡器可能会更好。
netTcpBinding默认使用二进制编码,只要通道的两端都是WCF即可。这是WCF中optimized绑定最多的。