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:
Scaricare i file di esercitazione dall'indirizzo https://go.microsoft.com/fwlink/?LinkId=160309.
Estrarre i file nella directory C:\ come indicato nella Lezione 1: Guida introduttiva dell'Esercitazione con l'interfaccia di Windows Server AppFabric.
È necessario completare la Lezione 1: Introduzione ai cmdlet di Windows Server AppFabric per Windows PowerShell.
Procedura
Nel processo di ridistribuzione dell'applicazione OrderService verranno effettuati i seguenti passaggi:
Preparazione dei file di configurazione per la distribuzione
Creazione dei pacchetti di distribuzione mediante MSBuild con Windows PowerShell.
Creazione del sito Web OrderService_PS e del pool di applicazioni.
Distribuzione di ciascun servizio Web con Strumento di distribuzione Web e Windows PowerShell.
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.
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="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>
Chiudere il Blocco note e fare clic su Salva quando viene richiesto di salvare le modifiche.
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="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>
Chiudere il Blocco note e fare clic su Salva quando viene richiesto di salvare le modifiche.
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="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>
Chiudere il Blocco note e fare clic su Salva quando viene richiesto di salvare le modifiche.
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="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>
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 (https://go.microsoft.com/fwlink/?LinkId=123876).
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"
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'
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'
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'
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
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.
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
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
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) (https://go.microsoft.com/fwlink/?LinkId=154601) (informazioni in lingua inglese).
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"
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)
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)
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.
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 Sì.
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.
Chiudere il Blocco note e fare clic su Salva quando viene richiesto di salvare Utility.ps1.
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
Eseguire il test di tutti e tre i servizi Web di OrderService immettendo i seguenti tre comandi in Windows PowerShell.
BrowseWebService "https://localhost:95/OrderProcessingService/OrderProcessing.svc" BrowseWebService "https://localhost:95/OrderWorkflowService/OrderWorkflow.xamlx" BrowseWebService "https://localhost:95/ShippingService/Shipping.svc"
Verificare che in ciascun comando BrowseWebService il valore sia True come mostrato di seguito.
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
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
Concetti
Lezione 1: Introduzione ai cmdlet di Windows Server AppFabric per Windows PowerShell
Lezione 3: Configurazione del servizio OrderService con Windows PowerShell
Lezione 4: Monitoraggio del servizio OrderService con Windows PowerShell
Lezione 5: Rilevamento del flusso di lavoro con Windows PowerShell
2011-12-05