Lezione 2: Distribuzione dell'applicazione del servizio OrderService con Windows PowerShell

Tempo necessario al completamento: 25 minuti

Obiettivo: Apprendere come distribuire le applicazioni che includono WCF e/o i servizi WF a IIS.

Scopo: In questa lezione viene mostrato un approccio di esempio all'utilizzo di Windows PowerShell per la distribuzione degli script con Strumento di distribuzione Web. Verrà ridistribuita l'applicazione OrderService a un sito Web denominato OrderService_PS.

Prerequisiti

Prendere nota dei seguenti prerequisiti:

Procedura

Nel processo di ridistribuzione dell'applicazione OrderService verranno effettuati i seguenti passaggi:

  1. Preparazione dei file di configurazione per la distribuzione

  2. Creazione dei pacchetti di distribuzione mediante MSBuild con Windows PowerShell.

  3. Creazione del sito Web OrderService_PS e del pool di applicazioni.

  4. Distribuzione di ciascun servizio Web con Strumento di distribuzione Web e Windows PowerShell.

  5. Test di ciascun servizio Web con Windows PowerShell.

Preparazione dei file di configurazione per la distribuzione

Verrà utilizzato Windows PowerShell per ridistribuire l'applicazione Servizio Gestore oridini a un nuovo sito Web utilizzando la porta 95. In questa sezione verranno aggiornati gli indirizzi di endpoint nei file di configurazione con le nuove informazioni di porta prima della distribuzione.

  1. Eseguire il comando riportato di seguito in Windows PowerShell per aprire il file app.config per il client di gestione degli ordini.

    notepad C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\app.config
    
    Sostituire la sezione client con la seguente sezione client.

            <client>
                <endpoint address="http://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>
    
    Chiudere il Blocco note e fare clic su Salva quando viene richiesto di salvare le modifiche.


  2. Eseguire il comando riportato di seguito da Windows PowerShell per aprire il file Web.config per Order Processing Service.

    notepad C:\DublinTutorial\OrderServiceSolution\Completed\OrderProcessingService\Web.config
    
    Sostituire la sezione client con la seguente sezione client.

        <client>
          <endpoint address="http://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>
    
    Chiudere il Blocco note e fare clic su Salva quando viene richiesto di salvare le modifiche.


  3. Eseguire il comando riportato di seguito da Windows PowerShell per aprire il file Web.config per OrderWorkflowService.

    notepad C:\DublinTutorial\OrderServiceSolution\Completed\OrderWorkflowService\Web.config
    
    Sostituire la sezione client con la seguente sezione client.

        <client>
          <endpoint address="http://localhost:95/OrderProcessingService/OrderProcessing.svc"
            binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IOrderProcessing"
            contract="IOrderProcessing" name="BasicHttpBinding_IOrderProcessing" />
          <endpoint address="http://localhost:95/ShippingService/Shipping.svc" binding="basicHttpBinding"
            bindingConfiguration="BasicHttpBinding_IShipping" contract="IShipping"
            name="BasicHttpBinding_IShipping" />
        </client>
    
    Chiudere il Blocco note e fare clic su Salva quando viene richiesto di salvare le modifiche.


  4. Eseguire il comando riportato di seguito da Windows PowerShell per aprire il file Web.config per il servizio di spedizione.

    notepad C:\DublinTutorial\OrderServiceSolution\Completed\ShippingService\Web.config
    
    Sostituire la sezione client con la seguente sezione client.

        <client>
          <endpoint address="http://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>
    
    Chiudere il Blocco note e fare clic su Salva quando viene richiesto di salvare le modifiche.


Creazione dei pacchetti di distribuzione mediante l'utilizzo di MSBuild con Windows PowerShell

MSBuild (Microsoft Build Engine) è la piattaforma di generazione per Microsoft e Visual Studio. MSBuild è completamente trasparente per quanto riguarda la modalità di elaborazione e generazione del software, consentendo agli sviluppatori di orchestrare e generare prodotti in ambienti di lavoro in cui non è installato Visual Studio. MSBuild è incluso come parte di .NET Framework. Per utilizzare MSBuild per generare nuovi pacchetti di distribuzione per l'applicazione OrderService, effettuare la procedura indicata in questa sezione. È possibile aggiungere questi comandi a uno script di Windows PowerShell per automatizzare la generazione. Per ulteriori informazioni su MSBuild, vedere Cenni preliminari su MSBuild (http://go.microsoft.com/fwlink/?LinkId=123876).

  1. In Windows PowerShell, eseguire il seguente comando per assegnare una variabile denominata MSBuildPath al percorso completo dell'eseguibile di MSBuild nella directory .NET Framework. Tale comando determina il percorso in base al valore della stringa InstallPath nella chiave del Registro di sistema 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. Eseguire il comando indicato di seguito in Windows PowerShell per generare il pacchetto di distribuzione per il progetto OrderProcessingService:

    .$MSBuildPath 'C:\DublinTutorial\OrderServiceSolution\Completed\OrderProcessingService\OrderProcessingService.csproj' /T:Package /P:PackageLocation='C:\DublinTutorial\PS_DeploymentPackages\OrderProcessingService.zip'
    
  3. Eseguire il comando indicato di seguito in Windows PowerShell per generare il pacchetto di distribuzione per il progetto OrderWorkflowService:

    .$MSBuildPath 'C:\DublinTutorial\OrderServiceSolution\Completed\OrderWorkflowService\OrderWorkflowService.csproj' /T:Package /P:PackageLocation='C:\DublinTutorial\PS_DeploymentPackages\OrderWorkflowService.zip'
    
  4. Eseguire il comando indicato di seguito in Windows PowerShell per generare il pacchetto di distribuzione per il progetto ShippingService:

    .$MSBuildPath 'C:\DublinTutorial\OrderServiceSolution\Completed\ShippingService\ShippingService.csproj' /T:Package /P:PackageLocation='C:\DublinTutorial\PS_DeploymentPackages\ShippingService.zip'
    
  5. Verificare che tutti e tre i file zip siano stati creati nella directory C:\DublinTutorial\PS_DeploymentPackages come mostrato di seguito:

    
    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. Se non è stata generata l'applicazione OrderClient, utilizzata come client per i servizi, eseguire il comando indicato di seguito in Windows PowerShell per generare l'applicazione OrderClient:

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

Creazione del sito Web OrderService_PS e del pool di applicazioni

In questa sezione verrà utilizzato lo strumento di amministrazione Appcmd.exe per IIS per creare il sito Web e il pool di applicazioni. Verrà utilizzato il provider di ambiente per Windows PowerShell per fare riferimento al percorso di Appcmd.exe tramite la variabile di ambiente SystemRoot. Per visualizzarne la modalità di funzionamento, immettere il seguente comando in Windows PowerShell:

$env:SYSTEMROOT

L'output che ne risulta dovrebbe mostrare la directory radice del sistema.

Per crerare il sito Web OrderService_PS Web e il pool di applicazioni OrderServiceAppPool_PS attenersi alla procedura indicata di seguito. Questi comandi possono anche essere aggiunti allo script di distribuzione di Windows PowerShell per l'automazione.

  1. In Windows PowerShell immettere il seguente comando per creare il pool di applicazioni OrderServiceAppPool_PS configurato per utilizzare la versione 4 di .NET Framework.

    .$env:SystemRoot\System32\inetsrv\appcmd.exe add apppool /Name:OrderServiceAppPool_PS -managedRuntimeVersion:v4.0
    
    Verificare che l'output del comando sia quello indicato di seguito, senza errori.

    APPPOOL object "OrderServiceAppPool_PS" added
    
  2. Immettere il seguente comando in Windows PowerShell per creare un nuovo sito Web denominato OrderService_PS, che sarà configurato per utilizzare la porta 95 e memorizzarne il contenuto nella directory C:\DublinTutorial\OrderService_PS.

    .$env:SystemRoot\System32\inetsrv\appcmd.exe add site /name:OrderService_PS /bindings:http/*:95: /physicalPath:C:\DublinTutorial\OrderService_PS
    
    Verificare che l'output del comando sia quello indicato di seguito, senza errori.

    SITE object "OrderService_PS" added
    APP object "OrderService_PS/" added
    VDIR object "OrderService_PS/" added
    
  3. Immettere il seguente comando in Windows PowerShell per configurare il sito Web OrderService_PS Web per l'utilizzo di OrderServiceAppPool_PS come pool di applicazioni predefinito.

    .$env:SystemRoot\System32\inetsrv\appcmd.exe set site OrderService_PS /applicationDefaults.applicationPool:OrderServiceAppPool_PS
    
    Verificare che l'output del comando sia quello indicato di seguito, senza errori.

    SITE object "OrderService_PS" changed
    

Distribuzione dei servizi Web con Strumento di distribuzione Web e Windows PowerShell.

In questa sezione verrà utilizzato Strumento di distribuzione Web per distribuire i servizi Web a un nuovo sito Web denominato OrderService_PS. In questa esercitazione viene indicato il suffisso "_PS" per indicare che il sito Web è stato creato con Windows PowerShell. I comandi mostrati in questa sezione potrebbero essere aggiunti a uno script di distribuzione di Windows PowerShell per la distribuzione dell'applicazione OrderService. Per ulteriori informazioni su Strumento di distribuzione, vedere Web Deployment Tool (Strumento di distribuzione Web) (http://go.microsoft.com/fwlink/?LinkId=154601) (informazioni in lingua inglese).

  1. Eseguire il comando indicato di seguito in Windows PowerShell per assegnare una variabile denominata MSDeployPath al percorso completo di Strumento di distribuzione Web.

    $MSDeployPath = "$env:ProgramFiles\IIS\Microsoft Web Deploy\msdeploy.exe"
    
  2. Eseguire il comando indicato di seguito in Windows PowerShell per distribuire il pacchetto OrderProcessingService al sito 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
    
    Verificare che l'output del comando sia simile a quello indicato di seguito, senza errori.

    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. Eseguire il comando indicato di seguito in Windows PowerShell per distribuire il pacchetto OrderWorkflowService al sito 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
    
    Verificare che l'output del comando sia simile a quello indicato di seguito, senza errori.

    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. Eseguire il comando indicato di seguito in Windows PowerShell per distribuire il pacchetto ShippingService al sito 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
    
    Verificare che l'output del comando sia simile a quello indicato di seguito, senza errori.

    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)
    

Test dei servizi Web con Windows PowerShell

In questa sezione verrà utilizzata una funzione script semplice per verificare se si è in grado di sfogliare i servizi Web.

  1. In Windows PowerShell immettere il seguente comando per utilizzare Blocco note per creare lo script di una nuova utilità denominato Utility.ps1.

    NotePad Utility.ps1
    
    Quando Blocco note viene avviato e viene richiesto se si desidera creare il file, fare clic su .

  2. Copiare e incollare la seguente funzione script in Blocco note.

    
    #=======================================================#
    #===                                                 ===#
    #=== 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.")
    }
    
    In questa funzione viene utilizzata la classe System.Net.WebClient per analizzare la risposta del testo dalla richiesta dell'indirizzo del servizio specificato. Se la risposta contiene la stringa "You have created a service." la ricerca restituirà $true. In caso contrario, restituirà $false.


  3. Chiudere il Blocco note e fare clic su Salva quando viene richiesto di salvare Utility.ps1.

  4. Importare lo script dell'utilità come modulo per la sessione corrente di Windows PowerShell mediante l'esecuzione del comando indicato di seguito in Windows PowerShell.

    Import-Module .\Utility.ps1
    
  5. Eseguire il test di tutti e tre i servizi Web di OrderService immettendo i seguenti tre comandi in Windows PowerShell.

    BrowseWebService "http://localhost:95/OrderProcessingService/OrderProcessing.svc"
    
    BrowseWebService "http://localhost:95/OrderWorkflowService/OrderWorkflow.xamlx"
    
    BrowseWebService "http://localhost:95/ShippingService/Shipping.svc"
    
    Verificare che in ciascun comando BrowseWebService il valore sia True come mostrato di seguito.

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

Riepilogo

In questa lezine sono stati aggiornati i file di configurazione per ciascun progetto per l'utilizzo dei nuovi indirizzi di endpoint. Quindi sono stati creati un nuovo sito Web e un pool di applicazioni in Windows PowerShell. Infine è stato utilizzato Windows PowerShell per generare e distribuire ciascun progetto di servizio al nuovo sito Web.

Passaggi successivi

Nella Lezione 3: Configurazione del servizio OrderService con Windows PowerShell, saranno utilizzati i cmdlet di AppFabric per Windows PowerShell per configurare i database di monitoraggio e salvataggio permanente per l'applicazione del servizio OrderService distribuita in questa lezione.

Vedere anche

  2011-12-05
Mostra: