WCF:跨多个服务共享缓存数据

标签 wcf

我们正在开发一个项目,该项目涉及大约 10 个不同的 WCF 服务,每个服务都有多个端点。其中一项服务将一些大数据表缓存在内存中。

我们发现我们需要从另一个服务访问该数据。我希望能够在所有服务之间共享这些表,而不是保留 2 个缓存副本。

我做了一些研究并找到了一些关于使用附加到服务主机的 IExtension 来存储共享数据的文章。

如果所有服务都在同一个网站下运行,那行得通吗?这是正确的方法吗?还是我应该寻找其他地方?

最佳答案

如果多个服务需要您缓存的数据,从面向服务架构的角度来看,这听起来像是它不属于您调用它的任何一个服务。

如果被缓存的数据与任何一个服务都没有真正相关,而是两个服务都需要的东西,那么它可能属于它自己的独立服务。您是否考虑过将您的缓存封装在第三方服务中,并执行服务到服务调用来检索您需要的数据?好处包括...

  1. 它解决了您最初的困境,避免了多次从数据库读取整个缓存的需要;
  2. 它将缓存封装在一个地方,以便于以后维护/更改。
  3. 它允许您通过放置另一个服务接口(interface)来将缓存的实现从其他服务中抽象出来。

总而言之,我认为这是最好的方法。唯一的缺点是进行服务到服务调用的额外开销,但这肯定优于必须从数据库读取整个缓存。

或者,如果缓存中的数据与调用缓存的两个服务都密切相关,即两个服务都添加/更改缓存中的数据等,那么也许这两个现有服务应该合并为一项服务。

如果我说的有道理,那么我所借鉴的 SOA 原则是 Service Autonomy .

关于WCF:跨多个服务共享缓存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/757588/

相关文章:

.net - WCF 安全性,TCP 还是 http?

wcf - Node.js 在 Microsoft/Azure/WCF/MVC 项目中适合什么位置?

wcf - 将客户端 SSL 证书添加到 WCF 绑定(bind)

asp.net-mvc - 使用 WCF + IOC 结构图的 SOA 架构

wcf - 使用名字对象字符串从 Excel 调用 WCF 服务并收到 maxReceivedMessageSize 的错误 65356 已超出

c# - 无法建立连接,因为目标机器主动拒绝 127.0.0.1 :3446

c# - 多个 WPF 控件使用的 WCF 双工服务

wcf - 自托管 WCF - 是否需要命名空间预留?

c# - WCF 服务引用是否跳过类型

wcf - OData/WCF 数据服务 - HTTP 500 错误