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