如果在操作期间发生特定事件,我想添加服务器端重试行为。
自定义IOperationInvoker看起来很适合这个功能,但是......
不幸的是,已经创建/解决了应该执行哪个操作的实例,因此为了正确实现重试逻辑,每个人都应该编写无状态服务实现,这是非常有限的,有时很高兴有InstanceContextMode.PerCall模式和状态仅在请求期间存在寿命。
是否有任何地方或可能强制WCF重新创建/解析服务并再次调用操作?
答案 0 :(得分:0)
你自己的重复逻辑不是那么容易。您将不得不处理许多问题:
幸运的是,有一个开箱即用的解决方案已经为您做了一切。看一下MSMQ WCF绑定。
所以从长远来看,你的设计就是这样的:
客户来电 - > MSMQ - >服务
请注意,您根本不需要对现有代码进行任何更改,只需更改绑定配置并设置MSMQ即可。
如果您不能直接使用msmq绑定客户端,您可以随时使用特殊的服务器端服务,只将消息放入队列。所以设计将是:
客户服务 - > HTTP - > QueueService(将消息放入队列的一种方法) - > MSMQ - > ProcessService
希望它有所帮助!