我遇到的问题是我实现了一个使用LINQ实体的WCF服务...要生成服务调用响应的内容,需要大量的LINQ / SQL选择...
无论如何,该服务没有对数据库进行任何更新或插入,所以我想实现一种LINQ实体的“缓存”(数据库内容也没有增长到数百万......它确实会被限制在大约63,000个mainentries(具有次级依赖性),例如User - > Orders)
此外,服务响应不必包含100%up2date数据,因此后台数据的更新不应该在这里考虑
好的,目前我的计划如下:
那么,你有什么看法......你认为我应该/可以这样做吗?我真的需要增加服务的响应时间,但优化SQL(例如选择较少的数量)对我来说不是一个真正的选择,因为所有的LINQ内容都已经实现了。
提前致谢!
答案 0 :(得分:2)
这听起来像对我来说过早优化。考虑:
换句话说,首先编写正确的代码,抽象得足够多,如果必须,可以插入缓存(存储库模式对此有利)。对它进行分析,找到缓慢的部分,然后先修复它们。
答案 1 :(得分:1)
我认为你建议的方法是恰当的。无论如何,除非你确定总是访问相关类中的所有数据库寄存器,否则我会修改它,以便它不是在启动时检索整个表,而是在第一次需要时检索寄存器。像这样:
GetRegister(id)
if cache has not register with that id
retrieve register from database
store register in cache
return cached register
通过这种方式,您可以实现缓存,但不会浪费不必要的内存。