日期:2014-05-16  浏览次数:20881 次

Windows Azure 网站服务高级功能探索

Windows Azure的网站服务一直是本人十分推崇的服务,它就是微软的AppEngine。如果单纯比较"App Engine"本身,网站服务在易用性、可扩展性、IDE集成、可定制性及UI方面都领先业界其他的类似平台,比如Google的AppEngine和AWS的Beanstalk。不过网站服务毕竟出自微软,在外围服务上并没有像其他厂商一样支持大量的开源组件服务,这是网站服务可以和其他服务互补的地方。


那么,网站到底好在哪里呢?下面我们就逐一分析


基本功能

站点管理

这个不用多说,Windows Azure可以在几秒内创建、删除一个网站,然后会立即分配一个URL,用户就可以访问了

代码发布及版本控制

Windows Azure的代码发布机制有很多,可以直接发布(使用FTP,Git, Visual studio或是Webmatrix等工具),也可以间接发布,即开发者先把代码发布到源代码控制器或者网盘中,然后同步到Azure上,目前支持的有微软自己的TFS以及外部的包括GitHub, Codeplex,DropBox等等
下面这篇文章介绍了如何使用WebMatrix向网站发布Wordpress 
http://blog.csdn.net/shaunfang/article/details/16857095

代码编辑

可以在管理门户上直接点击页面底部的Webmatrix进行在线代码编辑,Webmatrix也可将全站镜像到本地编辑,然后上传修改后的代码

运行环境选择

目前网站服务支持.NET 3.5/4.5, PHP 5.3/5.4/5.5, Nodejs 0.6.17/0.6.20/0.8.4. 通过配置界面可以修改选中的运行环境。值得一提的是,不同程序可以同时运行在同一个网站里面,比如,在同一个URL目录下可以既有asp又有php。这是因为后台的webserver是IIS,它可以根据请求的后缀选择相应的handler处理请求

生产、测试环境切换

用户可以针对同一个应用创建两个网站,一个做生产,一个做测试,并且可以随时切换二者的URL

环境变量

Azure为各种Web程序提供了环境变量接口,这样一些常用的配置参数可以直接在Azure界面上修改,而无需每次更新代码。要访问这些变量,需要在程序里面调用Azure的API

兼容性

Azure在云端的网站服务器就是IIS,因此云端的网站迁移回本地,或者把本地的网站迁移到云端无需任何代码修改。需要修改的场景,是需要访问Azure的环境变量(见上)

系统监控

Azure提供了基本的Web性能监控能力和可用性监控,并且可以提供异常报警

弹性伸缩

用户可以动态改变网站的运行实例数(进程数或虚拟机数)和规格。甚至可以通过性能指标和时间设置策略实现自动伸缩

Web作业

可以定义定期任务在后台执行,任务类型可以是exe,bat,cmd,powershell,php,bash,python,nodejs

备份

可以将网站数据连同所对应的数据库一同进行快照备份,可以定期备份

调试与诊断

可以控制日志输出级别,进行日志保存

对于.NET,支持Visual Studio远程调试,可以在代码上设置断点,然后在云端执行。Visual studio可以查看断点处的各种变量,就如同本地调试一样,也可以单步执行

高级隐藏功能

除了上述功能外,Azure网站还有大量的高级功能,这些功能不一定人人都需要,但是却十分强大。

后台编译

Azure可以从源码控制站点checkout代码,如果是脚本语言还好,直接可以用,比如PHP。但如果代码需要编译(ASP.NET),那不是没法直接用么?Azure提供了后台自动编译的能力。对于asp.net站点应用,编译是在客户端完成的,编译后的代码会上传到源码管理站点上,此时azure上无需再次编译。如果是asp.net项目,那么checkin的只是源码,每次客户端提交代码后,azure会首先checkout代码,然后立即调用msbuild进行编译,而这个过程,对用户是透明的。用户只要保证代码能正常编译即可。

IIS远程管理

用过IIS的都知道IIS有一个管理工具,可以进行图形化的配置管理。现在,azure网站同样可以支持该管理工具进行远程管理。只需要在IIS管理器上连接远程站点


然后输入网站的URL(需加端口号443)


再输入管理id(跟ftp的用户密码一样),就可以连入


IIS Manager可以通过图形化的方式修改web.config,这样我们就不需要为如何手动编写web.config而烦恼了。特别是像URL重写这种功能,IIS管理器可以为我们提供强大的规则设计器和测试功能,而不用我们去成为正则表达式的专家

日志流监控

日志下载是很简单的功能。不过,我们调试程序的时候,我们希望能够看到日志的滚动输出,而不是每次下载日志文件。Azure网站提供了多种方式让我们查看日志的流式输出
1. Visual studio 可以打开网站的stream log

2. 通过命令行监控

这个功能就如同linux 的tail命令一样,可以实时查看云端的持续输出

3. 通过云IDE (visual studio online)或者Azure的后台管理界面监控。后面会详细解释

云IDE

Azure网站与Visual Studio Online进行了集成。VS Online是一个云IDE,提供纯Web界面的开发环境。其具体介绍,可参考http://blog.csdn.net/shaunfang/article/details/20055341

后台管理

Azure网站是一个PaaS环境,许多后台的配置信息被屏蔽了,用户从管理界面上看不到后台的详细配置。不过,这也带来一个潜在的问题,在某些场景下,程序员可能会希望了解后台的更详细的配置,比如所有的环境变量、云端所有隐藏的文件、所有安装的软件包。现在,Windows Azure开放了后台管理接口,用户可以连入这个接口。

连入的方式,是在网站URL中间加入SCM,比如http://phptest.chinacloudsites.cn/ 这个网站的相应后台管理界面,是https://phptest.scm.chinacloudsites.cn/.访问时,首先需要输入管理员账号和密码。这个登陆信息和FTP登陆信息一样,可以从网站的仪表盘页右侧得到,也可以自己进行设定

登陆后,会看到如下的界面


这个界面名为Kudu。Kudu是一个基于Azure网站的一个插件,其本来的功能,是为Azure网站提供