Visual Studio 2013

Visual Studio Online 简介

Ed Blankenship

无论您是多人团队的一员还是单枪匹马,凭借 Visual Studio Online,您可从任何地点轻松实现对要求极为苛刻的应用程序的规划、创建、构建、生成、测试和监视。 无需依赖大型基础结构团队,也不必接触任何服务器。 对于像我这样曾经作为顾问执行了数百次 Team Foundation Server (TFS) 安装和升级的人而言,非常乐于看到此类日常维护的苦差尘封于历史。 Visual Studio Online 自动、持续更新至最新功能,因此您能够集中于最需要做的事情:构建您的应用程序!

新增内容?

经常有人问我:“Visual Studio Online 不就是云中的 TFS 吗?”我的回答是:它既是也不是。

TFS 始于八年前,并于 2012 年随着 Team Foundation Service 的推出而开始转向云托管的应用程序生命周期管理 (ALM) 服务。 一经面世便广受欢迎,创业团队甚至中型公司纷纷“告别”其内部部署的基础结构。 最吸引人的是:每隔几星期,当 TFS 产品组将新功能囊括在他们的内部开发迭代时,这些新功能便会展现在眼前。 注册用户可通过查看 bit.ly/17DV8Yl 上的功能时间线,或者关注 Twitter 上的 VSOnline (twitter.com/vsonline) 等社交媒体了解新功能。

因此,可以说 Visual Studio Online 是 TFS 和 Team Foundation Service 的下一代产品,为您提供了云中 ALM 的基础设施。 也可以说不是,它们并非完全相同。

当 Microsoft 转型成为设备和服务公司时,你们中许多人已经问过:“这对我这样的开发人员意味着什么?”凭借 Visual Studio Online,Microsoft 现在提供了一个服务平台,无论是深夜埋头于自己的个人项目还是与团队协同开发大型系统都可以充分利用这个平台。 我将探究其中的一些服务。

ALM 及其他

基于云的特性使 Visual Studio Online 提供一些高性能体验:

在云中生成。 无服务器,无开销 — 非常棒。 每次执行生成时,您的代码均从一份干净的服务器映像开始。 您不知道的这些依赖关系和计算机配置是否在一直让您感到头疼? 不会了。 您对生成结果仍具有完全访问权限,因为它们也保存在 Visual Studio Online 的源代码存储库中。 这样会需要更复杂的设置吗? 可以考虑混合解决方案 — 将宝贵的内部部署资源用于高度定制的工作流或基础结构,而将 Visual Studio Online 用于持续集成等基础工作。

云中的负载测试。 对于个人、创业公司甚至更大规模的团队而言,进行正确的性能测试和负载测试并不容易,原因是配置和资源开销比较昂贵,而且费时费力。 在所构建的应用程序是否满足能要求还是个未知数的情况下,怎么确定这些开销是否值得? 现在,Microsoft 基础结构提供了一项服务,该服务始终运行最新版本的负载测试软件。采用这项功能齐全的负载测试服务,不必再等到产品发布后再祈祷其如你所愿。 不必再跑到仓库翻寻那些淘汰下来的计算机,或者受困于弄清您需要安装和配置什么 — 您可以按照任何能够满足实际运行的方式来设置并衡量您的测试。 无论要添加 100 个虚拟用户,还是需要启动测试为节假日进行准备,负载测试都能根据需要处理您的需求。

实时全方位应用程序监视。 您没有专用的服务中心来监视您生产系统的状态和健康情况? 凭借 Visual Studio Online,现在您能够做到这一点。 Visual Studio Online Application Insights 从您的应用程序收集大量运行、性能和客户使用信息 — 无论它们是在本地运行、在 Windows Azure 中运行、在第三方云提供商那里运行,还是以上述所有三种方式的混合方式运行。 不仅保持系统正常运行,您还能够主动地监视使用情况,以便帮助您确定下一步要实现的杀手级功能。 此服务还利用可在您正在调查实时问题时提供帮助的应用程序元信息,例如生成和部署信息,这可使您在任何环境(包括生产)中都能返回到您的解决方案和源代码。 这些信息是与您其余 ALM 信息位于相同的数据存储中,因此是已知的,这可节省您的时间。

获得您自己的 IDE,或者在您的浏览器中使用轻量级代码编辑器。 Visual Studio Online 可使您随时随地以任何方式更新您的代码。 当然您拥有 Visual Studio,现在您可使用 Git 存储库无缝连接到用于跨平台开发项目的 Eclipse、Xcode 以及其他众多 IDE。 另外,保持简单:利用代号为“Monaco”的新型轻量级 Visual Studio Online 代码编辑器从任何新式浏览器即时更新。此代码编辑器与您桌面上 Visual Studio 的使用形成了互补。

就像您一样,Microsoft 致力于提供持续价值,每三周对 Visual Studio Online 推出重要的新版本。 如果您对某一功能有很好的想法,您甚至可在 UserVoice 上为自己投票。 那么还等什么呢? 即刻访问 visualstudio.com 揭开面纱。 前五名用户免费,进行 MSDN 订阅有额外优惠,即付即用服务以及面向其他团队成员的附加 Visual Studio Online 用户计划具有推广性折扣。 您不必担心额外存储、事务、带宽、计算周期等,因为它们包含在用户计划和即付即用服务中。

从无名小卒到英雄:设置项目,通向成功之路

想看看 Visual Studio Online 如何能够帮助您交付下一代杀手级应用程序? 以下场景将指导您完成利用 Visual Studio Online 进行的示例初始迭代。 如果您已经使用了 TFS 或 Team Foundation Service,则其中的一些方面将看起来熟悉。

它的具体情形是这样的:您是一个资源有限但对某一应用程序具有出色想法的小型团队中的一名首席开发人员。 您需要快速启动,但您期望该应用程序存在一段时间,以便使您的项目不断获得成功。 您不想将任何时间浪费在设置基础结构或部署流程或测试流程上。 您只想生成您的应用程序,并尽快将其交付到客户手中。

其启动步骤快捷而方便,非常轻松。 转到 visualstudio.com,找到右上角中的“Get started for free”链接,填写表格,然后 … 就完成了。

拥有帐户后,您需要一个您和您团队能够工作的地方。 在 Visual Studio Online 中,顶级容器是一个团队项目,因此您的第一步是创建其中的一个。 此时,您需要做出两个重要决定:

  • 要使用哪种类型的源代码控制存储库,以及
  • 哪个过程模板将最适用于跟踪您的工作项。

在具有 Git 的分布式版本控制和 TFS 中您熟悉的传统版本控制之间做出源代码控制选择。 例如,假设您的团队当前正在编写 Windows Phone 8 应用程序及其后端服务,但最终计划将该移动应用程序移植到 iPhone 和 Android 设备。 了解到您将必须在多个平台间使用不同 IDE 工作后,您选择对您的源代码控制存储库搭配使用 Git。 有关 Team Foundation 版本控制 (TFVC) 与 Git 之间的选择的更多信息,请查看 Channel 9 视频,网址为 bit.ly/16XPcUK

该过程模板是对工作流的定义:您的工作项叫什么,当您操作这些工作项时它们经历了哪些状态,以及其他元数据。 您可以在三个模板间进行选择:Scrum、Agile 和 Capability Maturity Model Integration (CMMI)。 如果您的团队正在进行 CMMI 或更正式的流程,您可能会使用该模板。 如果你们是一个敏捷的团队,或者您没有特定流程,则在 Agile 和 Scrum 模板之间进行选择。 这二者之间的最大区别是它们处理错误的方式以及它们对积压工作项所使用的名称。 Agile 模板将错误作为任务加以处理,而 Scrum 模板将其显示为积压工作项中的一员。 如果您不确定,则坚持使用 Scrum 模板 — 出于某种原因,这是默认模板。 选择 Scrum 模板不意味着您必须进行 Scrum;这仅意味着您将看到用于工作项类型的 Scrum 术语。 Scrum 将需求称为产品积压项 (PBI),而 Agile 模板将要求称为用户案例。 有关使用团队项目以及这两个过程模板之间主要区别的更多信息,请访问 bit.ly/Vh0azl

您拥有了自己的帐户和团队项目后,该添加您的团队成员了。 为此,确保您具有他们的 Microsoft 帐户(原 Live ID),浏览到您的项目主页 (myawesometeam.visualstudio.com),然后执行图 1 所示的流程。

Adding Team Members
图 1 添加团队成员

如果您想微调权限和其他管理细节,则使用顶部的设置齿轮图标。

步入正轨:设置您的第一个迭代

在管理细节完成后,就可以开始了。 您已选择了 Scrum 模板,但就是否需要采用正式 Scrum 时您的团队(你们所有五个人)没有完全信服。 您知道您想进行迭代开发,以便尽快提供功能正常的代码,然后将来自客户的反馈纳入下一迭代中。 您还想了解当前工作进度,以及下一步做什么,并且能够排列优先级。

开始操作工作项前,我将快速介绍其中一些细节。 选择 Scrum 模板意味着主要的工作项是功能、PBI、错误和任务(存在其他工作项类型,但其中大部分在后台帮助您)。 图 2 概括了这些工作项类型之间的关系,这些关系是通过工作项链接来保持的。

Work Item Relationships
图 2 工作项关系

一般,功能代表将跨越迭代(有时这些称为事迹)的工作量,PBI 是可在一个迭代中完成的客户价值的单位,任务是可在数天内完成的工作单位。 通过这种方式,可将项目视图的范围限定于当前有意义的任何粒度级别,可以是在资产组合级别,也可以降至细节级别。 工作项方面的具体内容超出了我们的讨论范围,建议您查看 MSDN 上的相关文章,以便了解更多信息。

关于工作项的最后一点说明:一个字段的存在不意味着您必须使用该字段。 使用对您团队有意义的字段,忽略没有意义的字段。 过去我帮助过许多团队,我的建议是尽量使事情保持简单。

该开始填写积压工作了,单击项目页上的“工作”选项卡。 将显示您的产品积压工作。

左侧的菜单可使您将您视图的范围限定在相应的粒度级别,您可以从右侧的列表将项目添加到该级别。 重新对您的 PBI 进行纵向排序,从而对积压工作进行优先级排序。

现在,产品积压工作中已经有了一些工作,该开始考虑您的第一个迭代了。 您的团队想要快马加鞭,因此决定在一个周内交付迭代,目标是每周二完成产品。 首先要做的是为您的迭代设定一些日期。 您可以在设置菜单中完成此操作。或者,如果您视图的范围限定在特定迭代,则在“设置日期”链接中完成此操作。

在为您的迭代指定了日期后,您可以开始将 PBI 从积压工作指定到您的迭代中,操作是从右侧将它们拖出来,然后将它们放在左侧的相应迭代上。 当这些 PBI 位于某个迭代中后,您可以为您的团队成员将它们细分成多个单独任务,如图 3 所示。

Iteration Planning
图 3 迭代规划

这只是您可以利用敏捷的规划工具执行的操作的冰山一角。 随着您团队的发展以及您的需求变得更加复杂,您可以添加容量规划、预测和测试计划管理等方面。 目前,它要多复杂就有多复杂。现在开始完成 PBI。

当您逐项完成积压工作中的项目时,您需要了解工作进度。 您的团队想要更好地了解当前迭代的状态,因此在您的下一次每日站立会议中,您可以使用迭代任务板。

这可使您更好地了解每个 PBI 的状态,并且有助于使您的每日站立会议保持正常进行。 迭代任务板为拖放式的,并且启用了触摸功能,因此您能够在会议过程中快速进行更新,以便使该板(以及您的工作项状态和团队任务)保持最新状态。

迭代任务板非常适用于跟踪工作,但要通过您的团队熟悉此价值流,您需要一个将范围限定在 PBI 或功能级别的板。 转换到看板,这可从产品积压工作中访问。

从这里,您能够为每列设置未完成工作的限值,跟踪工作流,以及查看您团队的累积流程图。 想要让看板体现您团队的工作流,单击“自定义”列按钮,然后进行相应更改。 更改列名称,根据需要添加新的列。 每个团队都可定制这些列,以适合自己的需求,同时不影响其他团队。

现在,假设您已找到了第一个投资者! 然而,该公司希望了解实时动态,为保持现金流动,希望每周对提供的价值以及产品的质量进行状态更新。 这似乎会导致大量开销。 幸运的是,您了解工作项图表,如图 4 所示,这可使您快速轻松地生成您需要的报告。

Work Item Charts
图 4 工作项图表

十分钟后,您的投资者很高兴,并且您能够回过头来使您的客户感到高兴。 您甚至能够将您已创建的工作项图表钉到团队的仪表板上。

提供价值:生成您的应用程序

您知道如何编码。 您还知道保持良好的质量对您的客户极为重要。 不幸的是,您和您的团队有太多新的想法,以致于有时很容易在没有完全充实当前概念的情况下快速转到下一个概念。

您的代码库并非始终成功编译。 迅速进行反思之后,您的团队确定需要通过以下方式开始使用自动化生成:使用持续集成 (CI) 生成,甚至启用网关签入,以便将不良代码排除在存储库之外。 您没有基础结构或时间来设置自己内部部署的生成服务器。 这正是 Visual Studio Online 云生成服务的价值所在。

从 Visual Studio IDE 的团队资源管理器中,选择生成页,然后选择“新建生成定义”。 为新定义起一个名称,选择您的触发器,然后完成其余向导。 别忘了在完成时保存您的生成定义。

作为 CI 生成(或其他任何触发器类型)并不意味着需要计划外生成时无法手动启动构建。 当然,您能够从团队资源管理器启动构建,但其中的乐趣在哪里? 打开符合标准要求的浏览器,转到您项目页上的“生成”选项卡。 从左侧列表中选择您的生成,然后单击“排队构建”。

设置好 CI 生成并使其正在进行时,跳转到您的团队房间查看结果,并与您的团队分享这些好消息。 有关生成的更多信息,请查看 bit.ly/158otoM

按需负载测试

您的用户群正在快速发展,但用户正在报告您站点上的大量滞后情况。 您无法确定滞后的根源所在,因此您想要创建一些实际性能和负载测试,以便帮助发现瓶颈。 您首先开始记录使用 Visual Studio Ultimate 进行的一些 Web 性能测试。 每个测试均代表用户将与您站点进行交互的典型方式,这称为综合事务。

然后您将这些性能测试结合在一起,以便在系统上模拟典型负载。 稍后,您计划创建一些其他场景,但目前,您只想坚持这种正常的适宜途径的场景。

在您将性能测试平衡到负载测试中后,通过打开测试设置文件,然后选择 Visual Studio Online,设置负载测试,使其在 Visual Studio Online 上运行。 然后在数据滚入时,您可以进行观察,如图 5 所示。

Viewing Load-Test Results
图 5 查看负载测试结果

是的,您在不到一小时内执行了此操作。 有关更详细的演练,请参见 bit.ly/18hIcCm

监视和持续学习:收集遥测数据

您的应用程序及其支持性 Windows Azure 站点和服务是实时的。 用户似乎正在下载它。 人们似乎正在浏览此站点,并且客户端应用程序正在后端访问这些服务。 至少似乎正在发生某种事情。 您只是不十分确定是什么 …

您需要开始在您的整个应用程序中收集遥测数据。 不仅仅是网页、服务器性能和 Windows Phone 8 应用程序,也不仅仅在您的 Windows Azure 数据层上。 您需要整个端到端 UX 流间的完整视图。 我们来看看 Visual Studio Online 上的新 Application Insights 服务。

要开始使用 Application Insights 服务,则转到您 Visual Studio Online 帐户的主页,然后单击 Application Insights 磁贴。 您需要使用您的邀请代码注册您的应用程序,因为该服务器当前处于受限预览状态。 完成此操作后,您可以设置一个对 URL 执行 ping 操作的简单测试(新的单 URL 测试),然后看到这些数据开始流动。 这是基本 ping 测试的示例,但您还能够充分利用您先前为负载测试创建的,作为 Web 性能测试的综合事务。 然后您能够利用基本 ping 测试或者来自全球多个数据中心的综合事务监视您的应用程序。

您还能够配置 Microsoft Monitoring Agent,使其将应用程序性能监视数据报告给 Application Insights 服务。 这将使您更好地了解您应用程序的服务利用每个依赖关系所表现出来的行为方式,包括数据库和其他服务。

对于大多数站点和连接的应用程序,没有什么比正常运行时间更重要。 您的应用程序也一样,不幸的是,尽管您认为您的服务正常运行,但某些客户报告说您的服务中断了,这使您措手不及。 您需要持续的实时可用性监视,以便您第一个知道测试是否失败或者您的站点是否中断。 这恰恰是 Application Insights 能为你提供的。

知道您的站点是否可用非常好。 确切知道哪一行代码或存储过程正在使其变慢就更好了。 能够从您的性能监视服务直接跳到 IDE 中的这行代码再好不过了。 Application Insights 发现依赖关系,显示进行新部署的时间,并且汇集所有性能信息,提供应用程序最慢的 10 个部分。

现在您从 Application Insights 中获得了性能监视,您已极大缩短了您维修服务的平均时间,以及您恢复服务的平均时间。

当您第一次将您的应用程序投放市场时,您已经充分了解了您的应用程序将做什么,以及您的客户将如何与之交互。 现在您客户的需求日新月异,您的应用程序需要与时俱进。 关于如何改进客户体验,您有许多假设,但您需要的是能够证明您的设想和假设的遥测数据和元遥测数据。 凭借 Application Insights 中包含的使用情况监视,您可获得将为您应用程序的未来投资提供指导的多维数据,如图 6 所示。

Application Insights Dashboard
图 6 Application Insights 仪表板

当您的团队越来越多地利用 Application Insights 时,您开始认识到您已经通过生成软件的方式经历了模式转变。 这些洞察不再是事后反思;您已经将该过程变成了您应用程序生命周期不可分割的一份子,这极大影响了您团队对该应用程序的思维方式。 您甚至能够使用 SDK 来开始报告自定义业务指标,使其能够在您仪表板上跟踪,或者发送自定义开发人员跟踪事件。

Application Insights 已在您开发人员与客户使用您应用程序的方式之间建立了联系。 在整个生命周期内都在讨论以下问题:用户将如何与该应用程序进行交互,新的变更将如何影响性能,以及如何保持该应用程序近乎完美的可用性。

总结

这样看来,此时您已得到了答案:Visual Studio 系列的最新成员简介。 Visual Studio Online 是一种基于云的工具和服务平台,该平台有助于您计划、部署和管理您的应用程序。 它是从 TFS 和 Team Foundation Service 发展而来的,它将 Microsoft ALM 平台带到了云中,并且利用 Application Insights 和在线 IDE 等新服务强化了该平台。 这只是一个开端。 即使您正在内部使用 TFS,您也能够在需要时利用负载测试和 Application Insights 等 Visual Studio Online 服务。 Visual Studio Online 团队致力于通过每隔几周进行重大更新来不断提供价值。

Ed Blankenship  是在 Microsoft 负责 Visual Studio Online 和 Visual Studio ALM 的产品经理。在加入 Microsoft 之前,他被投票选举为 2010 年的年度 Microsoft MVP(Visual Studio ALM、Team Foundation Server),并且五年被评选为 Microsoft MVP。他是关于 Team Foundation Server 的两部书的首席作者,包括“Professional Team Foundation Server 2012”(Wrox, 2013)。

衷心感谢以下技术专家对本文的审阅:Andrew Clear 与 Cheryl Hammond(Northwest Cadence 的 ALM 顾问)
Andrew Clear 与 Cheryl Hammond 是 Northwest Cadence 的 ALM 顾问。 他们已撰写了有关 Visual Studio ALM 的众多文章和演示文稿,合作创建了企业敏捷性培训系列,并且为北美、欧洲和亚洲的大型和小型客户提供了咨询。