我有一个开发人员最近告诉我,你应该总是异步进行数据库调用. (使用ThreadPool.QueueUserWorkItem或IAsyncResult和委托)
他的理由是:IIS只有24个(左右)线程可以用于请求.当用户发出请求时,他们会获得其中一个线程.但是,使用异步方法时,可以访问IIS范围之外的Windows线程.他说,当你以这种方式使用异步方法时,你将初始线程释放给其他用户的请求,并将其转移到Windows线程(用于该线程的生命周期).
你怎么看?所有db调用都应该是异步的吗?
解决方法
工作线程数量有限.这些与ASP.NET有关,而不是IIS(IIS7除外,它们是相同的东西).确实,数据库调用或任何其他调用都会占用其中一个线程.对于ADO.NET调用,可以将页面编写为异步页面,在数据库操作正在进行时不使用任何线程.
除非你确实遇到问题,否则你不应该为此烦恼.