wcf - 在 SQL CE 数据库中缓存数据

标签 wcf caching sql-server-ce

背景

我有一个不断更新(每秒)的 SQL CE 数据库。

我有一个(网络)应用程序,允许用户实时查看数据。在某些时候,用户可以单击“拍摄快照”按钮,它会在不同的窗口中打开快照。

然后在该表单上,有“打印”和“下载”按钮,它们将生成用于打印的页面,或者将数据流式传输为 CSV 文件 - 但必须使用相同的数据快照,即我无法去数据库获取最新数据。

详细信息

  • SQL CE 数据库通过 WCF 网络服务公开。
  • 快照最多包含 500 条记录,每条记录 10 列。 2 小时快照的过期时间就足够了。
  • 这是一个低流量应用程序,因此我预计不会同时有超过几 (5) 个连接。
  • 丢失快照没什么大不了的,用户可以简单地生成一个新快照。
  • 数据库由使用 Linq-to-SQL 的自托管 WCF 网络服务访问。
  • 网站是在 UltiDev Cassini 上托管的 ASP.NET MVC。
  • 数据库和网站在部署时很可能在同一个盒子上。整个应用程序是内联网绑定(bind)的。

问题 我需要在用户按下“拍摄快照”按钮时缓存数据快照,以便我可以使用相同的数据生成打印页面,或生成文件以供下载。

解决方案一:

每次需要生成快照的时候,我都会在数据库中创建一张表。由于 SQL CE 中没有临时表,我需要自己清理它。

解决方案 2:

将快照缓存在数据库服务器或网络服务器的内存中。

问题:

提出的解决方案有什么问题吗?有什么不同的解决方案建议吗?

最佳答案

一个考虑因素是典型的使用模式。大多数快照最终会导致打印或导出还是两者兼而有之?

如果是这样的话,我们不妨以从设备到服务器的非阻塞(异步)select 语句的形式(暂时)“获取到内存中”。以这种方式,当用户决定使用数据时,数据将“存在”或顺利进行。

另一方面,如果许多快照最终没有得到有效使用,解决方案 #1 似乎还不错(也许该表可以以帐户/用户命名,从而保证基于快照数量的“ self 清理”a用户可以在给定的时间维护(虽然它似乎只是一个,有时甚至可以容忍失去它)。

关于wcf - 在 SQL CE 数据库中缓存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1546433/

相关文章:

angularjs - 使用 ui-router 在 AngularJS 中禁用模板缓存

caching - 我什么时候应该使用Cache-Control : no-cache?

entity-framework - 具有标识列的 SQL Server Compact 4.0 表中的插入性能呈指数级下降

json - InstanceContextMode.WCF wsHttpBinding、webHttpBinding 和 REST 中的 Single

c# - 我如何知道我的异步方法已在 WCF 服务中完成?

c# - WCF 反序列化丢失子集合

jquery 如何使用 filtrify 插件在页面重新加载后保留设置?

sql - 如何使用 SQL 获取每天的事件计数?

c# - Entity Framework 使用模型与 sqlce 和 sql server/sql express 数据库

c# - 仅通过 WCF 发送填充的对象属性?