2012-07-31 13 views

回答

1

取决于您的用例。尽管在简单场景中使用异步并没有直接的性能优势,但对于更复杂的场景和可伸缩性来说,这可能至关重要。

例如,向多台服务器发送多个请求显然是最好的并行方式,可以使用async来处理。

关于可伸缩性,请考虑使用同步Web请求与缓慢的外部服务器进行通信的Web应用程序。由于IIS只分配有限数量的线程来为来自用户的请求提供服务,因此当用户数量增长时,所有用户线程都有可能在等待外部Web请求时被阻止。这意味着某些用户请求将被IIS拒绝。

0

这取决于,在asp.net中,你必须使用同步(直到4.5);但是在Windows窗体或任何其他类型的C#项目中,它可以防止线程被搁置。调用ASYNC完成事件,将允许您更新正确的信息,而无需挂起UI或主线程。

+0

您不必在ASP.NET中使用同步Web请求。 – davidfowl 2012-07-31 06:25:37

+0

演示如何在asp.net 4.5之前使用线程而不使用全局变量。我很想知道如何。 – jamesbar2 2012-07-31 06:30:45

+0

使用全局变量与编写异步代码有什么关系? ASP.NET自.NET 2.0以来支持异步处理程序和异步页面。 4.5确实增加了一些改进(特别是在等待异步时),但是你可以*今天在ASP.NET中创建异步web请求。 – davidfowl 2012-07-31 06:34:27

0

在异步模式下,服务器只能回复你想要的,这样可以最大限度地减少网络流量,最大限度地缩短响应时间,改善用户体验。

+0

你为什么认为同步过程使服务器做你不想要的东西? – rikitikitik 2012-07-31 05:48:25

+0

我有一批我想在后台运行,其他人编码,我希望它只在我的进程数低时运行 – cdub 2012-07-31 05:49:13