我已经读过如果使用 SessionMode.PerSession 实例化,不应该在会话合同中使用单向操作,但使用sessionful的单向操作并不是一个糟糕的设计当 SessionMode 是每次调用或每单独一次时的合同。
为什么单向操作不应该用于每个会话的任何想法,而它们可以与每个呼叫和每个单独使用?
谢谢
答案 0 :(得分:1)
如果您使用单向操作,则不知道它是否会导致服务异常。服务上未处理的异常始终会使通道出现故障。如果InstanceContextMode
设置为PerSession
,则它会阻止会话通道并且它会处理服务实例。由于单向自然客户端不会知道它,并且下一次从同一客户端代理调用服务将以异常结束(通道出现故障...)。客户只能在代理上拨打Abort
,但他不会知道。启用会话的IMO Single
实例化将表现得非常相似,除非它不会处置服务实例。
正如评论中所指出的,它也会在PerCall
实例化不会发生这种情况,因为每个调用实例使用通道堆栈进行单个请求处理。PerCall
实例化中发生,因为故障会话频道