C#套接字性能.Net 4.5 Async vs […] Async vs Begin […]
目前,根据我的研究,有三种方法可以异步使用套接字:
.Net 4.5异步示例:Using .Net 4.5 Async Feature for Socket Programming(第二篇文章) […]异步:http://msdn.microsoft.com/en-us/library/system.net.sockets.socketasynceventargs.aspx 开始[…]:http://msdn.microsoft.com/en-us/library/5w7b7x5f(v=vs.110).aspx 我对所有选项非常困惑.Net提供了使用异步套接字的方法.我为什么要使用其中一个?有数千个同时连接的性能有什么更好的选择? 解决方法
在服务器端,使用任何异步套接字API(初始/结束式APM,基于事件的EAP或基于任务的TAP)都可能同样受益.这是因为与使用同步API相比,您将阻止更少的线程.因此,可以使用更多线程同时为服务器提供其他传入请求,从而提高其可伸缩性. 最有可能的是,您不会看到使用TAP套接字API而不是其APM或EAP类似物的任何性能优势.但是,与APM或EAP相比,TAP API模式更容易开发.与async / await一起使用时,它会生成更短,更易读和更少错误的代码.您将获得自然的伪线性代码流,这是APM回调或EAP事件处理程序无法实现的.如果您无法找到适当的基于任务的套接字API,则始终可以使用Task.FromAsync从开始/结束APM API(或从EAP API,请参阅“A reusable pattern to convert event into task”)获取make one yourself. 对于客户端UI应用程序,可伸缩性并不重要,但TAP模式还有另一个好处.通过很少的努力,它有助于使您的UI响应,因为您不会阻止UI线程(通常在等待同步调用的结果时发生).这不是特定于基于任务的套接字API,它适用于任何基于任务的API,例如,Task.Delay()或Stream.ReadAsync(). 有关C#中异步编程的一些好的阅读材料,请检查async / await标签wiki: https://stackoverflow.com/tags/async-await/info (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |