技术开发 频道

Visual Studio打造云计算平台Azure应用

  【IT168 应用】微软云计算平台发布的时间已经不短了,作为微软技术的开发人员我们也应该紧跟技术前进的步伐,并努力走在技术旅程的前头。如果你在做ASP.NET甚至PHP、JAVA等技术的应用,那么现在到时候该考虑让你的应用进入云计算时代了。本文将以ASP.NET应用为例,带您一起学习如何使用熟悉的Visual Studio 2010开发基于微软云计算平台的应用。

  动手开发之前,我们需要先点一下兵将,了解微软云计算平台目前提供了哪些基础技术给我们,以便我们动工时心中有数J 。微软云计算平台目前主要包括了:Windows Azure、SQL Azure、Windows Azure Platform AppFabric。Windows Azure是微软云计算的核心服务操作系统提供了计算资源和任务分配等基础服务机制;SQL Azure可被理解为在微软云中运行的SQL Server 2008数据库服务;AppFabric是一套全面的云端中间件服务,它可以通过安全的通道来跨越网络和地理位置的界限,将已有的应用程序接入云端,而且维持了Windows Azure和Windows Server上的开发一致性,降低了开发难度。

  了解了云计算的三大基础技术组件后,我们再来搭建我们的开发环境。微软云计算平台作为微软产品家族中的重要成员,其应用开发所需工具理所当然的首选Microsoft Visual Studio 2010了。开发人员可以使用已熟悉掌握的编程语言和多年的经验积累,直接在安装了Windows Azure SDK的Visual Studio 2010中开发面向微软云计算的应用。

  我们可以到微软云计算的官方网站(http://www.microsoft.com/windowsazure)上下载最新版的Windows Azure SDK。

  当你点击“Get Tool & SDK”按钮时,页面会启动Microsoft Web Platform Installer来安装Windows Azure SDK 1.4。1.4版的SDK修复了不少重要的Bug,并增加了Windows Azure Connect和Windows Azure CDN等新特性。安装完Windows Azure SDK后你可以看到在Visual Studio 2010的New Project 对话框中看到如下图的结果:

  当我们设定好Name、Location、Solution name后,点击Ok按钮,会出现新的“New Windows Azure Project”对话窗口:

  在这个窗口中我们可以看到我们可以选择Visual Basic、Visual C#甚至Visual F#语言来创建期望角色的应用项目。但需要注意的是VB和C#的项目模板类型相同,但Visual F#只能创建Worker Role项目。本文以Visual C#为默认语言选择。

  在上面的窗口中我们可以看到两个ASP.NET Web项目类型:ASP.NET Web Role和 ASP.NET MVC 2 Web Role。其分别对应的是微软两种模式的ASP.NET WEB应用类型:WebForm和MVC。值得一提的是,虽然项目列表中MVC应用只有ASP.NET MVC 2 Web Role,而没有ASP.NET MVC 3 Web Role,但我们仍可对ASP.NET MVC 2 Web Role项目进行一些必要的修改来支持ASP.NET MVC 3,具体做法在后续的文章中我会有所提及。

  我们选择ASP.NET Web Role,然后点击Ok按钮。我们将看到一个Windows Azure Project的Solution基本结构:

  由上图我们可以看出WebRole1的项目与普通的ASP.NET 应用程序项目结构有两个明显的区别:

  1. 缺少Global.asax,却多了一个WebRole.cs,而该文件主要用于设置日志记录和诊断等代码,默认的内容如下图:

  2. 在项目的引用中多了3个新程序集:

  a) Microsoft.WindowsAzure.Diagnostics:诊断和日志记录API

  b) Microsoft.WindowsAzure.ServiceRuntime:环境和运行时API

  c) Microsoft.WindowsAzure.StorageClient:用于为Blob、表和队列访问Windows Azure存储服务的.NET API

  另外,在Web.config中还有包含有一个跟踪侦听器的配置,可以支持你使用标准的.NET日志记录API。

  而WindowsAzureProject1项目,即云服务项目,充当部署项目。其中列出了云服务中包含的角色、定义和配置文件,提供了Windows Azure特有的运行、调试和发布功能。如果我们需要添加新的角色,可以在该项目的Roles节点上,单击右键选择“Add”菜单中对应的角色类型,并从最终的对话框中添加实际类型的角色项目。另外我们可以在该项目的对应角色节点上选择属性,可看到相应的云服务配置面板,当然您也可以直接ServiceConfiguration.cscfg 和 ServiceDefinition.csdef文件来添加或修改值。每个角色的实例数我们都可以设置,如果设置为3,则表示该应用的实例运行在3个VM上;当用户访问该应用时,Windows Azure会自动进行负载均衡。

  经过对WebRole1项目中Default页面代码进行简单的修改,我们便可以完成我们的“Hello ASP.NET on Windows Azure”。但是当你按F5运行或调试时,会看到如下的提示框:

  该问题是由于Development Fabric需要提权运行造成的,所以我们必须使用管理员身份来运行Visual Studio 2010,然后使用菜单打开刚才的solution。此时您再运行该Solution时,就不再出现该提示框的信息了。但如果您的机器没有安装SQL Server Express,就会很杯具的看好一个警告框,提示信息大体是“Failed to initialize the Development Storage service。See output window for more information。”,所以一定要确保您已经安装了SQL Server Express。

  上述问题都解决之后,运行或调试我们解决方案,可看到Windows Azure Computer Emulator这个微软云平台模拟器运行起来和我们的第一个云服务页面:

  我们这个例子中的程序代码仅仅是给几个简单的先生控件赋值而已,但我们知道通常一个WEB应用程序都会有上传文件之类的功能。传统应用程序的默认文件上传和访问的方式都是对本地存储的,但需要注意的是由于云平台会有负载均衡等一系列机制,所以访问本地文件的方式来实现文件上传或读写都将是无法正常运行的,必须使用Windows Azure Storage服务来解决,对于该服务我们会在后文中有所阐述。而如果您的应用程序使用的是SQL Server数据库,那么在云平台上就可以使用SQL Azure了。

  截止到这里,我想大家应该都对简单的ASP.NET on Windows Azure应用开发有了一个基本认识。那么如何将一个现有的应用程序进行改装,并部署到Windows Azure平台上让它真正运行在云端呢?下篇文章我将给你讲述。

0
相关文章