技术开发 频道

案例解读Windows Azure中两种角色开发

  步骤三:编写Worker Role功能

  在Worker Role里,同样可以调用HelloWorld.cmd,把ExecuteProcess.cs的Run函数复制过去,其实在这里,我们可以把一些公用的代码剥离出来,放在一个公用的类库里,方便调用。每一个Worker Role都是继承RoleEntryPoint的,在workerrole.cs里的run方法里要调用Run函数以便运行HelloWorld.cmd。

  同时我们还需要把进程的日志记录进去,以便查看调用情况,其代码如下: 

protected void LogProcessTimes(Process process)

  {

  System.Runtime.InteropServices.ComTypes.FILETIME createdTime;

  System.Runtime.InteropServices.ComTypes.FILETIME exitedTime;

  System.Runtime.InteropServices.ComTypes.FILETIME kernelTime;

  System.Runtime.InteropServices.ComTypes.FILETIME userTime;

  
if (GetProcessTimes(process.Handle,

  out createdTime,

  out exitedTime,

  out kernelTime,

  out userTime))

  {

  WriteLine(
" Real Time: {0}", FiletimeToDateTime(exitedTime) - FiletimeToDateTime(createdTime));

  WriteLine(
" User Time: {0}", FiletimeToTimeSpan(userTime));

  WriteLine(
"System Time: {0}", FiletimeToTimeSpan(kernelTime));

  }

  }

  在run函数中,进程结束后调用此函数,把调用的时间信息记录到日志里去,因此我们在图6中可以看到记录的日志信息。

  步骤四:编译调试

  所有代码编写完成后,编译项目,使用Development Fabric模拟真实环境进行调试和运行。由于我们没有设置服务信息,因此没有ServiceConfiguration.cscfg和ServiceDefinition.csdef文件进行设置,这需要根据具体项目来确定。

  要调试和运行,首先要设置有云图标的 FullTrust项目为启动项目。设置Deault.aspx为起始页就可以了。如果编译一次通过,使用CTRL+F5或者调试|不调试开始运行,就可以对项目自动进行打包,模拟运行了,其界面如图2~6所示。

  在真实场景中,调试运行后,就需要部署项目,关于具体部署的过程和步骤,这里不再详细介绍,感兴趣的读者可以参考微软中国云计算博客。

  在本例中,我们只是简单的介绍了如何开发两种角色的应用,还有更多比这更复杂的应用来使用这两种角色。在开发过程中,我们要区分Web Role和Worker Role的功能。有些应用程序类型有时候也会让开发人员不得不选择使用 Worker Role 来进行处理,最典型的例子就是排队类应用程序(例如在线订票系统),Web Role 无法使用排队方式来执行,而且这类型的应用程序都会需要用到 Queue 来处理要求,而 Web Role 亦无法开发可定时(scheduled,例如每分钟或每五分钟)由 Queue 中提取数据处理的应用程序,因此 Worker Role 就是这类型应用程序的非常好的类型。

  Visual Studio Tools for Windows Azure 的云端应用程序项目可以允许一次部署多个 Windows Azure 的应用程序类型(最多五个不同的角色),但是请注意,每一应用程序类型都会被挂载在独立的 Virtual Machine 中,而运算资源的计费(后面会介绍到)是以 Virtual Machine 为单位计价的,因此如果不是一定要部署上去的应用程序,请不要包装在云端应用程序中。同时若只是要测试,建议先在本机(资源可以连到 Windows Azure)测试完毕,再部署到云端。

  总结

  本文介绍了Windows Azure中的两种角色:Web Role和Worker Role,几乎所有的应用开发都包含在这两种角色中,Web Role应用类似我们熟悉的Asp.Net应用程序,Worker Role类似于Windows /Web Service。通过一个FullTrust案例的介绍,相信大家对这两种角色的功能和开发过程已经了然于胸了。

0
相关文章