Lección 2: Implementación de la aplicación Order Service con Windows PowerShell

Tiempo de realización: 25 minutos

Objetivo: aprender el modo de implementar aplicaciones que incluyan los servicios WCF y/o WF en IIS.

Propósito: en esta lección se muestra un ejemplo sobre como usar Windows PowerShell para la implementación de scripts mediante la Herramienta de implementación web. Volverá a implementar la aplicación Order Service en un sitio web llamado OrderService_PS.

Requisitos previos

Tenga en cuenta los siguientes requisitos previos:

Procedimiento

Como parte del proceso de reimplementación de la aplicación Order Service, debe realizar los siguientes pasos:

  1. Prepare los archivos de configuración para la implementación.

  2. Genere los paquetes de implementación, mediante MSBuild con Windows PowerShell.

  3. Cree el sitio web OrderService_PS y el grupo de aplicaciones.

  4. Implemente cada servicio web con la Herramienta de implementación web y Windows PowerShell.

  5. Pruebe cada servicio Web con Windows PowerShell.

Preparación de los archivos de configuración para la implementación

Usará Windows PowerShell para volver a implementar la aplicación Order Service en un nuevo sitio web, mediante el puerto 95. En esta sección, actualizará las direcciones de extremos en los archivos de configuración, con la nueva información de puerto, antes de la implementación.

  1. Ejecute el siguiente comando en Windows PowerShell para abrir el archivo app.config el cliente de pedido.

    notepad C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\app.config
    

    Reemplace la sección client por la siguiente sección client.

            <client>
                <endpoint address="https://localhost:95/OrderWorkflowService/OrderWorkflow.xamlx"
                    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.IOrderWorkflowService"
                    contract="OrderWorkflowService.MicrosoftSamplesDublinTutorialsOrderServiceOrderWorkflowServiceIOrderWorkflowService"
                    name="BasicHttpBinding_Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.IOrderWorkflowService" />
            </client>
    

    Cierre el Bloc de notas y haga clic en Guardar cuando se le indique que guarde los cambios.

  2. Ejecute el siguiente comando en Windows PowerShell para abrir el archivo Web.config de Order Processing Service.

    notepad C:\DublinTutorial\OrderServiceSolution\Completed\OrderProcessingService\Web.config
    

    Reemplace la sección client por la siguiente sección client.

        <client>
          <endpoint address="https://localhost:95/OrderWorkflowService/OrderWorkflow.xamlx"
            binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.IOrderWorkflowService"
            contract="OrderWorkflowService.MicrosoftSamplesDublinTutorialsOrderServiceOrderWorkflowServiceIOrderWorkflowService"
            name="BasicHttpBinding_Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.IOrderWorkflowService" />
        </client>
    

    Cierre el Bloc de notas y haga clic en Guardar cuando se le indique que guarde los cambios.

  3. Ejecute el siguiente comando en Windows PowerShell para abrir el archivo Web.config de OrderWorkflowService.

    notepad C:\DublinTutorial\OrderServiceSolution\Completed\OrderWorkflowService\Web.config
    

    Reemplace la sección client por la siguiente sección client.

        <client>
          <endpoint address="https://localhost:95/OrderProcessingService/OrderProcessing.svc"
            binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IOrderProcessing"
            contract="IOrderProcessing" name="BasicHttpBinding_IOrderProcessing" />
          <endpoint address="https://localhost:95/ShippingService/Shipping.svc" binding="basicHttpBinding"
            bindingConfiguration="BasicHttpBinding_IShipping" contract="IShipping"
            name="BasicHttpBinding_IShipping" />
        </client>
    

    Cierre el Bloc de notas y haga clic en Guardar cuando se le indique que guarde los cambios.

  4. Ejecute el siguiente comando en Windows PowerShell para abrir el archivo Web.config del servicio de envío.

    notepad C:\DublinTutorial\OrderServiceSolution\Completed\ShippingService\Web.config
    

    Reemplace la sección client por la siguiente sección client.

        <client>
          <endpoint address="https://localhost:95/OrderWorkflowService/OrderWorkflow.xamlx"
            binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.IOrderWorkflowService"
            contract="OrderWorkflowService.MicrosoftSamplesDublinTutorialsOrderServiceOrderWorkflowServiceIOrderWorkflowService"
            name="BasicHttpBinding_Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.IOrderWorkflowService" />
        </client>
    

    Cierre el Bloc de notas y haga clic en Guardar cuando se le indique que guarde los cambios.

Generación de paquetes de implementación mediante MSBuild con Windows PowerShell

Microsoft Build Engine (MSBuild) es la plataforma de generación de Microsoft y Visual Studio. MSBuild es completamente transparente, en relación con el modo de procesar y crear software, y permite a los desarrolladores organizar y crear productos en entornos de laboratorios de compilación donde Visual Studio no está instalado. MSBuild se incluye como parte de .NET Framework. Debe seguir los pasos de esta sección para usar MSBuild para generar nuevos paquetes de implementación para la aplicación Order Service. Estos comandos pueden agregarse a un script de Windows PowerShell para automatizar la generación. Para obtener más información acerca de MSBuild, vea Información general sobre MSBuild (https://go.microsoft.com/fwlink/?LinkId=123876).

  1. En Windows PowerShell, ejecute el siguiente comando para asignar una variable denominada MSBuildPath a la ruta de acceso completa del ejecutable de MSBuild en el directorio .NET Framework. Este comando determina la ruta de acceso en función del valor de la cadena InstallPath, en la clave de registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full.

    $MSBuildPath = "$($(gp -Path HKLM:\Software\Microsoft\'NET Framework Setup'\NDP\v4\Full).InstallPath)MSBuild.exe"
    
  2. Ejecute el siguiente comando en Windows PowerShell para generar el paquete de implementación para el proyecto OrderProcessingService:

    .$MSBuildPath 'C:\DublinTutorial\OrderServiceSolution\Completed\OrderProcessingService\OrderProcessingService.csproj' /T:Package /P:PackageLocation='C:\DublinTutorial\PS_DeploymentPackages\OrderProcessingService.zip'
    
  3. Ejecute el siguiente comando en Windows PowerShell para generar el paquete de implementación para el proyecto OrderWorkflowService:

    .$MSBuildPath 'C:\DublinTutorial\OrderServiceSolution\Completed\OrderWorkflowService\OrderWorkflowService.csproj' /T:Package /P:PackageLocation='C:\DublinTutorial\PS_DeploymentPackages\OrderWorkflowService.zip'
    
  4. Ejecute el siguiente comando en Windows PowerShell para generar el paquete de implementación para el proyecto ShippingService:

    .$MSBuildPath 'C:\DublinTutorial\OrderServiceSolution\Completed\ShippingService\ShippingService.csproj' /T:Package /P:PackageLocation='C:\DublinTutorial\PS_DeploymentPackages\ShippingService.zip'
    
  5. Verifique que los tres archivos zip se han creado en el directorio C:\DublinTutorial\PS_DeploymentPackages, tal como se muestra a continuación:

    PS C:\> dir C:\DublinTutorial\PS_DeploymentPackages\*.zip
    
    
        Directory: C:\DublinTutorial\PS_DeploymentPackages
    
    
    Mode                LastWriteTime     Length Name
    ----                -------------     ------ ----
    -a---        11/11/2009   5:40 PM      13836 OrderProcessingService.zip
    -a---        11/11/2009   5:41 PM      22717 OrderWorkflowService.zip
    -a---        11/11/2009   5:41 PM      25177 ShippingService.zip
    
  6. Si no ha creado la aplicación OrderClient, que se usa como cliente para los servicios, ejecute el siguiente comando en Windows PowerShell para generar la aplicación OrderClient:

    .$MSBuildPath 'C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\OrderClient.csproj'
    

Creación del sitio web OrderService_PS y del grupo de aplicaciones

En esta sección, usará la herramienta de administración Appcmd.exe de IIS para crear el sitio web y el grupo de aplicaciones. Usará el proveedor de entorno de Windows PowerShell para hacer referencia a la ruta de acceso de Appcmd.exe, mediante la variable de entorno SystemRoot. Para ver como funciona, escriba el siguiente comando en Windows PowerShell:

$env:SYSTEMROOT

El resultado emitido debe mostrar el directorio raíz del sistema.

Siga los pasos siguientes para crear el sitio web OrderService_PS y el grupo de aplicaciones OrderServiceAppPool_PS. Estos comandos también se pueden agregar en un script de Windows PowerShell para automatizarlos.

  1. En Windows PowerShell, escriba el siguiente comando para crear el grupo de aplicaciones OrderServiceAppPool_PS, configurado para usar la versión 4 de .NET Framework.

    .$env:SystemRoot\System32\inetsrv\appcmd.exe add apppool /Name:OrderServiceAppPool_PS -managedRuntimeVersion:v4.0
    

    Compruebe que el comando emite el siguiente resultado sin errores.

    APPPOOL object "OrderServiceAppPool_PS" added
    
  2. Escriba el siguiente comando en Windows PowerShell, para crear un nuevo sitio web denominado OrderService_PS, que se configurará para usar el puerto 95 y almacenar su contenido en el directorio C:\DublinTutorial\OrderService_PS.

    .$env:SystemRoot\System32\inetsrv\appcmd.exe add site /name:OrderService_PS /bindings:http/*:95: /physicalPath:C:\DublinTutorial\OrderService_PS
    

    Compruebe que el comando emite el siguiente resultado sin errores.

    SITE object "OrderService_PS" added
    APP object "OrderService_PS/" added
    VDIR object "OrderService_PS/" added
    
  3. Escriba el siguiente comando en Windows PowerShell para configurar el sitio web OrderService_PS, para usar OrderServiceAppPool_PS como grupo de aplicaciones predeterminado.

    .$env:SystemRoot\System32\inetsrv\appcmd.exe set site OrderService_PS /applicationDefaults.applicationPool:OrderServiceAppPool_PS
    

    Compruebe que el comando emite el siguiente resultado sin errores.

    SITE object "OrderService_PS" changed
    

Implementación de servicios web con la Herramienta de implementación web y Windows PowerShell

En esta sección usará la Herramienta de implementación web para implementar los servicios web en un nuevo sitio web, llamado OrderService_PS. Este tutorial usa el sufijo "_PS" para indicar que el sitio web se ha creado mediante Windows PowerShell. Los comandos que se muestran en esta sección pueden agregarse a un script de implementación de Windows PowerShell para implementar la aplicación Order Service. Para obtener más información acerca de la Herramienta de implementación web, vea Web Deployment Tool (https://go.microsoft.com/fwlink/?LinkId=154601) (en inglés).

  1. Ejecute el siguiente comando en Windows PowerShell para asignar una variable llamada MSDeployPath a la ruta de acceso completa de la Herramienta de implementación web.

    $MSDeployPath = "$env:ProgramFiles\IIS\Microsoft Web Deploy\msdeploy.exe"
    
  2. Ejecute el siguiente comando en Windows PowerShell para implementar el paquete OrderProcessingService en el sitio web OrderService_PS:

    .$MSDeployPath -verb:sync -source:package=C:\DublinTutorial\PS_DeploymentPackages\OrderProcessingService.zip -dest:auto -setParam:Name=`"IIS Web Application Name`"`,value=OrderService_PS/OrderProcessingService
    

    Compruebe que el resultado emitido sea similar al siguiente, sin errores.

    Info: Updating createApp (OrderService_PS/OrderProcessingService).
    Info: Adding contentPath (OrderService_PS/OrderProcessingService).
    Info: Adding dirPath (OrderService_PS/OrderProcessingService).
    Info: Adding child dirPath (OrderService_PS/OrderProcessingService\bin).
    Info: Adding child filePath (OrderService_PS/OrderProcessingService\bin\OrderProcessingService.dll).
    Info: Adding child filePath (OrderService_PS/OrderProcessingService\OrderProcessing.svc).
    Info: Adding child filePath (OrderService_PS/OrderProcessingService\Web.config).
    
    Total changes: 7 (6 added, 0 deleted, 1 updated, 0 parameters changed, 22099 bytes copied)
    
  3. Ejecute el siguiente comando en Windows PowerShell para implementar el paquete OrderWorkflowService en el sitio web OrderService_PS:

    .$MSDeployPath -verb:sync -source:package=C:\DublinTutorial\PS_DeploymentPackages\OrderWorkflowService.zip -dest:auto -setParam:Name=`"IIS Web Application Name`"`,value=OrderService_PS/OrderWorkflowService
    

    Compruebe que el resultado emitido sea similar al siguiente, sin errores.

    Info: Updating createApp (OrderService_PS/OrderWorkflowService).
    Info: Adding contentPath (OrderService_PS/OrderWorkflowService).
    Info: Adding dirPath (OrderService_PS/OrderWorkflowService).
    Info: Adding child dirPath (OrderService_PS/OrderWorkflowService\bin).
    Info: Adding child filePath (OrderService_PS/OrderWorkflowService\bin\OrderWorkflowService.dll).
    Info: Adding child filePath (OrderService_PS/OrderWorkflowService\OrderWorkflow.xamlx).
    Info: Adding child filePath (OrderService_PS/OrderWorkflowService\Web.config).
    
    Total changes: 7 (6 added, 0 deleted, 1 updated, 0 parameters changed, 84412 bytes copied)
    
  4. Ejecute el siguiente comando en Windows PowerShell para implementar el paquete ShippingService en el sitio web OrderService_PS:

    .$MSDeployPath -verb:sync -source:package=C:\DublinTutorial\PS_DeploymentPackages\ShippingService.zip -dest:auto -setParam:Name=`"IIS Web Application Name`"`,value=OrderService_PS/ShippingService
    

    Compruebe que el resultado emitido sea similar al siguiente, sin errores.

    Info: Updating createApp (OrderService_PS/ShippingService).
    Info: Adding contentPath (OrderService_PS/ShippingService).
    Info: Adding dirPath (OrderService_PS/ShippingService).
    Info: Adding child dirPath (OrderService_PS/ShippingService\bin).
    Info: Adding child filePath (OrderService_PS/ShippingService\bin\ShippingService.dll).
    Info: Adding child filePath (OrderService_PS/ShippingService\bin\ShippingService.pdb).
    Info: Adding child filePath (OrderService_PS/ShippingService\Shipping.svc).
    Info: Adding child filePath (OrderService_PS/ShippingService\Web.config).
    
    Total changes: 8 (7 added, 0 deleted, 1 updated, 0 parameters changed, 68029 bytes copied)
    

Prueba de los servicios web con Windows PowerShell

En esta sección usará una sencilla función de script para ver si puede explorar los servicios web.

  1. En Windows PowerShell, escriba el siguiente comando para usar el Bloc de notas para crear un nuevo script de utilidad llamado Utility.ps1.

    NotePad Utility.ps1
    

    Cuando se inicie el Bloc de notas y se le pregunte si desea crear el archivo, haga clic en .

  2. Copie y pegue la siguiente función de script en el Bloc de notas.

    #=======================================================#
    #===                                                 ===#
    #=== Performs a simple browse test to a web service. ===#
    #===                                                 ===#
    #=======================================================#
    
    function BrowseWebService($address)
    {
      trap {return $false;}
    
      $WebClient = New-Object System.Net.WebClient
    
      $content = $WebClient.DownloadString($address)
    
      $content.Contains("You have created a service.")
    }
    

    Esta función usa la clase System.Net.WebClient para analizar la respuesta de texto de la solicitud de la dirección de servicio especificada. Si la respuesta contiene la cadena "Creó un servicio.", la prueba de exploración devuelve $true. De lo contrario, devuelve $false.

  3. Cierre el Bloc de notas y haga clic en Guardar cuando se le solicite que guarde Utility.ps1.

  4. Importe el script de la utilidad como módulo para la sesión actual de Windows PowerShell, mediante la ejecución del siguiente comando en Windows PowerShell.

    Import-Module .\Utility.ps1
    
  5. Pruebe los tres servicios web de Order Service escribiendo los tres comandos siguientes en Windows PowerShell.

    BrowseWebService "https://localhost:95/OrderProcessingService/OrderProcessing.svc"
    
    BrowseWebService "https://localhost:95/OrderWorkflowService/OrderWorkflow.xamlx"
    
    BrowseWebService "https://localhost:95/ShippingService/Shipping.svc"
    

    Compruebe cada comando BrowseWebService que haya devuelto True, tal como se muestra a continuación.

    PS C:\> BrowseWebService "https://localhost:95/OrderWorkflowService/OrderWorkflow.xamlx"
    True
    PS C:\> BrowseWebService "https://localhost:95/OrderProcessingService/OrderProcessing.svc"
    True
    PS C:\> BrowseWebService "https://localhost:95/ShippingService/Shipping.svc"
    True
    

¿Qué acabo de hacer?

En esta lección, ha actualizado los archivos de configuración de cada proyecto, para usar las nuevas direcciones de extremo. A continuación, ha creado un nuevo sitio web y un grupo de aplicaciones en Windows PowerShell. Por último, ha usado Windows PowerShell para generar e implementar cada proyecto de servicio en el nuevo sitio web.

Pasos siguientes

En la Lección 3: Configuración de Order Service con Windows PowerShell, usará los cmdlets de AppFabric para Windows PowerShell con el fin de configurar las bases de datos de seguimiento y persistencia para la aplicación Order Service que ha implementado en esta lección.

Vea también

Conceptos

Lección 1: Introducción a los cmdlets de Windows Server AppFabric para Windows PowerShell
Lección 3: Configuración de Order Service con Windows PowerShell
Lección 4: Seguimiento de Order Services con Windows PowerShell
Lección 5: Seguimiento del flujo de trabajo con Windows PowerShell

  2011-12-05