如何实现自定义客户端wcf缓存

时间:2010-09-22 08:31:09

标签: wcf caching client

我需要实现wcf服务的客户端代理的自定义缓存。 我已经实现了IOperationBehavior接口。在服务器端,我们可以在ApplyDispatchBehavior方法中设置OperationDescription.Invoke属性,并实现IOperationInvoker接口来控制操作执行。在客户端,我们无法做到。

在客户端,我们可以使用IClientMessageInspector,IParameterInspector,IClientMessageFormatter接口来控制消息流。主要问题是我只需要在缓存中存储服务答案,而不需要有关消息格式的信息。当我从缓存中恢复值时,我应该再次创建消息,就像服务响应一样。我无法打破内部消息处理。所以在那一刻,我在RESTful服务的情况下丢失了有关消息的必要信息,例如编码,内容类型(json,xml)。最终结果 - WCF无法处理此类消息。 如果存在缓存值,我想禁用消息处理。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

我会选择绝对不同的方法。我没有将一些功能注入到WCF管道中,而是将WCF代理包装WCF代理的接口定义为自定义类(缓存代理)并在此包装类上实现接口。只有在缓存代理不包含所需数据时才会调用WCF。