WCF缓存解决方案-需要建议

3
我所在的公司正在考虑实施缓存解决方案。我们有多个托管的WCF Web服务,需要对某些值进行缓存,这些值可以被持久化并被获取,不受客户端会话到服务的影响。我正在研究以下技术:
  • 缓存应用程序块4.1

  • 使用HttpRuntime缓存的WCF TCP服务

  • Memcached Win32和客户端

  • Microsoft AppFabric Caching Beta 2

我们的测试服务器是Windows Server 2003,带有IIS6,但我们的生产服务器是Windows Server 2008,因此上述任何选项都可以使用(除了在我们的测试服务器上使用AppFabric Caching)。
有没有人对其中任何一种有经验?这个缓存解决方案不会用于存储大量数据,但需要频繁且快速地获取。
提前感谢您。

1
测试服务器使用不同的操作系统和IIS与生产环境不同?这很困难。无论如何,让我提出第五个选择:内存数据库;非常适合“频繁快速获取”。在成本方面,良好实现的SQLite数据库可以接近纯内存数据库的性能。 - Jay
2个回答

3
我们在应用程序中使用内置的HttpRuntime缓存,它运行得非常好。
这很容易实现,因为您的服务器上无需安装任何内容。此外,以后转移到AppFabric缓存也不会太麻烦。
话虽如此,它也有一些限制,特别是如果您的服务没有托管在同一个IIS应用程序中,缓存对象将重复出现在每个服务中。如果您不打算缓存大量数据和/或不打算长时间缓存它们,那么您应该没问题,因为您不会消耗太多RAM。
您似乎没有负载均衡的服务器,但在这种情况下,使用HttpRuntime缓存也意味着在每个服务器上复制缓存。这就是您可以通过memcached或AppFabric Caching来避免的事情...

谢谢Julien。我们正在使用HttpRuntime Caching作为解决方案,直到AppFabric Caching退出beta版。AppFabric可能会成为我们的终极解决方案,因为它将为我们提供缓存解决方案,当我们将来转向负载均衡服务器时。 - Brandon

0

如果您没有特殊的缓存策略要求,您可以创建使用“GET”方法的RESTful接口来处理需要缓存的服务,然后让浏览器处理缓存。


缓存解决方案不会用于结果。它将用于存储用户会话信息和索引状态等内容。 - Brandon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接