Windows Azure:了解运行时环境

针对像 Windows Azure 这样的新平台开发应用程序,需要学习许多新知识。以下分步骤记述了一位开发人员的经验。

Jose Barreto

我最近学习了如何开发、测试和部署 Windows Azure 应用程序。关于 Windows Azure,我听到过许多传闻,也看到过许多来自他人的体验报告,但是我希望亲身体验,验证我的所见所闻。Visual Studio 2010 的发布是最终促使我开始行动的推动力。

在本文中,我将介绍自己创建和部署一个示例应用程序的过程。这始终是亲身体验新技术的最好方式,使我得以体验 Windows Azure 中应用程序的整个生命周期。

我以前开发过 ASP.NET 应用程序,这使我的试验过程比较轻松,因为 Windows Azure 应用程序采用了相同的体系结构,具有 Web 角色(Web 前端)和工作角色(后端服务)。Windows Azure 应用程序与常规 ASP.NET 应用程序所用的主要开发工具也相同:Visual Studio。我已经在自己的 Windows 7 计算机上安装了 Visual Studio 2010 最终版本,还添加了 IIS 作为可选的 Windows 7 组件。

除了 Visual Studio 2010 和 IIS 以外,我还下载了 Windows Azure 工具,从而增加了用于 Windows Azure 开发的附加模板。对于 Windows Azure 应用程序的运行环境,我希望了解更多。大体上,我知道这些是虚拟机,它们应该能保证应用程序正常运行,而不管应用程序的具体配置如何;但是我对 Windows Azure 是如何部署这些应用程序的感到好奇。由于具备一定的 IT 基础结构背景知识,我往往希望了解这种部署的具体情况。

为此,我决定编写一个应用程序,用于报告它所在的计算机文件系统的相关信息 – 一些简单信息,例如其中存在的驱动器及其特性(类型、文件系统、总大小以及可用空间)。另外,我还添加了查询文件夹和文件的功能,以便我了解各个位置所包含的内容。图 1 显示了我得到的最终结果。

Figure 1 A sample file system report application created in Windows Azure.

图 1 在 Windows Azure 中创建的文件系统报告应用程序示例。

毫无疑问,您也看得出来,这刚好足够了解开发体验、完成开发过程,并有相应的工具来了解 Windows Azure 运行时环境。

使用 C# 进行云开发

应用程序的创建简单明了。我使用 C# 创建了一个新项目,并选择了云项目。为了简单起见,我为这一云服务项目使用了单个 ASP.NET Web 角色。

然后,我拖动了几个控件,添加了一些代码,并开始对项目进行测试。整个开发过程在本地运行,因此现在甚至不需要有 Windows Azure 帐户。此外,我也没有使用任何 Windows Azure 存储,因此只有一个 Web 角色,而没有任何外部依赖关系。尽管这通常不是什么实用的应用程序,但我的目标是创建类似于“Hello, World”这样的入门程序。

由于我拥有完整的 Microsoft .NET Framework,因此编写代码一点也不难。例如,为了获取驱动器信息,我使用了 System.IO 命名空间

protected void btnDrives_Click(object sender, EventArgs e)
 {
   DriveInfo[] diAll = DriveInfo.GetDrives();
   string strDrive = "";
   foreach (DriveInfo diOne in diAll)
    {
       strDrive = "Drive " + diOne.Name + " Type:" + diOne.DriveType.ToString();
      if (diOne.IsReady)
       {
          strDrive = strDrive + " Volume:" + diOne.VolumeLabel + " FS:" + diOne.DriveFormat.ToString() + " Total:" + diOne.TotalSize.ToString() + " Free:" + diOne.AvailableFreeSpace.ToString();
       }
       txtAdd(strDrive);
    }
 }

除了必须以管理员身份运行 Visual Studio 以外,在应用程序的开发和本地调试方面没有其他任何复杂之处。在我运行应用程序时,Visual Studio 会自动启动本地 Windows Azure 模拟环境(请参见图 2)。我能够设置一些断点,观察代码一步步运行的过程。一切都在意料之中。

Figure 2 Here’s how my application looked when it ran through the Windows Azure Simulation Environment.

图 2 应用程序通过 Windows Azure 模拟环境运行时的情况。

部署 Azure 应用程序

我认为对于一位 Windows Azure 新手来说,最难的部分在于了解部署应用程序时的确切需要。一旦在 Windows Azure Web UI 中创建了您的服务,接下来就能部署应用程序了。

当您单击“部署”按钮后,系统会提示您提供服务部署名称以及两个文件(一个应用程序包文件和一个配置设置文件)。有关如何生成这些文件,几乎没有任何提示。

我在 Visual Studio 环境中花了一些时间,但并没有找到正确方式来创建这些文件,甚至不知道文件扩展名是什么。这时我不得不第一次查看 Windows Azure 文档。到目前为止,我只是在即兴发挥。事实上您需要右键单击云项目以找到“发布…”选项,从而生成 Windows Azure 程序包。

这将创建两个必要的文件,即一个云服务程序包 (.cspkg) 和一个云服务配置 (.cscfg)。“发布…”选项将打开包含正确文件夹的 Windows 资源管理器窗口(请参见图 3)以及包含正确 Windows Azure URL 的 Internet Explorer 窗口。

Figure 3 The Windows Explorer window opened from the “Publish-…” option.

图 3 通过“发布…”选项打开的 Windows 资源管理器窗口。

当我提供了全部要素后,服务在几秒钟之内就发布了。此后,单击“运行”就可以部署该应用程序。此时,包含正在运行的应用程序的虚拟机 (VM) 就真正完成了配置并且已经启动。该步骤需要几分钟时间。

运行服务

服务的状态从“正在初始化”变成“繁忙”,然后再变成“就绪”。此时,部署就已经完成,运行服务不过意味着点击以下网址而已:http://servicename.cloudapp.net。

此时我终于准备好了检查运行着我的服务的 Windows Azure VM 的某些特性。首先,我列出了系统上的驱动器。事实证明 VM 具有三个驱动器(C:、D: 和 E:),正如图 1 中所示。然后,我使用应用程序浏览了每个驱动器上的特定文件夹和文件。在进一步调查之后,我得出了关于三个不同驱动器的结论,如图 4 中所示。

图 4 三个驱动器上的存储解析结果。

我找到了文档中关于可以为每个 VM 指定的存储容量的信息。默认大小(较小值)为 250GB 的本地存储容量。这正是我的 VM 大小。您可以选择较大的值,例如 500GB、1000GB 和 2000GB 的本地存储容量。

但是,我没有找到关于三个驱动器之间的存储容量划分的信息(甚至没有任何关于三个驱动器的信息)。我只能告诉您,图 4 中的数值对于我当时的应用程序部署来说是真实的。

如果您打算在应用程序中使用本地临时存储,则应该查看文档中关于“本地存储资源”的信息。这些本地存储看似位于 C: 驱动器上,但是您应当使用 API 找到要使用的确切本地路径。

如果您需要使用永久存储,则应该浏览 Windows Azure 提供的诸多选项,包括 Blob、表、队列、驱动器以及 SQL Azure 数据库。这些选项通过 API 来访问,并且不作为 Windows Azure VM 本地存储的一部分来存储。

试运行要点

我感兴趣的最后一个问题是如何部署更多应用程序版本。Windows Azure 允许您将新版本放置在一个单独的“试运行”区域中。这样就有可能在使用主 URL 运行旧版本的同时,使用一个临时 URL 来运行和测试新的试运行版本。

如果您确信该版本运行正常,就可以轻松地切换生产环境和试运行环境。此操作方便快捷,因为这两个环境当时都已完整部署,您只需切换两个 URL 即可。如果新版本经证实存在任何问题,您还可以快速切换回旧版本。

针对云开发进行打包

如果您熟悉 ASP.NET,那么创建 Windows Azure 应用程序就不是什么大难题,只要掌握几个额外的概念即可。我学习过很多关于 Windows Azure 应用程序打包方式的知识,也了解详细的部署步骤。

我对自己的试验感到满意:部署了我的第一个 Windows Azure 应用程序,并在此过程中对 Windows Azure 运行时有了更多了解。我了解到关于 Windows Azure VM 所用的不同驱动器的更多信息,并能够详细了解 VM 的部署过程。不光您需要了解这些详细信息来部署应用程序,开发人员也往往在了解更多深层知识后才会更加得心应手。

Jose Barreto Photo

Jose Barreto是文件服务器团队的首席项目经理,这个团队属于 Microsoft 的服务器和云部门。他 1989 年毕业于巴西 Universidade Federal do Ceara 大学的计算机科学专业,并于 2000 年移居美国。Barreto 于 2002 年加入 Microsoft 加利福尼亚分公司,并于 2007 年调到华盛顿州雷蒙德市 Microsoft 总部园区。

相关内容