【发布时间】:2014-04-12 11:14:32
【问题描述】:
当我研究 NIO 时,它的一个重要特性是它的非阻塞行为。 在 .NET 和 C# 中,Async/Await 和 Streams 的组合是否将 NIO 的非阻塞特性带入了 .NET?
或者.NET 4.5 中还有其他好的替代品吗?
我在 SO 上找到了 Any NIO frameworks for .NET? 问题,但这是 2009 年的问题,还没有引入任何 Async/Await。
【问题讨论】:
当我研究 NIO 时,它的一个重要特性是它的非阻塞行为。 在 .NET 和 C# 中,Async/Await 和 Streams 的组合是否将 NIO 的非阻塞特性带入了 .NET?
或者.NET 4.5 中还有其他好的替代品吗?
我在 SO 上找到了 Any NIO frameworks for .NET? 问题,但这是 2009 年的问题,还没有引入任何 Async/Await。
【问题讨论】:
除了async/await,另一个框架(更多的是扩展)是Rx Extensions(响应式扩展)
一些有用的链接
Rx 扩展几乎没有学习曲线,但它确实可以简化一些工作
如网站所述
Reactive Extensions (Rx) 是一个用于编写异步的库 和使用可观察序列和 LINQ 风格的基于事件的程序 查询运算符。使用 Rx,开发人员表示异步数据 带有 Observables 的流,使用 LINQ 查询异步数据流 运算符,并参数化异步数据中的并发性 流使用调度程序。简单地说,Rx = Observables + LINQ + 调度程序。
无论您是在创作传统桌面还是基于 Web 的 应用程序,你必须处理异步和基于事件的 时不时编程。桌面应用程序具有 I/O 可能需要很长时间的操作和计算量大的任务 完成并可能阻塞其他活动线程的时间。 此外,处理异常、取消和同步是 困难且容易出错。
【讨论】:
最佳和最接近的匹配是:https://github.com/Aaronontheweb/helios,它是 java 的 Netty 框架的等效端口。
【讨论】: