【发布时间】:2010-09-22 20:13:52
【问题描述】:
我需要实现 wcf 服务的客户端代理的自定义缓存。 我已经实现了 IOperationBehavior 接口。在服务器端,我们可以在 ApplyDispatchBehavior 方法中设置 OperationDescription.Invoke 属性,并实现 IOperationInvoker 接口来控制操作的执行。在客户端我们做不到。
在客户端我们可以使用 IClientMessageInspector、IParameterInspector、IClientMessageFormatter 接口来控制消息流。主要问题是我必须仅将服务答案存储在缓存中,而无需提供有关消息格式的信息。当我从缓存中恢复值时,我应该再次创建消息,就像在服务响应的情况下一样。我无法中断内部消息处理。因此,在那一刻,如果是 RESTful 服务,我会丢失有关消息的必要信息,例如编码、内容类型(json、xml)。最终结果 - WCF 无法处理此类消息。 如果缓存值存在,我想禁用消息处理。我该怎么做?
【问题讨论】: