WCF客户端在连接期间更改IP地址和接口

时间:2012-10-18 12:53:52

标签: wcf wcf-client

想象一下情况(这是真实的情况):

笔记本电脑上有一个WCF客户端应用程序。 笔记本电脑通过WiFi连接到互联网。 用户在连接到WCF服务的工作中正在他的笔记本电脑上做一些事情(请求回复操作)。

然后用户的笔记本电脑休眠,用户回家。在家用户唤醒他的笔记本电脑,连接HSPDA / 3G调制解调器(不同的接口和IP),并希望继续在客户端应用工作。请注意,申请尚未结束。

应对用户(客户端应用程序)进行身份验证,如果可能,则应对通信进行加密。

最佳做法是什么? 为每个操作创建新代理?使用身份验证初始化net.tcp连接时,这应该非常慢。

解决方案basicHttp连接(+ HTTPS)与InstanceContextMode.PerCall?请注意,速度和更高的有效负载是有问题的。

或者最好的解决方案类似于“wrapper(Func<>)”,它包含while循环直到操作成功完成(失败时,创建新连接并再次调用函数)。

感谢您的建议

1 个答案:

答案 0 :(得分:0)

只要工作单元是必要的,我就一直保持连接打开状态。基本上,只有在应用程序执行某些处理(并且这些进程需要WCF连接)时,连接才会打开并可用。保持重新连接可能需要更多的开销(并且取决于连接速度,它可能会增加延迟),但是当涉及到连接工作时(失败的可能性最小)并且我通常将这些资源保存给其他人时,它也更安全。目的。

然而,这完全取决于应用程序的功能;如果客户端是哑巴并且服务正在完成所有工作,那么保持连接可能是有意义的,因为每个函数都在服务上执行方法。虽然如此,如果连接意外断开,则会检查和重新建立故障。

此外,netTcp将比wsHttp快得多。我个人没有看到建立netTcp连接的延迟很多(虽然我不知道你正在做什么样的身份验证[我一般已经实现了Windows身份验证])

相关问题