微软Windows Azure开发三大步骤
虽然成熟的开发实践并不会随着跨平台迁移而发生太多的变化,但是如果是使用Windows Azure,还是有一些实务技巧的。
在很多方面,成熟的开发实践是可以实现跨编程语言、平台和应用程序而正常运行的,但是在某些情况下有些技术是比其它技术更有用的。而为云计算开发应用程序就是这样的一个情况。
特别是当为微软公司的Windows Azure开发应用程序时,把以下三点谨记在心将是大有裨益的:使用专为平台设计的工具、为分布式处理进行设计以及为提升性能而制订规划。
使用Windows Azure的专用工具
微软公司的旗舰开发工具Visual Studio中有一套针对Windows Azure开发工作的工具,这一点并不让人感到惊奇。你可以通过Visual Studio安装Windows Azure工具;具体的安装步骤可能因版本而有所不同。当你创建一个新项目时,你将能够选择一个Windows Azure项目并为你的项目添加web和worker角色。Web角色是专为运行微软IIS实例而设计的;而worker角色则是针对禁用微软IIS的Windows虚拟机的。一旦你已创建了你的角色,那么你就可以添加特定应用程序的代码了。
Visual Studio可允许你设置服务配置参数,例如实例数、虚拟机容量、是使用HTTP还是HTTPS以及诊断报告水平等。通常情况下,在启动阶段,它可以帮助用户在本地进行应用程序代码调试。与在Windows Azure中运行应用程序相比,在本地运行你的应用程序可能需要不同的配置设置,但Visual Studio可允许用户使用多个配置文件。而你所需要做的,只是为每一个环境选择一个合适的配置文件。
这个工具包还包括了Windows Azure Compute Emulator,这个工具可支持查看诊断日志和进行存储仿真。
如果Windows Azure工具中缺乏一个针对发布你的应用程序至云计算的过程简化功能,那么这样的一个工具将是不完整的。这个发布应用程序至云计算的功能可允许你指定一个配置与环境(如生产)以及一些先进的功能,例如启用剖析和IntelliTrace,后者是一个收集与程序运行相关详细事件信息的调试工具,它可允许开发人员查看程序在执行过程中发生的状态变化。
专为分布式处理进行设计
当开发和部署代码时,Visual Studio的Windows Azure工具是比较有用的。除此之外,用户应当注意这些代码是专为云计算环境而设计的,尤其是为一个分布式环境设计的。以下的小贴士可有助于防止出现将导致糟糕性能、漫长调试以及运行时分析的潜在问题。
专为云计算而设计的分布式应用程序(或者其它的网络应用程序)的一个基本原则就是,不要在网络服务器上存储应用程序的状态信息。确保在网络服务器层不保存状态信息可实现更具灵活性的应用程序。你可以在一定数量的服务器前部署一个负载平衡器而无需中断应用程序的运行。如果你计划充分利用Windows Azure能够改变所部属服务器数量的功能,那么这一点是特别重要的。这一配置对于打补丁升级也是有所帮助的。我们可以在其它服务器继续运行时为一台服务器打补丁升级,这样一来就能够确保你的应用程序的可用性。
即便是在分布式应用程序的应用中,也有可能存在严重影响性能的瓶颈问题。例如,你的应用程序的多个实例有可能会同时向数据库发出查询请求。如果所有的调用请求是同步进行的,那么就有可能消耗完一台服务器中的所有可用线程。C#和VB两种编程语言都支持异步调用,这一功能可以有助于减少出现阻塞资源风险的可能性。
为最佳性能进行规划
在云计算中维持足够性能表现的关键就是,一方面扩大你运行的服务器数量,一方面分割你的数据和工作负载。诸如无状态会话的设计功能就能够帮助实现数据与工作负载的分割和运行服务器数量的扩容。完全杜绝(或者至少最大限度地减少)跨多个工作负载地使用全局数据结构将有助于降低在你的工作流程中出现瓶颈问题的风险。
如果你将把一个SQL服务器应用程序迁往Windows Azure,那么你就应当评估如何最好地利用不同云计算存储类型的优势。例如,在你的SQL服务器数据库中存储二进制大对象(BLOB)数据结构可能是有意义的,而在Windows Azure云计算中,BLOB存储可以降低存储成本且无需对代码进行显著修改。如果你使用的是高度非归一化的数据模型,且未利用SQL服务器的关系型运行的优势(例如连接和过滤),那么表存储有可能是你为你的应用程序选择的一个更经济的方法。