我需要在IIS内部处理长时间运行的请求,处理请求本身非常轻量但主要由于IO而花费很多时间。基本上我需要查询另一台服务器,它有时会查询第三台服务器。所以我想同时处理尽可能多的请求。为此,我需要异步处理请求,我如何正确地执行该操作?如何使用IIS下的HTTP处理程序处理长时间运行的请求?
使用Socket类,我可以很容易地编写类似:
// ..listening code
// ..Accepting code
void CalledOnRecive(Request request)
{
//process the request a little
Context context = new Context()
context.Socket = request.Socket;
remoteServer.Begin_LongRunningDemonicMethod(request.someParameter, DoneCallBack, context);
}
void DoneCallBack()
{
IAsyncresult result = remoteServer.Begin_CallSomeVeryLongRunningDemonicMethod(request.someParameter, DoneCallBack, context);
Socket socket = result.Context.Socket;
socket.Send(result.Result);
}
在线程上面的例子,只要我所说的“开始......”的方法发布,并且响应发送上另一个线程,因此可以轻松实现非常高的并发性。 如何在IIS中的HTTP处理程序中执行相同的操作?
http://msdn.microsoft.com/en-us/magazine/cc164128.aspx – 2012-01-04 09:34:44
http://msdn.microsoft.com/en-us/library/bb398986.aspx也有帮助 – 2012-01-04 09:35:25