如何为数百个并发连接优化/设计WCF

本文关键字:连接 并发 优化 WCF 设计 百个 | 更新日期: 2023-09-27 18:24:58

我想使用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; }
}

我的问题是:

  1. 我能用的最好的装订是什么
    我想通过与服务器的连接回叫我的客户端。

  2. 如何检查wcf数据包大小
    我使用过本教程:http://zamd.net/2008/08/15/calculating-wcf-message-size/我的包裹有500长!是以字节为单位还是以其他单位为单位?

  3. WCF对我们的情况足够好吗?我们使用gprs作为数据网络。

  4. 在这种情况下是否需要实现路由服务?

  5. 这个问题的最佳编码是什么?最佳压缩*速度。

如何为数百个并发连接优化/设计WCF

回答您的问题:

  1. netTcpBinding-它是性能最高的绑定,因为它基本上是原始套接字。它还支持双工。

  2. 如果您需要一次性使用,而不用于生产监控,请尝试配置wcf跟踪。这可以记录使用该通道的所有消息。

  3. 金达。200个并发传入连接(如果您的服务是无状态的)相当容易(尽管可能需要小规模扩展),但duplexwcf充其量是复杂的,重要的是不能很好地扩展-您需要为所有客户端提供一个服务实例,或者您需要一些持久的后备存储来同步客户端回调委托(尽管这可以通过缓存有效地实现)。

  4. 除非您需要根据消息内容动态更改端点,在网络协议之间进行转换等,否则在这种情况下,除了作为一种负载均衡器之外,我看不出有任何用户wcf路由的需要。如果您确实需要扩展,那么最好使用实际的网络负载均衡器。

  5. netTcpBinding默认情况下使用二进制编码,只要通道的两端都是WCF即可。这是WCF中优化程度最高的绑定。