C#字节流通过TCP

我是一名小工程师,希望能在这里找到所有有经验的人提出的建议。

我被分配了一个项目来创建一个通过TCP进行字节流的服务器/客户端应用程序。 我们公司通过GPS和调度软件处理带有GPS的双向无线电,我们希望用它来制作服务器/客户端应用程序。 目前,调度软件可以连接到用户必须在的中央基站,但我们希望从远程位置访问该软件(如果基站距离调度员可以在几英里外的中继站) )。

用户/客户端 – >轮询麦克风的位置 – >服务器 – >基站 – > OTA信号 – >无线电和返回

我一直在关注Windows Communication Foundation,但有什么其他方法可以解决这个问题?

我将主要使用C#/ .NET / Visual Studio 2008

我们使用UDP将汽车的GPS更新发送到处理更新的服务器。 在这样的应用程序中(通常带宽有限),您可以真正区分UDP和瞬时TCP连接(如HTTP)之间的差异(从远程主机到服务器获取数据所需的时间)。 UDP数据包将立即到达目的地,并且TCP连接的设置非常明显,通常需要几秒钟才能完成。 我喜欢WCF框架,但是如果你的应用程序是我一直在使用的那种系统,我怀疑你会对它感到高兴(……除非在更新之间有很长的间隔)。

最近,我一直在使用持久性TCP连接(使用原始套接字),如果您想确保数据包到达目的地,这是一个很好的方法。 虽然我认为,这样做的方法是尽可能地保持连接处于打开状态,并在代码中断时将代码重新连接起来。

如果您只想要一个原始字节流,那么Socket或稍微封装的TcpClient可能是一个更轻量级的解决方案。

但是如果你想发送完整的数据结构和“调用函数”,那么WCF似乎是一个不错的选择。

使用WCF,您有一个编程经验,接近于使用真实对象作为参数调用常规方法,但是使用Socket您只需发送字节数组,并且需要自己解释结果。