博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第三章 设计程序架构 之 设计实现Windows Azure 角色生命周期
阅读量:4572 次
发布时间:2019-06-08

本文共 3248 字,大约阅读时间需要 10 分钟。

1. 概述

  Windows Azure 是微软的云计算平台。用于 在微软数据中心 通过全局网络 生成、发布和管理应用程序。

  本章内容包括 startup tasks 以及  实现 Start, Run 和 Stop 事件。

2. 主要内容

  2.1 Windows Azure

    ① 提供 PaaS 和 IaaS 两种服务。

    PaaS 提供一个实际的计算平台,包括 操作系统、程序执行环境、数据库 和 web服务器。

    IaaS 是提供虚拟的机器。

    ② Windows Azure 有三种类型的解决方案:虚拟机器、web站点 和 云服务。

    虚拟机器:使用方式类似本地的机器,可以进行开发测试和部署。

    web站点:单纯的web站点寄宿。可以方便的部署和运行ASP.NET MVC4站点。

    云服务:直接的PaaS模式,是Windows Azure的初始发布模型。

  2.2 Startup tasks

    2.2.1 Windows Azure中有三种角色:Web、Worker 和 VM。

      Web一般用于执行IIS。Worker一般用于执行中间层的程序。而VM角色可以完全的访问虚拟机。

    2.2.2 通过 Startup tasks,可以 注册COM组件、安装组件或者设置注册key。Startup tasks仅对Web和Worker角色可用。

      Startup tasks 在 Task元素中定义,Task元素是 ServiceDefinition.csdef文件中的Startup元素的一个节点。

      一个标准的Startup tasks是一个命令行程序或者一个批处理文件。

    2.2.3 当一个角色启动,Windows Azure中,后续的过程如下:

      ① 实例被标记为Starting,不再接收通知。

      ② Startup tasks 根据taskType属性开始执行。。(简单任务以同步方式,后台和前台任务以异步方式。)

      ③ 角色寄宿过程启动,站点在iis中被创建。

      ④ 调用 Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint.OnStart 方法。

      ⑤ 实例被标记为Reader并开始接收通知。

      ⑥ 调用  Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint.Run 方法。

    2.2.4  AppCmd.exe命令行工具用于在Windows Azure中,启动时管理IIS设置。

    2.2.5 Startup tasks 可以被执行多次。忘记配置AppCmd.exe工具会导致运行时错误。

    2.2.6 可以把一个任务标记为后台执行。

    2.2.7 Windows Azure 虚拟机是无状态的。

  2.3 实现  Start, Run 和 Stop 事件

     OnStart 方法和 Startup tasks有许多概念上的相似点:

    ① 有相同的超时机制。

    ② 角色被回收时都会被再次执行。

    ③ 都可以配置先于角色处理。

     OnStart 方法和 Startup tasks 的不同之处包括:

    ① Startup tasks 运行在不同的进程中。适用于需要独立运行过程的软件和平台。

    ② 状态信息可以在OnStart方法和Run方法中共享,因为这两个方法在同一个应用程序域中。

    ③ Startup tasks可以被配置为后台或者前台任务,并且可以并发运行。

    当所有配置好的Startup tasks完成后,Window Azure角色开始运行。有三个主要的事件可以重写:OnStart、Run、OnEnd。

public class WorkerRole : RoleEntryPoint {     public override bool OnStart()     {         try        {           // Add initialization code here        }         catch (Exception e)         {           Trace.WriteLine("Exception during OnStart: " + e.ToString());           // Take other action as needed.         }         return base.OnStart();     } }
public override void Run() {     try     {        Trace.WriteLine("WorkerRole entrypoint called", "Information");        while (true)         {           Thread.Sleep(10000);            Trace.WriteLine("Working", "Information");        }        // Add code here that runs in the role instance     }     catch (Exception e)      {        Trace.WriteLine("Exception during Run: " + e.ToString());        // Take other action as needed.      } }
public override void OnStop() {      try     {        // Add code here that runs when the role instance is to be stopped     }      catch (Exception e)      {        Trace.WriteLine("Exception during OnStop: " + e.ToString());        // Take other action as needed.      } }

    OnStop方法有5分钟强制限制。确保程序被彻底的清理。

3. 总结

  ① Windows Azure 是一个基于云的,给公司和开发者提供高度可配置、灵活部署的服务环境。

  ② Azure是无状态的。每次运行之间的数据不能被保存和共享。

  ③ 开发者可以给一个角色一系列Startup tasks去运行。这些Startup tasks可以实现 安装附加软件和第三方工具,修改注册信息以及满足Asp.Net MVC程序的其他需求。 可以使用AppCmd.exe工具去管理这些Startup tasks。

  ④ Startup tasks完成后,OnStart方法就会被调用。可以重载OnStart方法去实现其他功能。记得要返回true,否则将启动失败。

  ⑤ OnStart方法返回后(返回true),Run方法就会被调用。Run方法是void方法,可以重载它和主程序并发执行。

  ⑥ 程序结束前,会调用OnStop方法。这个方法也是一个void方法。用于清理前面两个方法的资源。

转载于:https://www.cnblogs.com/stone_lv/p/4602938.html

你可能感兴趣的文章
找茬脚本思路(修改中)
查看>>
Java创建线程的细节分析
查看>>
python语法_深浅拷贝
查看>>
使用CCleaner卸载chrome
查看>>
typeof和GetType的区别
查看>>
xtraTabbedMdiManager控件切换时控件不更新的问题
查看>>
为易信正名
查看>>
debian8.4 ibus中文输入法
查看>>
《JAVA程序设计》实训第一天——《猜猜看》游戏
查看>>
P1896 [SCOI2005]互不侵犯
查看>>
ESP定律手工脱壳步骤
查看>>
wex5 教程 之 图文讲解 登陆,注册,页面跳转
查看>>
问题7:JavaScript 常用正则示例
查看>>
xampp 虚拟机配置
查看>>
第五次实验
查看>>
从统计学角度来看深度学习(1):递归广义线性模型
查看>>
nginx发布Asp.net程序
查看>>
Spring Bean引用例子
查看>>
您访问的URL地址不被允许。
查看>>
docker 初探之简单安装 ----Windows10
查看>>