我正在寻找有关如何在WCF中实现可靠的UDP传输的建议和指导。
我需要创建一个应用程序,其中客户端和服务器都需要相互提供服务,WCF在我看来是一个非常好的选择。我是WCF的新手,我只知道它的基础知识。根据我的阅读,WCF双工TCP通道从客户端到服务器创建TCP连接,另一个从服务器到客户端创建回调,这对我来说是个问题,因为客户端通常位于防火墙/路由器后面。我正在考虑使用UDP传输来避免这个问题,因为UDP是无连接的,但我需要实现一个可靠的面向连接的UDP传输来完成我需要的工作。
我查看了custom UDP transport samples at MSDN,但我仍然不知道实现自定义传输需要什么,它基本上支持与通常的TCP传输相同的功能,假设我已经知道如何实现UDP的可靠性内容。
作为使用内置TCP传输完成所需内容的可能替代方案,我已经阅读了长轮询,但这似乎违反直觉,似乎给整个事情增加了不必要的复杂性。不过,我愿意接受有关UDP方法替代方案的建议。
你的想法很棒,而UDP协议本身就不可靠。因此WCF双工信道基于TCP协议。正如文章中提到的,
对于UDP传输,唯一支持的MEP是数据报,因为UDP本身就是一种“即发即弃”协议。
据我所知,如果要确保UDP通信的可靠性,应用层协议应该完成确认和超时重传机制。这意味着我们应该考虑在应用层实现可靠的UDP传输(至少尚未正式实现)。 https://www.codeproject.com/Articles/331599/What-s-new-in-WCF-4-5-UDP-transport-support https://docs.microsoft.com/en-us/dotnet/framework/wcf/extending/service-channel-listeners-and-channels