博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于任务的Service Bus API
阅读量:5887 次
发布时间:2019-06-19

本文共 2007 字,大约阅读时间需要 6 分钟。

编辑人员注释:本文作者 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的人员笑逐颜开。 

本文翻译自:

 

 

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

你可能感兴趣的文章
nodejs安装-配置
查看>>
Node.js学习-1
查看>>
今天你的应用崩溃了么?
查看>>
项目中的*签到*小功能!
查看>>
iOS 获取cell.accessoryView自定义视图以及点击事件
查看>>
java 考试试题
查看>>
[caffe(一)]使用caffe训练mnist数据集
查看>>
闭包,装饰器
查看>>
vs2013编译错误解决: _declspec(dllimport) 动态链接库
查看>>
这是一篇被河蟹了的博客
查看>>
一个两年Java的面试总结
查看>>
转:React Native之旅01-创建项目
查看>>
软件工程项目组Z.XML会议记录 2013/11/27
查看>>
科学计算库学习报告
查看>>
软件测试 -- 软件测试的风险主要体现在哪里
查看>>
修改App.config中的appSettings
查看>>
JQuery选择器总结
查看>>
Ubuntu中无法update的解决办法
查看>>
仿射变换
查看>>
decltype类型指示符
查看>>