Exportar (0) Imprimir
Expandir todo

Hacer que una tarea de inicio realice acciones diferentes en el emulador de proceso y en la nube

Actualizado: noviembre de 2013

Puede hacer que la tarea de inicio emprenda acciones diferentes cuando se está ejecutando en la nube a cuando está en el emulador de proceso.

La tarea de inicio necesita en ocasiones realizar tareas diferentes en el momento de iniciarse cuando se ejecuta en la nube o en el emulador de proceso. Por ejemplo, es posible que quiera utilizar una copia nueva de los datos de SQL en el momento de iniciarse cuando se ejecuta en el emulador de proceso, pero no realizar ese paso cuando se ejecuta en la nube. Otro ejemplo es que quiera emprender varios pasos de depuración en el emulador de proceso que no quiera realizar en la nube y, además, en la nube, se podrían realizar procesos de optimización del rendimiento que no serían útiles o necesarios en el emulador de proceso. Y pese a que se ha invertido mucho trabajo en hacer que el emulador de proceso se comporte básicamente de la misma forma que en la nube, siguen existiendo diferencias sutiles entre ambos sistemas que posiblemente requieran la realización de pasos diferentes durante el inicio cuando la ejecución es en el emulador de proceso o en la nube. Estas diferencias entre el emulador de proceso y la nube se describen en el artículo Differences Between the Compute Emulator and Windows Azure.

Esta capacidad de llevar a cabo acciones diferentes en el emulador de proceso y en la nube se consigue creando una variable de entorno en el archivo ServiceDefinition.csdef y, a continuación, se prueba la variable de entorno en la tarea de inicio.

Para crear la variable de entorno, agregue una sección Environment y una sección Variable a la sección Startup del archivo ServiceDefinition.csdef. El elemento Variable debe tener un nombre único para la variable de entorno que utilizará en la tarea de inicio. En este ejemplo, la variable de entorno se llama ComputeEmulatorRunning. En la sección Variable del archivo ServiceDefinition.csdef, agregue el elemento RoleInstanceValue con un atributo xPath que sea igual a "/RoleEnvironment/Deployment/@emulated". Este atributo xPath es funcionalmente equivalente a la instrucción String ComputeEmulatorRunning = RoleEnvironment.IsEmulated.ToString().ToLower();

En este ejemplo, el valor de la variable de entorno ComputeEmulatorRunning será "true" cuando se ejecute en el emulador de proceso y "false" cuando se ejecute en la nube.

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

El archivo por lotes Startup.cmd utiliza la variable de entorno ComputeEmulatorRunning para realizar acciones diferentes en función de dónde se ejecute el archivo por lotes Startup.cmd, es decir en el emulador de proceso o en la nube.

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

Vea también

Mostrar:
© 2014 Microsoft