如何在WCF多线程中缓存

时间:2012-07-09 18:15:28

标签: wcf caching

因此,在我的WCF服务中,我将缓存一些数据,以便将来调用服务可以获取该数据。

WCF缓存数据的最佳方式是什么?怎么去做这个? 如果有帮助,WCF服务是多线程的(并发模式是多个),ReleaseServiceInstanceOnTransactionComplete设置为false。

检索此数据的第一次调用可能不存在,因此它将从某个源(可能是DB,可能是文件,可能在任何地方)获取数据,但此后它应该缓存它并使其可用(理想情况下是对象的到期系统)

想法?

2 个答案:

答案 0 :(得分:1)

WCF服务的一些最常见的解决方案似乎是:

尝试阅读Caching Solutions

答案 1 :(得分:1)

当SOA应用程序使用的数据保存在对于频繁事务不可扩展的存储中时,它无法有效扩展。这是分布式缓存真正有用的地方。回到你的问题和ErnieL的回答,这里是对这些解决方案的简要比较,

就Memcached而言,如果您的应用程序需要在一组计算机上运行,​​那么很可能您将从分布式缓存中受益,但是如果您的应用程序只需要在一台计算机上运行,​​那么您就赢了从使用分布式缓存中获得任何好处,使用内置的.Net缓存可能会更好。 访问memcached缓存需要进程间/网络通信,这将比正在进行的.Net缓存具有很小​​的性能损失。 Memcached作为外部进程/服务工作,这意味着您需要在生产环境中安装/运行该服务。同样,.Net缓存不再需要这个步骤,因为它们是在进程中托管的。

如果我们比较NCache和Appfabric的功能,NCache的人们对他们与AppFabric相比的功能范围非常有信心。你可以在这里找到足够的材料来比较这两种产品,比如这两种......

http://distributedcaching.blog.com/2011/05/26/ncache-features-that-app-fabric-does-not-have/