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给出的部署步骤图示。
搞清楚了之后,就可以开始进行了各项工作了
首先,需要访问Windows Azure的管理门户,创建项目,在Windows Azure的运行环境中创建你的应用标示,然后进行应用的上传和配置。
访问:https://go.microsoft.com/fwlink/?LinkID=128009
转化后可能是下面的地址,之后输入你的Windows Azure帐号和密码。
https://lx.azure.microsoft.com/Cloud/Provisioning/Templates.aspx
选择New Project选项。
由于Windows Azure的运行环境是共享的托管运行环境,所以Project Label你可以想象成一个应用标示,之后你会发现其实它未来也可以会作为一个二级的域名(云服务名称)标示,而对于Windows Azure的运行环境本身而言,这个应用会有一个唯一的代码和你的Project Label/应用标示进行对应。
之后Windows Azure管理门户会让你选择一个服务名,如果你的服务名和Project Label刚好一样,这个服务名作为一个二级域名的访问资源,它需要在整个Windows Azure的运行环境唯一,如果已经存在那么Windows Azure管理门户会提示你,让你重新设定一个
设定了Project Label和服务名之后,意味着你可以进行到下一步,应用上传和配置阶段。此时它需要你将你的应用上传到Windows Azure的云端和托管环境中,Windows Azure会来决定部署到那台服务器上面。而且Windows Azure非常好的是,它在部署的过程中又进行了精细化管理,明显的将其分为了另外两个阶段,云端的部署测试阶段,和云端的运行阶段。
当项目完成之后,Windows Azure管理平台进入到上传部署阶段,首先你会进入到云端的部署测试阶段(Staging), 你会看到下图,云端的运行阶段(Production) 什么都没有,云端的部署测试阶段等待应用上传。
不过你会说,我上传什么应用啊,是将我的aspx还是C#代码上传上去吗? 这里还有一个应用打包的过程。这个是通过Windows Azure SDK提供的工具来完成的。也就是说Windows Azure不接受aspx还是C#代码文件,你需要用SDK中的cspack.exe来打包你的应用。当然如果你使用先进而强大的Visual Studio 2008,那么你可以通过图形化的方式来完成这个打包的过程。具体步骤如下:
首先你从上图,可以看到Windows Azure运行环境给你分配的应用标示—Application ID,你复制下这个ID和标示,然后到Visual Studio 2008选中项目选项,设置这个代码,如下图:
然后保存项目,重新编译项目。
然后在Visual Studio 2008中选中你的项目,并右键选择发布(Publish…..) 如下图
如果顺利完成,其实一般这步都会十分顺利的,你会发现Visual Studio 2008自动打开发布的目录,甚至会启动IE,访问下面这个地址:https://go.microsoft.com/fwlink/?LinkID=127998&AppID=0000000040007F1A
而0000000040007F1A正是你的应用标示。我的开发环境在一个虚拟机环境中,所以我会复制出发布目录中的文件,因为项目比较小,打包的文件和配置文件都比较小。
令人有些奇怪的是,我的项目是Hello,但是最后的发布目录似乎在C:\myProject\Hello\Hello\Hello\bin\Debug\Publish 目录中。
这下你会发现Visual Studio 2008已经帮你将应用打包好了,其实你需要感谢Windows Azure Tools for Microsoft Visual Studio,因为工作是它调用Windows Azure SDK的cspack.exe完成的。
有了打包的应用,你可以部署了,单击 Deploy…… 按键
之后就比较完美了,根据下面这幅图的要求,你基本上是按图填空,很简单了。
填空完毕,然后按Deploy按键。
之后你会发现下面的这个提示和警告,因为目前的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运行环境都会管理起来。
之后你只需要修改一下ServiceConfiguration.cscfg 文件即可—如下图,这个不用重新打包或发布一次,而且我相信,你知道这个故事之后,以后会在发布之前,先修改一下这个配置文件。
然后你需要准照下面的图示,去喝杯茶或稍稍等候一下,此时Windows Azure运行环境正在为你寻找合适的服务器进行程序化和自动化的部署。
如果顺利,你会迎来胜利的曙光, 出现下面的图示:
这表示你已完成了云端的部署测试阶段(Staging),此时你的应用已经成功地上传并且配置成功,Windows Azure运行环境已经完成了相关资源的查找,分配和配置,你可以在部署测试环境启动它,--如果成功表示它降落和被托管在一块云朵上了,并且被照顾的很好,而且也可以被运行了。运行成功,表示你的应用功能都正常了,唯一的差别是,这个应用还不能”出街见人” –即外界不可见状态,也可以理解为还没有和相关的域名进行绑定。
此时你还可以进行配置的查看,再修改一些参数等等。。。。。
如果没有什么问题或需要配置的,你可以启动这个应用了。启动成功后,如下图:
之后你点击中间的蓝色按钮(提升[Promote]到生产状态),即进入到云端的运行阶段。如下图:
(其实你会发现Promote会是一个非常好的功能,未来它也能让你转换到部署测试阶段(Staging))
你也会发现Windows Azure运行环境已经将你服务的访问地址开通,应用有了访问的域名。比如我的这个叫:https://ccboyhello.cloudapp.net
可以通过浏览器直接访问这个地址,你会发现下面的结果。呵呵,很好玩啊
Windows Azure有一个应用超市-Windows Azure Gallery,这样你可以登记你的服务,同样你也可以去里面找找,看看是否有我的这个,或是你喜欢的Windows Azure应用。
云端的感觉还是不错的,我喜欢Windows Azure,希望你也一样。