在WebForms ASP.NET站点(IIS,单个应用程序池)中,我调用了在Visual Studio中引用的较长的网络服务方法,其为Service Reference(.NET 4.0)。不幸的是,在向用户提供页面之前,我必须等待来自Web服务的信息。目前,网络服务被同步调用,因此服务器无法重用当前线程以处理其他请求,这对性能有影响。
当然,我可以在Visual Studio中为服务引用生成异步操作,并调用BeginGetFoo而不是GetFoo,但仍然必须以某种方式等待来自Web服务的结果。
问题来了。如果我使用AsyncWaitHandle.WaitOne(如下所示),从整个应用程序性能方面来看,它是否比我今天使用的同步调用更好?
当然,我可以在Visual Studio中为服务引用生成异步操作,并调用BeginGetFoo而不是GetFoo,但仍然必须以某种方式等待来自Web服务的结果。
问题来了。如果我使用AsyncWaitHandle.WaitOne(如下所示),从整个应用程序性能方面来看,它是否比我今天使用的同步调用更好?
IAsyncResult result = fooSoapClient.BeginGetFoo();
result.AsyncWaitHandle.WaitOne();
var foo = fooSoapClient.EndGetFoo(result);
当然,如果有更好的等待方式,欢迎提出建议。