C# 非WCF TCP服务器的WCF绑定
我有一个旧的非WCF Windows服务,它创建了一个TCPClient以连接到非WCF TCP服务器。我根本无法更改服务器应用程序。它尝试创建两个线程,一个用于从服务器读取和处理消息,另一个用于从MSMQ队列读取、处理消息,然后发送到TCP服务器。不幸的是,存在问题,有时如果网络断开,我会得到两个读线程或写线程实例。这些线程共享相同的TCPClient连接C# 非WCF TCP服务器的WCF绑定,c#,vb.net,wcf,tcpclient,C#,Vb.net,Wcf,Tcpclient,我有一个旧的非WCF Windows服务,它创建了一个TCPClient以连接到非WCF TCP服务器。我根本无法更改服务器应用程序。它尝试创建两个线程,一个用于从服务器读取和处理消息,另一个用于从MSMQ队列读取、处理消息,然后发送到TCP服务器。不幸的是,存在问题,有时如果网络断开,我会得到两个读线程或写线程实例。这些线程共享相同的TCPClient连接 希望将我的服务切换到由Windows服务托管的WCF。我知道我可以将MSMQIntegration绑定用于发送方法,但我不确定如何绑定到共
希望将我的服务切换到由Windows服务托管的WCF。我知道我可以将MSMQIntegration绑定用于发送方法,但我不确定如何绑定到共享TCP连接。netTCPBinding似乎也仅限于WCF到WCF的连接。有人对如何进行有什么建议吗?这在WCF的可扩展性理论上是可能的,但您必须编写一个自定义端点、一个自定义消息格式化程序和其他五十个类。我建议单独实现TCP服务 在处理通过标准端点(传输)使用类似XML的消息的类似SOAP的服务时,最好考虑WCF的可扩展性。当你“非常接近”这一点时,你通常可以弥补差异。当您不使用这些功能时,WCF将成为一种障碍,而不是一种省时功能。例如,在以下情况下,我将使用WCF扩展性:
- 我有一个SOAP服务,它需要在SMTP或其他一些奇怪的传输(自定义端点)上运行
- 我有一个在标准端点上运行的自定义xml格式(
)I*MessageInspector
- 我有一个自定义格式,可以在标准端点(自定义消息编码器)上轻松转换为XML
- 不容易转换为XML的任何格式
- 不容易识别
/target方法的任何格式操作
- REST服务(尽管有内部支持——请看MVC Web API)
- 任何需要传输大型二进制blob的内容(除非MTOM覆盖)
- 必须更换多个内置组件的服务
Socket
或TcpClient
这样的类来与您的专有服务通信。但首先,您必须知道TCP服务器使用的是什么协议。可能是一些标准化的协议,比如SOAP或HTTP,或者是从未发布或记录过的完全独立的专有协议
尽管WCF有许多可扩展性选项,允许开发人员扩展WCF库,但当您希望允许WCF通过其他传输协议(UDP、串行线、共享网络路径)进行通信时,可以使用这些可扩展性选项或者向WCF绑定添加一些新功能,如新的安全选项、一些扩展的事务支持或日志记录。但是,将WCF扩展到与一些非WCF专有服务(使用一些自制的协议)通信将效率低下(可能不可能),而且过于复杂
因此,如果您的非WCF服务没有使用与NetTcpBinding使用的协议非常接近(几乎相同)的协议,那么WCF在这里不是一个选项。使用Socket
或TcpClient
类