基于任务的Service Bus API

编辑人员注释:本文作者 Scott Seely是Windows Azure Service Bus团队的开发人员。

我们最近通过NuGet 推出了Windows Azure Service Bus客户端 SDK 的最新版本。目前版本号为 v2.0.0-beta。这个版本的 SDK API 中有一些改进,为所有异步API提供了基于System.Threading.Tasks.Task 的版本。这意味您可以编写普通人都可以阅读的异步代码。如果您想知道哪些类得到了更新,答案很简单:全部更新了!在您之前看到 Begin/End 对的所有位置,您现在都可以看到一个异步版本的方法。因为 SDK 更新版是在 .NET 4.0 上编译的, 因此能在 Visual Studio 2010 和 Visual Studio 2012 上运行。

在这个简短的博文中,原作者想说明几个基本点:

1.  如何获得SDK

2.  如何用通过async/await使用 SDK

3.  谈一点关于Task出现异常的情况

对于 SDK 的用户而言,最重要的一点是,您现在可以使用Service Bus SDK 来编写异步可读代码。

获取 SDK 公测版

目前的2.0 SDK 并非我们的最终产品。尽管如此,它还是包含了很多可以在您当前项目中使用的元素,让您可以使用 Windows Azure Service Bus来构建产品。此程序包只能通过 NuGet 获取。要将此程序包添加到您的项目中,可以用下面两种方法之一:

1.  通过NuGet GUI 安装在Visual Studio 中

2.  通过程序包管理器控制台安装在Visual Studio 中

这些说明的前提是假定您在Visual Studio 中打开了一个项目并且您希望在该项目中添加Service BusSDK。对于喜欢使用鼠标的人,请在项目节点或引用节点上右键单击并选择“ManageNuGet Packages…”。确保您选择了 Include Prerelease(默认为Stable Only)。然后搜索 servicebus。选择 WindowsAzure Service Bus 并点击 Install

Package Manager Console(可通过View\OtherWindows\PackageManager Console 访问)里,通过输入以下内容安装新版本:

Install-Package -IdWindowsAzure.ServiceBus –IncludePrerelease

请确保包含-ncludePrelease 标志,否则您将无法获取基于任务API 的版本。

如何用通过async/await使用 SDK

让我们编写一个使用Microsoft.ServiceBus.NamespaceManager 和Microsoft.ServiceBus.Messaging.QueueClient 的简单方法。我们将检查队列是否存在,如果不存在就创建一个队列。然后我们将向队列发送消息以及从队列接收消息。就是这样,我们要编写Service Bus版的Hello,World。为了显示异步编程的好处,我们等待5秒后再发送消息。代码中的注释说明了程序的执行过程。

我们在这儿看到等待完成发送和接收的时间约 9 秒。在这段时间,客户可以用 CPU 处理其他事情,而不用一直等待消息出现和返回。您还能发现异步代码变得和同步代码一样易于阅读。作为比较, 看一个原来的异步编程模型代码有多令人畏惧的例子,以下代码仅仅做了检查队列是否存在这一件事:

异常和显式任务使用

如果您是异步编程模型(所有的Begin/End 对)的现有用户,您可能知道 Begin 方法将执行参数验证。如果参数发生任何问题,就可能会抛出异常。处理完成后,还可能发生其他错误。这种情况下,您需要在 Begin 和 End 方法上都捕获异常。为了简化您的开发过程,我们选择让异常只有在任务结束后才抛出。这对您有何意义?这意味着您只用在一个地方捕获异常,不用去更多地方寻找。例如,如果您在异步编程模型中的代码是这样的:

且您选择使用基于任务的API,则您的代码将会更改,以在ContinueWith 块中处理所有异常:

或者,您也可以选择继续任务,等待其完成,这样您的代码将变成:

如果您选择了更轻松的途径,对应的async/await异常处理代码将进一步变得更容易读(和写):

结束语

能够向我们的客户提供这些功能,我们感到非常激动。我们希望这样可以使您的开发更简单,也能使您团队中必须使用Service Bus的人员笑逐颜开。 

本文翻译自:http://blogs.msdn.com/b/windowsazure/archive/2013/04/11/task-based-apis-for-service-bus.aspx

 

 

转载于:https://www.cnblogs.com/sesexxoo/archive/2013/04/26/6191185.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值