记录Web API调用MVC 4

时间:2013-03-30 09:14:26

标签: asp.net asp.net-mvc caching logging asp.net-web-api

每次调用我的Web API时都需要登录数据库。 现在我当然不希望每次通话都去我的数据库。

所以假设我的缓存中有一个字典或哈希表对象, 每10000条记录我就进入数据库。

我仍然不希望每10000个用户等待此操作。 自应用程序池以来,我无法为长时间操作启动不同的线程 基本上可以随时回收。

此方案的最佳解决方案是什么?

由于

1 个答案:

答案 0 :(得分:0)

我认为你的耐久性观点相当不一致。由于应用程序池回收或服务器崩溃,您的10000个对象的缓存也可能随时丢失。

但是对于如何在不导致用户等待的情况下执行大型操作的原始问题:

  • 对应用池回收设置约束并处理潜在的数据丢失。

  • 定期将缓存的邮件转储到Windows服务以进行进一步处理。这仍然不是100%保证保存数据,例如服务/服务器可能崩溃。

  • 使用消息队列(MSMQ),possibly with WCF。消息队列可以持久保存到磁盘,因此可以认为这相当可靠。

  

消息队列(MSMQ)技术使应用程序可以运行   跨异构网络进行通信的不同时间   可能暂时脱机的系统。应用程序发送消息   排队并从队列中读取消息。

     

消息队列提供有保证的消息传递,高效   路由,安全性和基于优先级的消息传递。它可以用来   实现异步和同步方案的解决方案   要求高性能。

更进一步......

根据您的要求和/或环境,您可能会消除缓存,并立即(并快速)将所有邮件写入邮件队列,而不用担心性能丢失大型写入操作