我有一个问题,如何在Windows服务中使用实体框架来最好地构建我的解决方案。用于长时间运行的Windows服务的实体框架体系结构
我想提供一个在线(基于web)服务,它允许用户执行可能长时间运行的任务,看任务的进度,取消它们,等
到目前为止,我使用的是Windows服务实际执行公开WCF端点的任务以排队新工作和管理现有任务。
我正在使用Entity Framework存储所有作业的历史记录。然而,我并不完全知道应该如何建模执行作业的后台进程(使用当前进度信息)和暴露此状态的wcf服务之间的交互。
我应该完全分离这两个部分,让后台进程定期将当前状态写入数据库,WCF服务从那里轮询信息?
或者WCF服务直接从后台进程获取信息访问静态成员或类似的东西是否有意义?他们应该共享一个DataContext吗?
我想拥有最新的信息,似乎有点奇怪,后台处理和WCF服务都在同一进程中运行,但通过数据库进行通信,但另一方面,它似乎是一个更好的建筑...
非常感谢!
有道理。在这种情况下,你会如何推荐在后台进程中使用DataContext?在服务运行期间保持打开状态(周期性冲洗)似乎是一个糟糕的主意。所以相反,我会使用另一个线程,定期创建一个DataContext并更新数据库? 我使用SQLite作为数据库btw使服务易于部署。目前数据量不应该太高,但如果数据量变高,我可以选择切换到SQL Server。 – aKzenT 2011-03-28 09:17:16
除非您的datacontext内存大小很大,否则您可以长时间保持上下文打开,上下文不会保持与服务器打开的连接,只有在加载或保存更改时,才会从池中提取新连接以执行操作。长时间保持上下文环境会让您更频繁地进行更改,并且很少刷新它。 – 2011-03-28 15:05:27