.NET Framework 4.5中的异步特性增强
有机会试过Visual Studio 11或者Visual Studio Async CTP的开发人员想必对Visual Basic和C#中新的Await和Async关键字一定不陌生。最近,微软披露了.NET Framework 4.5中一些新的变化细节,用于一步扩展异步编程的能力。
.NET 4.5中编写异步代码已经可以信手拈来,它不再需要借助非常复杂的方法或回调。新的async任务结构在开发人员看来会非常熟悉,例如下面的例子展示了一个同步方法声明以及它对应的异步声明:
'synchronous method Private Function GetInfo(url As String) As Byte() 'asynchronous method Private Async Function GetInfo(url As String) As Task(Of Byte())
异步方法返回的结果是一个任务;当Await调用作用于该任务时,方法会立刻暂停,并等到任务完成后恢复运行。虽然看起来结构很简单,但在实现异步代码时还得关注大量注意事项以避免降低性能。
除了C#和Visual Basic语言的改动之外,.NET Framework 4.5开发者预览版还增加了一批常用操作的异步方法。System.IO目前包含了如ReadAsync、WriteAsync、CopyToAsync和其他一些方法。System.Data.Common和System.Data.SqlClient中许多方法也有了相应的异步版本,如ExecuteQueryAsync、ExecuteScalarAsync和ReadAsync。
ASP.NET 4.5允许开发人员异步使用HttpRequest.GetBufferlessInputStream,并引入 HttpTaskAsyncHandler简化异步处理程序编写和任务使用。Windows Communication Foundation(WCF)和Windows Presentation Foundation(WPF)也包含了新的异步特性。
想要开始学习.NET Framework 4.5 Beta中的新的异步特性,可以访问Visual Studio异步编程站点。另外,该框架一方面作为Visual Studio 11的一部分发布,另一方面还可以通过Async CTP for Visual Studio 2010访问到它。