我有两种方法的简单WCF服务:Write,Read。第一种方法将简单数据存储在某个存储器中,另一种方法将通过密钥读取此数据。
写入方法调用后,应该可以立即读取数据。此外,数据应存储很短的时间(可配置,如10分钟TTL)。
为不同用户存储这些数据的最佳解决方案是什么?
类似System.Runtime.Caching / memcached / mongodb?
UPD。有什么建议吗?不理想,但很好?
答案 0 :(得分:2)
您有以下选项:
<强> 1。 System.Runtime.Caching
优点:
缺点:
<强> 2。 WCF Session
优点:
缺点:
第3。 ASP.NET session state 强>
优点:
缺点:
<强> 4。自我实现的存储,从文件系统到sql server / mongodb
优点:
缺点:
根据您评论中的答案,您有: 多线程环境,即使在检索数据之后也必须保留数据 (我假设在到期时间用完之前),数据大小很小,每个项目kb; 您将存储数百个项目,即使在服务重新启动后,数据也需要保留(再次,直到过期)。
现在它取决于 - 在生产级系统的情况下可能需要容错, 负载平衡和扩展 - 我会选择sql server,即使它意味着更大的开发成本。
如果您需要快速而肮脏的解决方案用于测试/演示目的 - 请使用内存中缓存(当然,在这种情况下,您将不得不放弃 - 重新启动后的使用者 - 要求)。
另一个快速解决方案是将数据存储在临时文件中,其中key是文件名。这将在重新启动之间保留数据,但在安全性和并发性方面会遇到同样的问题。