【问题标题】:How to implement custom client-side wcf caching如何实现自定义客户端 wcf 缓存
【发布时间】:2010-09-22 20:13:52
【问题描述】:

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

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

【问题讨论】:

    标签: wcf caching client


    【解决方案1】:

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

    【讨论】:

    • 谢谢,我也考虑过WCF代理类的实现。我的客户端代理类继承自 ClientBase~1。此类使用 RealProxy 执行调用 HandleResponseMessage 方法。当我使用假消息时,此方法会引发异常。所以我的问题是:你如何包装 WCF 代理?
    猜你喜欢
    • 2010-12-03
    • 2010-11-05
    • 1970-01-01
    • 2017-02-20
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 2016-12-14
    • 1970-01-01
    相关资源
    最近更新 更多