Hello Windows Azure--云端版本

之前有做过一个最简单的Windows Azure的应用-Hello Windows Azure,之后在2008年的圣诞节又获得了Invitation Code to Windows Azure‏,这样就可以测试一下云端版本的Windows Azure应用了,也就是真正的Windows Azure Service。

因为应用非常的简单,其实主要就是根据Jim Nakashima的文章Deploying a Service on Windows Azure,对整个Windows Azure Service的部署进行一个实践和演练。

你可以将这篇Blog作为Jim Nakashima文章的中文版或图形版,我会贴更多的图。

根据Jim Nakashima文章的规划,整个从开发阶段到部署到云端运行会分为三个阶段:

第一:完成一个开发环境中完整应用,开发,测试和运行完成。

第二:如果应用涉及到云端的Windows Azure存储,那么这个阶段可以将开发环境的应用配置以云端的数据库帐号,进行测试确保数据访问这部分功能完整,另外由于Windows Azure存储是比较分割和独立的,基本以一个唯一的标示代表一种数据存储的能力,所以需要另外一个用户标示或访问的帐号,这个标示需要配置在配置文件中,而配置文件也需要上传到Windows Azure管理门户上,所以这个阶段,可以理解为Windows Azure存储相关的测试、配置和部署准备。因为我的这个应用没有使用任何的Windows Azure存储,所以可以不考虑这一步。

第三:则是将应用部署到云端的Windows Azure运行环境中。所以这篇文章的着重在第三阶段,即如何将一个应用部署到Windows Azure运行环境中,并且将其运行起来。正如下图标明的Jim Nakashima给出的部署步骤图示。

clip_image002

搞清楚了之后,就可以开始进行了各项工作了

首先,需要访问Windows Azure的管理门户,创建项目,在Windows Azure的运行环境中创建你的应用标示,然后进行应用的上传和配置。

访问:https://go.microsoft.com/fwlink/?LinkID=128009

转化后可能是下面的地址,之后输入你的Windows Azure帐号和密码。

https://lx.azure.microsoft.com/Cloud/Provisioning/Templates.aspx

选择New Project选项。

clip_image004

由于Windows Azure的运行环境是共享的托管运行环境,所以Project Label你可以想象成一个应用标示,之后你会发现其实它未来也可以会作为一个二级的域名(云服务名称)标示,而对于Windows Azure的运行环境本身而言,这个应用会有一个唯一的代码和你的Project Label/应用标示进行对应。

clip_image006

之后Windows Azure管理门户会让你选择一个服务名,如果你的服务名和Project Label刚好一样,这个服务名作为一个二级域名的访问资源,它需要在整个Windows Azure的运行环境唯一,如果已经存在那么Windows Azure管理门户会提示你,让你重新设定一个

clip_image008

设定了Project Label和服务名之后,意味着你可以进行到下一步,应用上传和配置阶段。此时它需要你将你的应用上传到Windows Azure的云端和托管环境中,Windows Azure会来决定部署到那台服务器上面。而且Windows Azure非常好的是,它在部署的过程中又进行了精细化管理,明显的将其分为了另外两个阶段,云端的部署测试阶段,和云端的运行阶段。

当项目完成之后,Windows Azure管理平台进入到上传部署阶段,首先你会进入到云端的部署测试阶段(Staging), 你会看到下图,云端的运行阶段(Production) 什么都没有,云端的部署测试阶段等待应用上传。

clip_image010

不过你会说,我上传什么应用啊,是将我的aspx还是C#代码上传上去吗? 这里还有一个应用打包的过程。这个是通过Windows Azure SDK提供的工具来完成的。也就是说Windows Azure不接受aspx还是C#代码文件,你需要用SDK中的cspack.exe来打包你的应用。当然如果你使用先进而强大的Visual Studio 2008,那么你可以通过图形化的方式来完成这个打包的过程。具体步骤如下:

首先你从上图,可以看到Windows Azure运行环境给你分配的应用标示—Application ID,你复制下这个ID和标示,然后到Visual Studio 2008选中项目选项,设置这个代码,如下图:

clip_image012

然后保存项目,重新编译项目。

然后在Visual Studio 2008中选中你的项目,并右键选择发布(Publish…..) 如下图

clip_image014

如果顺利完成,其实一般这步都会十分顺利的,你会发现Visual Studio 2008自动打开发布的目录,甚至会启动IE,访问下面这个地址:https://go.microsoft.com/fwlink/?LinkID=127998&AppID=0000000040007F1A

而0000000040007F1A正是你的应用标示。我的开发环境在一个虚拟机环境中,所以我会复制出发布目录中的文件,因为项目比较小,打包的文件和配置文件都比较小。

令人有些奇怪的是,我的项目是Hello,但是最后的发布目录似乎在C:\myProject\Hello\Hello\Hello\bin\Debug\Publish 目录中。

clip_image016

这下你会发现Visual Studio 2008已经帮你将应用打包好了,其实你需要感谢Windows Azure Tools for Microsoft Visual Studio,因为工作是它调用Windows Azure SDK的cspack.exe完成的。

有了打包的应用,你可以部署了,单击 Deploy…… 按键

clip_image018

之后就比较完美了,根据下面这幅图的要求,你基本上是按图填空,很简单了。

clip_image020

填空完毕,然后按Deploy按键。

clip_image022

之后你会发现下面的这个提示和警告,因为目前的Windows Azure运行环境对应用运行的实例有限制,基本上Web Role最大两个实例,后台的WorkRole也是两个(Note: The current constraint for the number of instances you can run on Windows Azure as part of the CTP is a maximum of 2 Web Role instances and 2 Worker Role instances.),不知道未来是否会增加还是超过的部分就要收费了。

这里可以啰嗦一下,其实这里面的技术含量还是挺高的,这意味着Windows Azure运行环境会帮你完成实例的生命周期管理,也就意味着可用性的提高,最大两个,技术上要么会有四个(一对一互备)或三个(N+1方式容灾) 。而且你之前设置的二级域名和这两个实例的可靠性,Windows Azure运行环境都会管理起来。

clip_image024

之后你只需要修改一下ServiceConfiguration.cscfg 文件即可—如下图,这个不用重新打包或发布一次,而且我相信,你知道这个故事之后,以后会在发布之前,先修改一下这个配置文件。

clip_image026

然后你需要准照下面的图示,去喝杯茶或稍稍等候一下,此时Windows Azure运行环境正在为你寻找合适的服务器进行程序化和自动化的部署。

clip_image028

如果顺利,你会迎来胜利的曙光, 出现下面的图示:

clip_image030

这表示你已完成了云端的部署测试阶段(Staging),此时你的应用已经成功地上传并且配置成功,Windows Azure运行环境已经完成了相关资源的查找,分配和配置,你可以在部署测试环境启动它,--如果成功表示它降落和被托管在一块云朵上了,并且被照顾的很好,而且也可以被运行了。运行成功,表示你的应用功能都正常了,唯一的差别是,这个应用还不能”出街见人” –即外界不可见状态,也可以理解为还没有和相关的域名进行绑定。

此时你还可以进行配置的查看,再修改一些参数等等。。。。。

clip_image032

如果没有什么问题或需要配置的,你可以启动这个应用了。启动成功后,如下图:

clip_image034

之后你点击中间的蓝色按钮(提升[Promote]到生产状态),即进入到云端的运行阶段。如下图:

(其实你会发现Promote会是一个非常好的功能,未来它也能让你转换到部署测试阶段(Staging))

clip_image036

你也会发现Windows Azure运行环境已经将你服务的访问地址开通,应用有了访问的域名。比如我的这个叫:https://ccboyhello.cloudapp.net

可以通过浏览器直接访问这个地址,你会发现下面的结果。呵呵,很好玩啊

clip_image038

Windows Azure有一个应用超市-Windows Azure Gallery,这样你可以登记你的服务,同样你也可以去里面找找,看看是否有我的这个,或是你喜欢的Windows Azure应用。

云端的感觉还是不错的,我喜欢Windows Azure,希望你也一样。