使用Wcf服务的Tcp服务器

使用Wcf服务的Tcp服务器,wcf,gps,tcplistener,Wcf,Gps,Tcplistener,我是一名经验丰富的C#开发人员,但到目前为止我还没有开发TCP服务器应用程序。现在,我必须开发一个高度可扩展和高性能的服务器,它可以处理至少5-10000个并发连接:通过GPRS从GPS设备获取原始字节数据 一个通用的沟通过程应该如下所示: GPS设备启动与我的服务器的连接 如果我想获取数据,我的服务器会应答 设备发送GPS数据 我的服务器向设备发送获取报告(类似于sg的校验和) 从GPS、reportm获取新数据,这种情况一次又一次发生 稍后GPS设备将关闭连接 所以,在我的服务器中,我需要

我是一名经验丰富的C#开发人员,但到目前为止我还没有开发TCP服务器应用程序。现在,我必须开发一个高度可扩展和高性能的服务器,它可以处理至少5-10000个并发连接:通过GPRS从GPS设备获取原始字节数据

一个通用的沟通过程应该如下所示:

GPS设备启动与我的服务器的连接 如果我想获取数据,我的服务器会应答 设备发送GPS数据 我的服务器向设备发送获取报告(类似于sg的校验和) 从GPS、reportm获取新数据,这种情况一次又一次发生 稍后GPS设备将关闭连接 所以,在我的服务器中,我需要

跟踪连接的/活动的客户端 从服务器端关闭任何客户端 当设备关闭连接时捕获事件 获取字节数据 向客户端发送数据 我开始在网上读到这个话题,但这对我来说似乎是一场噩梦。有很多方法,但我找不出哪一种是最好的

异步套接字方法对我来说似乎是最好的,但是用这种异步风格编写代码非常糟糕,而且不容易调试

因此,我的问题是:您认为在C#中实现高性能TCP服务器的最佳方法是什么?你知道有什么好的开源组件可以做到这一点吗?(我试了好几种,但找不到好的。)


提前感谢,任何专家的答案都将被推荐

两个建议您可以使用

  • WCF TCP(双工?)-这里您可以有一个异步模式,客户机和服务器都可以相互调用。确实需要一些管道,但有很多文件

  • RESTFUL-我认为这可能是你更好的选择。这很容易实现异步,而且由于REST的无状态特性,开销要小得多。仅供参考,您可以使用TCP实现这一点,尽管HTTP可能是更好的选择