[英]Writing a highly scalable TCP/IP server in C# 5 with the async/await pattern?
我的任务是设计一个相当简单的 TCP/IP 服务器,它必须接受来自多个客户端的连接。 它需要用 C# 编写,而我使用的是 .NET 4.5。 也就是说,我不确定 .NET 4.5 中 TCP/IP 服务器/客户端可伸缩性的当前“最新技术”是什么。
我确实看过这篇文章: How to write a scalable Tcp/Ip based server 。 但这与 .NET 2.0 和 3.5 相关,并且没有提及异步/等待模式。
我有能力以“旧方式”编写服务器......但我想知道“新方式”是什么。
编辑:其他问题。
在 Socket、TcpClient 或 TcpListener 上使用新的 Async 方法在 C# 中创建可伸缩服务器的最佳方法是什么?
Socket
上没有任何新的async
方法; Socket
上名为*Async
的方法是一组特殊的 API,用于减少内存使用。 TcpClient
和TcpListener
确实获得了一些新的async
方法。
如果您想要最好的可伸缩性,您可能最好使用Stephen Toub 的Socket
自定义等待程序。 如果您想要最简单的代码,最好使用TcpClient
和TcpListener
。
新的异步方法是否利用 I/O 完成端口?
是的,就像 BCL 中的大多数其他异步 API 一样。 AFAIK, Stream
类是唯一可能不使用 IOCP 的类; 所有其他*Begin
/ *End
/ *Async
方法都使用 IOCP。
滚动您自己的 Socket 侦听器是否更有效,或者 TcpListener/TcpClient 类现在非常好?
这些课程非常好。 Stephen Toub 有一篇博客文章,在内存使用方面效率更高一些。
我的任务是设计一个相当简单的 TCP/IP 服务器,它必须接受来自多个客户端的连接。 它需要用 C# 编写,我使用的是 .NET 4.5。 也就是说,我不确定 .NET 4.5 中 TCP/IP 服务器/客户端可扩展性的当前“最新技术”是什么。
我确实看到了这篇文章: 如何编写可扩展的基于 Tcp/Ip 的服务器。 但这与 .NET 2.0 和 3.5 相关,并没有提及 async/await 模式。
我能够以“旧方式”编写服务器……但我想知道“新方式”是什么。
编辑:其他问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.