加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#套接字性能.Net 4.5 Async vs […] Async vs Begin […]

发布时间:2020-12-15 18:35:48 所属栏目:百科 来源:网络整理
导读:目前,根据我的研究,有三种方法可以异步使用套接字: .Net 4.5异步示例:Using .Net 4.5 Async Feature for Socket Programming(第二篇文章) […]异步:http://msdn.microsoft.com/en-us/library/system.net.sockets.socketasynceventargs.aspx 开始[…]:htt
目前,根据我的研究,有三种方法可以异步使用套接字:

.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提供了使用异步套接字的方法.我为什么要使用其中一个?有数千个同时连接的性能有什么更好的选择?

解决方法

What better choice to have performance with thousands of simultaneous
connections?


A curiosity regarding the Begin[…]. If I have a MMORPG server where
one connection interacting with each other for position update,
animation,effects (basic MMORPG mechanism),in numbers,which would
be “heavily loaded servers”? 200~300 simultaneous connections?

在服务器端,使用任何异步套接字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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读