导出 (0) 打印
全部展开

让启动任务在计算模拟器和云中执行不同的操作

更新时间: 2013年11月

当启动任务在云上运行与在计算仿真器上运行相比较时,可以让启动任务执行不同的步骤。

当在云上或在计算仿真器上运行时,有时需要启动任务在启动时执行不同任务。例如,您可能希望在计算仿真器上运行时在启动时使用 SQL 数据的新副本,但在云上运行时则不执行该步骤。又如,您可能希望在计算仿真器上执行调试步骤,而不希望在云中执行这些步骤,并且云中的性能优化步骤对于计算仿真器不起作用或不是必需的。虽然已努力使计算仿真器的行为与云的行为基本保持一致,但二者之间仍存在细微差异,这就要求在计算仿真器上运行时在启动时执行的步骤不同于在云中运行时在启动时执行的步骤。Differences Between the Compute Emulator and Windows Azure一文介绍了计算仿真器和云之间的这些差异。

通过在“ServiceDefinition.csdef”文件中创建一个环境变量,然后在启动任务中测试该环境变量,可以在计算仿真器上和云中执行不同的操作。

若要创建环境变量,请将 Environment 节和 Variable 节添加到 ServiceDefinition.csdef 文件的 Startup 节。Variable 元素必须包含针对将用于启动任务的环境变量的唯一名称。在此示例中,将该环境变量命名为 ComputeEmulatorRunning。在 ServiceDefinition.csdef 文件的 Variable 节中,添加 xPath 属性等于 "/RoleEnvironment/Deployment/@emulated"RoleInstanceValue 元素。此 xPath 属性具有与语句 String ComputeEmulatorRunning = RoleEnvironment.IsEmulated.ToString().ToLower(); 相同的功能。

在此示例中,在计算仿真器上运行时,ComputeEmulatorRunning 环境变量的值将为 "true";在云中运行时,该值为 "false"

    <Startup>
      <Task commandLine="Startup.cmd" executionContext="limited" taskType="simple">
        <Environment>
          
          <!-- Create the environment variable that informs the startup task whether it is running 
               in the Compute Emulator or in the cloud. "%ComputeEmulatorRunning%"=="true" when 
               running in the Compute Emulator, "%ComputeEmulatorRunning%"=="false" when running 
               in the cloud. -->

          <Variable name="ComputeEmulatorRunning">
            <RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
          </Variable>

        </Environment>
      </Task>
    </Startup>

Startup.cmd 批处理文件使用 ComputeEmulatorRunning 环境变量根据自身是在云中还是在计算仿真器上运行来执行不同的操作。

REM   Check if this task is running on the compute emulator.

IF "%ComputeEmulatorRunning%" == "true" (
    REM   This task is running on the compute emulator. Perform tasks that must be run only in the compute emulator.
) ELSE (
    REM   This task is running on the cloud. Perform tasks that must be run only in the cloud.
)

另请参阅

显示:
© 2014 Microsoft