【发布时间】:2009-12-09 20:02:51
【问题描述】:
设置
我有通过 REST 接口获取其输入的 Web 服务。 REST 调用不会返回任何有意义的数据,因此传入 Web 服务的任何内容都只会记录在数据库中,仅此而已。这是我公司内部使用的一项分析服务,用于对其网页上收到的 Web 请求进行一些特殊处理。因此,响应需要尽可能短的时间返回非常重要。
我已经尽可能地优化了代码,以使响应尽可能快。但是,在将响应发送回 Web 客户端之前,数据库保持打开的时间仍然使连接保持打开的时间比我想要的要长。
代码看起来基本上是这样的,顺便说一句,它是 ASP.NET MVC,使用实体框架,在 IIS 7 上运行,如果这很重要的话。
public ActionResult Add(/*..bunch of parameters..*/) {
using (var db = new Entities()) {
var log = new Log {
// populate Log from parameters
}
db.AddToLogs(log);
db.SaveChanges();
}
return File(pixelImage, "image/gif");
}
问题
有没有办法将数据库插入卸载到另一个进程,以便几乎立即返回对客户端的响应?
我正在考虑将 using 块中的所有内容包装在另一个线程中,以使数据库异步插入,但不知道这是否是将响应释放回客户端的最佳方式。
如果你想实现这个目标,你会推荐什么?
【问题讨论】:
标签: sql-server asp.net-mvc entity-framework iis-7