Share via


.NET的Windows Azure SDK 2.0发布通知

[原文发表地址]  Announcing the release of Windows Azure SDK 2.0 for .NET

[原文发表时间] 2013-4-30 10:37 AM

今天早上我们发布了.NET的Windows Azure SDKv2.0更新。这是一次主要的Windows Azure SDK更新,它带来了一些真正很好的新功能和改进。这些更新改进的地方包括:

· 网站:Visual Studio 工具的发布,管理和诊断的更新

· 云服务:支持新的高内存虚拟机大小,更快的云服务发布以及Visual Studio工具的配置和诊断数据的查看

· 存储:存储客户端2.0现在已经包含在新工程中并且Visual Studio服务资源管理器支持存储表

· 服务总线:更新客户端库支持消息泵编程模型,支持浏览消息和 自动删除空闲消息实体。

· PowerShell 自动化: 更新支持PowerShell 3.0,和许多PowerShell命令行用来自动化管理网站,云服务,虚拟机还有更多。

所有这些SDK增强的功能现在都可以开始使用,你可以从Windows Azure .NET Developer Center下载获得SDK。像所有我们提供的其它Windows Azure SDKs,Windows Azure SDK for .NET是全开源的工程(Apache 2 许可证)托管在GitHub

下面是今天发布的更多的关于新功能的详细内容和功能:

网站: Visual Studio发布功能的改进

随着今天的发布我们已经使发布Windows Azure 网站变得更加容易。只要在Visual Studio任何ASP.NET网站工程上(或者网站工程)点击右键发布到Windows Azure:

image

在你第一次在 工程上运行该命令会弹出发布配置文件对话框:

image

点击导入按钮会使你能够导入将发布的配置文件(这个操作只需要在你的工程上做一次——它包含了所有在Windows Azure上发布你的网站需要的设置)。

随着之前的SDK发布你已经手动下载了发布配置文件从Windows Azure管理门户。启动今天的发布版本你可以把你的Visual Studio中Windows Azure Subscription联系起来——此时你可以浏览在Windows Azure中网站的实时预订列表,并选中你想要发布到的位置(这期间不需要手动下载任何东西):

image

然后选中你想要部署你的应用程序发布到的Windows Azure网站,点击ok,你的应用程序在Windows Azure上马上就能生效。你可以然后快速再次发布(在几秒钟内)不需要配置任何(所有的发布配置文件设置都将被保留供下次使用)。

网站:支持Visual Studio服务器资源管理器内管理

今天发布的SDK也添加新的网站管理支持,可以通过Visual Studio服务资源管理器部署到Windows Azure云上。当你把你的Windows Azure subscription和Visual Studio联系在一起,你将会在Visual Studio服务资源管理器看到所有运行在Windows Azure上的网站:

image

除了列出你的站点,你也可以通过右键菜单执行常用的操作像启动/停止。你也可以在站点上使用查看配置( View Settings 命令行从Windows Azure来获取运行的站点的配置信息:

image

你也可以直接在Visual Studio中查看,编辑和保存站点的设置。这些设置会实时得从Windows Azure云上运行的实例网站上引入:

image

你在本地保存的更改将立刻保存到Windows Azure上运行的实例中。你不需要重新部署应用程序甚至不用打开Windows Azure管理门户。

网站:流诊断日志

在今天的发布中一个真的非常棒的新功能是支持将你的Windows Azure网站应用程序的日志直接流入Visual Studio。这是一个非常有用的功能,可以让你简单地调试你的正在Windows Azure云上运行的应用程序。

如何开启实时日志诊断流

为了尝试这个功能,我们将先向ASP.NET网站应用程序上添加跟踪语句并且发布到Windows Azure(作为网站)。我们将添加跟踪语句到我们的应用程序中使用标准的.NET System.Diagnostics跟踪API。我们将使用Trace.TraceError() 方法来输出错误:

image

默认情况下当我们点击网站时这个方法不会做任何事-因为跟踪在网站上默认是禁用的。

如果我们想要启用网站上的跟踪(为了调试代码)可以通过Windows Azure管理门户(点击网站上的配置选项卡来启用)。或者另一种选择是我们可以直接在Visual Studio中的服务资源管理器中使用查看配置View Settings 命令(跟我们刚才看到的一样):

image

注意上面我们如何为我们的网站启用应用程序日志,以及开启它以便记录所有的“错误”跟踪事件。确保“Error”已经选中了的然后点击“Save”按钮来将保存设置在Windows Azure——此时我们可以再次点击我们的网站,这次我们的跟踪错误语句将会被保存。

为了可以在Visual Studio内部查看跟踪语句我们需要简单的点击我们的服务资源管理器中的网站并且选择在输出窗口查看流日志View Streaming Logs in Output Window 命令:

image

这将打开我们的Visual Studio输出窗口——那将显示Trace.TraceError()语句,跟他们在运行站点上执行完全一致(从它执行到在Visual Studio输出窗口中显示的点会有a~2秒的延时——当你想尝试调试代码时这将是非常方便的):

image

但你已经调试完问题,只要再次右键网站并且选择Stop Viewing Logs命令来停止发送日志到VS(当你已经调查完问题通过回到设置窗口并且禁用它确保完全关闭日志):

image

以上支持的是非常有用的,而且使只发生在真实的Windows Azure环境调试问题变得更加简单。更多关于这个功能的内容(包括如何通过命令行来使用它)请查看来自Scott Hanselman 这篇博客

注意:在你可以把应用程序日志流入VisualStudio之前你必须在你的Windows Azure网站上有一个 /LogFiles/Application目录。这个目录将在第一次将跟踪语句写入磁盘时被创建——因此你想要确认在Visual Studio内打开日志流视图之前你先执行了跟踪语句。我们将在一周或者两周内对Window Azure网站做一个更新,那将为你自动创建目录——为已经存在的和新的网站。这样使你能够开始日志流甚至在跟踪操作发生之前。直到那时只要确保你已经写了跟踪语句在你在VS启动日志流窗口之前。

云服务: 支持高内存虚拟机实例

两周之前我们宣布了Windows Azure IaaS的可用更新。包括作为发布的一部分我们将支持创建大内存的IaaS虚拟机,使用我们新的4 core x 28GB RAM (A6)8 core x 56GB RAM (A7) 虚拟机型号。

从今天的.NET Windows Azure SDK 2.0开始,你也可以部署这些一样大小的虚拟机到你的云服务上:

image

更多的关于虚拟机大小的详细内容请参考:https://msdn.microsoft.com/en-us/library/windowsazure/dn197896.aspx

云服务:更快的部署支持同时更新选项

今天的发布包括了一些改善来提高部署和云服务的更新时间。

其中一个我们现在支持的新部署选项是 “同时更新”的云服务能力(我们有时也称之为为“Blast Option”)。当你使用这个选项时我们绕过正常的升级域步,那已经做好了在默认云服务下(我们同时升级部分云服务来避免整个服务停掉)相反我们升级所有的任务和实例。随着今天的发布这个同时更新逻辑现在在Windows Azure发生(在云端)。这有益于使云服务能够更新得更快。

注意因为会同时升级所有的任务,你需要在产品中的一般的升级使用它时更小心(否则用户将体验到应用程序停止工作)。但是当你你想要快速更新开发或者测试环境时它是很好的一个选择(你不会在乎升级时一小段停工时间),或者你需要快速更新产品里的关键性的应用程序以及你能接受的短暂的应用停止的影响。

为了使用Visual Studio来执行同步更新,在云服务发布向导选中“Advanced Settings”选项卡并且选择Deployment Update复选框旁边的“Settings”链接:

image

这将打开一个新的对话框。在它上面你现在选中新的“Simultaneous Update”选项:

image

一旦保存了,使用这个选项针对这次云服务的更新将被执行以及所有的任务和实例都将同步更新。

云服务:改进了诊断支持

今天的发布也包括了一些主要的针对云服务的诊断支持。

简单得配置诊断

Visual Studio已经启用了好几个版本的Windows Azure 诊断。随着今天的Windows Azure .NET SDK发布我们使开始正确的诊断收集计划甚至变得更加简单。利用它提供的数据可以发现错误以及获得其它关于实时服务的有用信息。

你可以右击Visual Studio 解决方案资源管理器中的云服务角色来打开它的配置:

image

今天的SDK版本中包括了最新的诊断信息配置:

image

你可以使用这最新的诊断配置你定义想要的收集方式和被默认.NET跟踪监听捕获的存储错误和你的Trace.TraceError()代码——所有都不需要要任何代码来设置和初始化。你可以指定运行时你想要的收集计划:只有错误 [ 默认 ] ,所有信息或者自定义计划。自定义计划非常丰富和启用错误级别的细晶粒控制,性能计数器,基础设施日志,收集间隔和更多。

你通过配置用户界面配置的同时保存在diagnostics.wadcfg XML文件。如果你打开服务资源管理器中的云服务role节点你会发现它并且可以选择用文本编辑器直接编辑设置:

image

因为这个文件同你的源代码一同保存因此可以用源代码管理器来管理。它也可以伴随你的云服务一同部署,可以更改部署但无需重新部署应用程序(我在下面介绍如何启用者实时更新)。

在实时服务上查看诊断

随着今天的发布我们也使开发者更容易得在Visual Studio中直接查看实时的云服务诊断——同时动态得开启或者关闭云服务捕获更多详细的诊断而不需要重新部署云服务(那使快速调试实时产品问题更加的简单)。

任何已经发布了的云服务,你可以同过点击Visual Studio中View Diagnostics Data命令快速查看实时服务错误的摘要和其它重要的状态——那都在Visual Studio服务资源管理器中云服务的表层:

image

执行这个命令将会查询出Windows Azure上云服务诊断表和最近数据的一个快速摘要列表。在下面的例子中我们可以看到我们忘记了更新应用程序指向SQL数据库配置文件,因此我们的部署了的服务中调用存储过程失败: image

你可以获得更多的详细诊断数据因为它们被收集存放在云服务的诊断存储账号中。点击View all Data链接来访问它。这会加载一个新的Windows Azure 存储表查看器。你可以使用它支持的查询生成器来提炼你的诊断数据。在接下来的例子中我们筛选发生在下午5:48的实际数据。这指的是发生时服务上的而不是收集和传送过来的时间数据。

image

这比你通过查看历史日志来尝试和鉴别问题来的更加的容易。

更新实时服务的诊断设置

Visual Studio现在也让你能够直接在服务资源管理器为运行着的云服务配置和更新诊断设置。诊断配置可以被随时更新而不需要向你的工程添加代码,也不需要重新部署云服务(那比快速调试实时产品来发现问题来得更容易)。

这样做,使用Server Explorer->Windows Azure Compute节点选中Windows Azure在运行的角色实例 ,然后点击Update Diagnostics Settings命令来为它配置运行时诊断设置:

image

选择这命令将弹出一个允许你查看和修改角色的诊断设置对话框。注意我们可以动态得修改应用程序的日志收集设置,事件日志,性能计数器,基础设施日志(像IIS,等等),还有更多:

image

在这个例子中我们将从性能计数器收集关于角色的有效的内存+CPU+Requests/sec信息。我们接下来这么做,选择Performance Counters选项卡和选择合适的计数器。除了选择我们想要追踪的性能计数器,我们也需要设置Transfer period (in minutes)Buffer size (MB)。 我们分别设置它们为1分钟和1024 MB(如果我们不设置这些日志将不会被拷贝到我们的存储账号中):

image

当我们点击OK,收集计划将立刻被应用到实时的角色实例上,我们将开始收集新的我们指定的数据。大概不用一分钟我们将看到WADPerformanceCountersTable在我们的存储账号中创建,我们的性能监视器数据将开始被收集:

image

双击上面的表格使我们能够浏览和查看性能监视器数据。

现在我们能够在运行时动态的打开/关闭这个功能(不需要重新部署云服务),这是非常有用的。如果我们想要为后续的每次部署更改做长期的收集计划,我们只要应用我们在运行时做的配置更改到云服务工程的角色设计器中(或者签入到源代码控制器)。那样新的云服务部署将默认拥有这个功能。

更多信息

上面的诊断支持真的是非常有力的,可以捕获云服务中的任何数量的角色和实例诊断数据(包括网站和工作者角色)。它使得能够在多层部署中调试问题更加的容易。

注意当你在Visual Studio中创建新的云服务工程,默认情况下.NET诊断监听支持输出跟踪语句到Windows Azure诊断代理是开启的。如果你 启动已经存在的ASP.NET网站工程,然后把它转化成云服务,为了能够开启上面的诊断支持你将需要手动的添加下面的监听注册代码到你的web.config文件:

<system.diagnostics>
<trace>
<listeners>
<add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
name="AzureDiagnostics">
<filter type="" />
</add>
</listeners>
</trace>
</system.diagnostics>

存储 : Visual Studio 表格资源管理器

随着Windows Azure SDK 1.8的发布我们改进了Visual Studio工具来支持Windows Azure存储。之前的版本侧重于Windows Azure 存储Blob和队列服务的读/写 。

随着今天的Windows Azure SDK 2.0发布,你也可以创建和删除Windows Azure 表格,从Visual Studio服务资源管理器中添加/编辑/删除表实体 。这样节省了你的时间并且允许你简单的使用Visual Studio来创建使用Windows Azure 存储表的应用程序。

在 Visual Studio服务资源管理器中,右击Windows Azure存储节点来创建并命名一张新的表:

image

一旦你创建好表之后,你就可以在Visual Studio中直接选择添加实体(只要点击表设计器上的“Create Entity”按钮):

image

你也可以编辑/删除已经存在的表实体:

image

我们现在也使它更加容易得生成表查询——不需要OData专业的语法知识——使用表工具中新提供的查询生成器:

image

上面的特性使Windows Azure存储表的使用变得更加简单。

服务总线 : 更新客户端库

今天的发布也包括了服务总线的很多个很好的新功能更新:

· 消息浏览支持:消息浏览使你能够在队列中查看可用的消息而不用锁定消息或者执行显式的接收它的操作。这是非常有用的调试方案,也是很不错的监测方案。

· 新消息泵编程模式:今天的发布也添加了新消息泵编程模式支持。消息泵编程语义类似于事件驱动,或者“推送”基于处理模型并且提供我们今天支持的 替代接收循环。这种方法支持并发消息处理,处理消息使变率。

· 自动删除无用的消息实体:自动删除允许你设置空闲队列后的间隔,主题,或者订阅然后执行自动删除。

PowerShell: 许多新的自动化命令

随着今天的发布,Windows Azure PowerShell(这是一个单独的下载)已经支持PowerShell 3.0。今天的发布也包括了很多新的PoserShell命令行是你能够自动化Windows Azure网站,云服务,虚拟机,以及应用程序服务包括服务总线和Windows Azure存储区。你可以在这里找到完整的更改日志。

下面提供了一些新功能的例子:

网站

你可以通过接下来的命令行在PowerShell控制台拿到http和应用程序的流日志:

>>> Get-AzureWebsiteLog <your website> –Tail 

云服务

通过选择同步升级选项你现在可以使用更快的部署选项,那将并行升级所有的网站和工作者角色:

>>> Set-AzureDeployment –Mode Simultaneous

虚拟机

你可以用这两条命令行来使用新的高内存虚拟机A6&A7镜像:

>>> New-AzureVM

>>> New-AzureQuickVM 

当你通过PowerShell创建虚拟机时我们默认开启PowerShell远程为了使你能够更简单得对你在Azure上新创建的虚拟机运行PowerShell命令或者脚本。

服务总线

现在你可以管理服务总线命名空间。通过新添加的命令允许你创建,列出和删除服务总线命名空间。

Windows Azure 存储区

你现在可以从PowerShell管理你的Azure存储区附加组件。你可以列出可用的附加组件,购买一个附加组件,查看你购买的附加组件和升级你购买的附加组件上的计划。

例如,下面的命令会从MongoLab(我们Windows Azure存储的合作伙伴之一)创建和部署一个MongoDB服务:

>>> New-AzureStoreAddOn myMongoDB –AddOn mongolab –plan free –Location “West US”

存储

我们现在支持通过PowerShell进行blob CRUD操作,这允许你管理存储blob容器,上传/下载blob内容,和拷贝blobs。这你能够在开发你的应用程序时通过创建脚本来产生一些应用程序的初始化的数据或者快速检查你的存储账户里面有什么内容。

网站 / 工作角色支架命令

我们也为支架添加了新的命令。你现在可以用Add-AzureWebRole 和Add-AzureWorkerRole来给一般的网站/工作者角色创建工程。你可以使用New-AzureRoleTemplate来生成一个自定义的角色模板,那你可以用在Add-AzureWebRole或者Add-AzureWorkerRole命令,自定义- TemplateFolder参数。

更多信息

在今天的发布中的一些其他更新/更改:

· WindowsAzure.Diagnostics.dll不再依赖于WindowsAzure.StorageClient.dll。你能够在你的应用程序中导入和使用WidowsAzure.Storage 2.0 NuGet包而不用不会产生冲突。

· Windows Azure SDK 2.0支持与Windows Azure SDK 1.8和1.7的链接,然而不支持与Windows Azure SDk 1.6的链接。因此如果SDK 2.0也装在同一台机器上你将不能调试 SDK 1.6服务。

· WindowsAzure.ServiceRuntime.dll, WindowsAzure.Configuration.dll和现在生成的缓存程序集都是针对.Net framework 4.0运行时的。因此在你迁移到Windows Azure SDK 2.0后你将不得不重新指定你的框架3.5到4.0。

· 我们最近也发布了Windows Azure云服务支持策略,你可以在https://support.microsoft.com/gp/azure-cloud-lifecycle-faq查看详细的信息。

了解更多信息

你可以深入了解今天的SDK版本,或者从本周最新的Cloud Cover Show9频道查看到一些演示视频:

image

总结

今天的发布包括了一些非常好的特性,那是你能够创建更好的云解决方案。如果你还没有一个Windows Azure账号,你可以注册一个来免费尝试和开始使用今天的所有以上的特性。然后访问Windows Azure .NET开发者中心来学习更多的如何使用今天的SDK版本创建应用程序。

希望这会对你有所帮助,

Scott

除了博客,我也在使用推特快速更新和共享链接。关注我:twitter.com/scottgu