Exportar (0) Imprimir
Expandir Tudo

Faça uma tarefa de inicialização executar ações diferentes no emulador de computação e na nuvem

Atualizado: novembro de 2013

Sua tarefa de inicialização pode executar etapas em diferentes ao operar na nuvem quando comparada ao estar em emulador de computação.

Ocasionalmente, é necessário que sua tarefa de inicialização execute tarefas diferentes na inicialização ao executar em nuvem ou em emulador de computação. Por exemplo, você pode querer usar uma cópia nova de seus dados SQL na inicialização ao executar em emulador de computação, mas não realizar essa etapa ao executar em nuvem. Como outro exemplo, você pode desejar executar etapas de depuração em emulador de computação que não iria desejar executar em nuvem, e pode haver etapas de otimização de desempenho em nuvem que não são úteis ou necessárias em emulador de computação. Ainda que muito do esforço seja para fazer com que o comportamento de emulador de computação seja essencialmente igual ao da nuvem, ainda existem diferenças sutis entre os dois, o que pode exigir que etapas diferentes sejam executadas durante a inicialização ao executar em emulador de computação ao invés da nuvem. Essas diferenças entre emulador de computação e a nuvem estão descritas no artigo Differences Between the Compute Emulator and Windows Azure.

Essa capacidade de executar ações diferentes em emulador de computação e em nuvem pode ser realizada criando uma variável de ambiente no arquivo ServiceDefinition.csdef e o teste na variável de ambiente em sua tarefa de inicialização.

Para criar a variável de ambiente, adicione uma seção Environment e uma seção Variable à seção Startup do arquivo ServiceDefinition.csdef. O elemento Variable deve ter um nome exclusivo para a variável de ambiente que será usada na tarefa de inicialização. Nesse exemplo, a variável de ambiente é chamada ComputeEmulatorRunning. Na seção Variable do arquivo ServiceDefinition.csdef, adicione o elemento RoleInstanceValue com um atributo xPath igual a "/RoleEnvironment/Deployment/@emulated". Esse atributo xPath é funcionalmente equivalente à declaração String ComputeEmulatorRunning = RoleEnvironment.IsEmulated.ToString().ToLower();

Nesse exemplo, o valor da variável de ambiente ComputeEmulatorRunning será "true" ao executar em emulador de computação e "false" ao executar em nuvem.

    <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>

O arquivo em lotes Startup.cmd usa a variável de ambiente ComputeEmulatorRunning para executar ações diferentes, baseado no fato do arquivo em lotes Startup.cmd ser executado em nuvem ou no emulador de computação.

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.
)

Consulte Também

A Microsoft está realizando uma pesquisa online para saber sua opinião sobre o site do MSDN. Se você optar por participar, a pesquisa online lhe será apresentada quando você sair do site do MSDN.

Deseja participar?
Mostrar:
© 2014 Microsoft