推出WCF服务更新的正确方法是什么?现在我们只使用文件系统发布方法,在发布之前删除所有现有文件。这必须在凌晨2点完成,因此我们不会中断最终用户。但是,如果我们要在一天中间推出更新怎么办?
将ClientBase包装为定时重试的位置是否派上用场?因此,我们最初部署时客户端的呼叫失败了,但它会重新尝试并在大约一秒钟后(理论上)成功?提前谢谢。
答案 0 :(得分:0)
因此您可以检查Client.open方法或客户端从服务调用的任何业务方法。在这里,您可以构建一个请求通道(实现IRequestChannel)和一个channelFactory来创建一个到服务的简单通道,然后尝试建立一个Connection。如果服务无法访问,则抛出一个exeption。您可以在while循环或其他内容中重复此类“探测”服务。最后,clinets Open()方法或busines方法将等待服务可达,然后它将继续。如果服务可以访问,您将跳出行为并继续使用业务代码。
因此,关键是为客户端实现ClientBehavior,然后在validate-method中使用RequestChannel构建ChannelFactory并尝试连接到该服务。这种连接以某种方式在一个循环中尝试。如果连接将被接受,例如,第四次,循环结束,行为关闭,商业代码将继续。
如果您有任何进一步的问题,请随时问我。