Condividi tramite


Parametrizzazione distribuzione Web

per team di distribuzione Web

Introduzione alla parametrizzazione

Lo sviluppo di applicazioni Web comporta spesso la distribuzione di codice in ambienti diversi: sviluppo, gestione temporanea o server di produzione. Ogni ambiente può usare un set diverso di risorse, ad esempio le informazioni di connessione al database, e Distribuzione Web viene compilato con funzionalità che consentono di trasformare le applicazioni Web man mano che vengono distribuite in ambienti diversi. Per trasformare un'applicazione durante la distribuzione, è possibile "parametrizzare" parti diverse delle applicazioni e, in fase di distribuzione, Distribuzione Web accetta l'input di un utente per sostituire diverse parti di informazioni all'interno dell'applicazione.

Modi diversi per distribuire applicazioni: sincronizzazione dinamica e Visual Studio

Lo strumento Distribuzione Web può essere usato per distribuire un'applicazione in due modi diversi. Un'applicazione Web può essere sincronizzata in tempo reale, da un server (ad esempio il server di sviluppo) a un altro server (ad esempio il server che ospita l'applicazione sul Web). Le applicazioni Web possono anche essere inserite in un file .zip, da scaricare e installare da un pubblico più ampio e più generale di sviluppatori. Si tratta di un modello comunemente usato dalle app "platform" (ad esempio Wordpress). Infine, Distribuzione Web viene usata in background da Visual Studio durante lo sviluppo e la distribuzione di progetti di applicazione Web (WAP). In questo caso, Visual Studio parametrizza automaticamente la maggior parte delle parti necessarie delle applicazioni Web, con la possibilità di creare parametri personalizzati, se necessario.

Creazione e parametrizzazione di un'applicazione da distribuire

Microsoft offre un modo semplice per installare più di 50 applicazioni Web popolari, ad esempio Wordpress, Parimenti, Drupal e DotNetNuke. Queste applicazioni possono essere installate relativamente rapidamente e facilmente. Dietro la scena, queste interfacce utente usano lo strumento Distribuzione Web per installare l'applicazione da un pacchetto .zip. Per creare un pacchetto dell'applicazione in modo che possa essere installato usando uno di questi strumenti, è necessario eseguire una serie di passaggi, tra cui parametrizzare parti dell'applicazione.

Per trasformare un'applicazione in un pacchetto .zip che può essere distribuito, sono necessari i passaggi seguenti:

  1. Crea un'applicazione.
  2. Creare un file "manifesto". Questo file indica allo strumento Distribuzione Web le diverse azioni necessarie per installare l'applicazione. Sono inclusi elementi come la copia di file e la configurazione di un database.
  3. Creare un file di parametri. Si tratta del file di "parametrizzazione" usato da Distribuzione Web per identificare le parti dell'applicazione che devono essere trasformate al momento dell'installazione in base all'input dell'utente.
  4. Creare un file .zip che contiene l'applicazione, il file manifesto e il file di parametri.

Questo articolo presenta in dettaglio ognuno di questi passaggi.

Passaggio 1: Creare un'applicazione

Attualmente non esiste un modo semplice per creare un'applicazione per sperimentare la parametrizzazione della distribuzione Web, ad eccezione della clonazione da un'applicazione esistente.

A questo punto è disponibile un'applicazione pronta per essere inserita in un pacchetto e parametrizzata in modo che altri sviluppatori possano scaricarla e installarla. Il passaggio successivo consiste nel configurare un file che indicherà a Web Deploy i passaggi necessari per installare l'applicazione.

Passaggio 2: Creare un file "manifesto"

Lo strumento Distribuzione Web può eseguire diverse funzioni, tra cui la copia di file, le impostazioni di configurazione del server Web e i database. Ognuna di queste funzioni è resa possibile da un "provider" di distribuzione Web. Per installare l'applicazione appena creata, si userà il provider iisApp , che consente di copiare i file e creare l'applicazione nel server, il provider setAcl , che imposta le autorizzazioni necessarie per i file e il provider dbFullSql , che configura il database. Per indicare a Distribuzione Web di usare più provider durante l'installazione, è necessario creare un file Manifest.xml che dichiara questi tre provider nel modo seguente (è possibile copiare un esempio da qui):

Screenshot che mostra l'icona del punto manifesto x m l.

<?xml version="1.0" encoding="utf-8" ?>
<msdeploy.iisApp>
  <iisApp path="Vacation Pictures" />
  <setAcl path="Vacation Pictures/App_Data" setAclAccess="Write, ReadAndExecute" />
  <dbFullSql path="CreateDBAndUser.sql" />
  <dbFullSql path="VacPicDBSchema.sql" />
</msdeploy.iisApp>

Esaminiamo più da vicino ognuna di queste voci.

IISApp Provider

La voce iisApp punta alla cartella in cui si trova il contenuto dell'applicazione. Ad esempio:

<iisApp path="Vacation Pictures" />

Il valore del percorso sarebbe diverso se l'applicazione avesse un nome diverso.

SetAcl Provider

La voce setAcl indica a Distribuzione Web di concedere autorizzazioni di lettura, scrittura ed esecuzione alla directory "App_Data" quando l'applicazione è installata. Ad esempio:

<setAcl path="Vacation Pictures/App_Data" setAclAccess="Write, ReadAndExecute" />

Applicazioni diverse potrebbero richiedere autorizzazioni speciali per altre cartelle. In tal caso, si creerebbe una voce setAcl diversa per ogni impostazione di autorizzazione necessaria.

DbFullSQL Provider

Le voci del provider dbFullSQL puntano a script SQL diversi usati per creare un database e un utente ("CreateDBAndUser.sql") e per configurare le tabelle di database ("VacPicDBSchema.sql") in fase di installazione.

Lo script CreateDBAndUser.sql è uno script abbastanza semplice che può essere copiato da qui:

Screenshot che mostra l'icona Create D B And User dot s q l.

Il VacPicDBSchema.sql è lo script che crea tutte le tabelle nel database usato dall'applicazione. Questo file può essere creato usando lo strumento da riga di comando Distribuzione Web. Dalla riga di comando passare alla posizione in cui è installata distribuzione Web (in genere %programfiles%\IIS\Microsoft Web Deploy <LatestVersion>) e immettere il comando seguente:

msdeploy -verb:sync -source:dbfullsql="data source=.\SQLExpress;initial catalog=PhotoGallery;user id=sa;password=<AdminPassword>" -dest:dbfullsql="c:\VacPicDBSchema.sql"

Assicurarsi di sostituire <Amministrazione Password> con la password di amministratore SQL appropriata.

A livello di base, il comando precedente usa il provider dbFullSql per copiare dati da un database usando un database stringa di connessione ("-source:dbfullsql=...") e copiarlo in un file di script di database ("-dest:dbfullsql=...")

Passaggio 3: Creare un file di parametri

Dopo aver creato il file manifesto che indica a Web Deploy come installare l'applicazione, è necessario creare un file di parametri che indica a Distribuzione Web come trasformare determinate impostazioni in modo che l'applicazione possa essere personalizzata per funzionare in un ambiente di distribuzione dell'utente specifico.

I componenti di base che sarebbero utili per la trasformazione sono:

  • Nome applicazione: se l'utente finale che installa l'applicazione vuole modificare il nome dell'applicazione, sarà necessario parametrizzare il nome dell'applicazione.
  • Nome del database: un utente potrebbe dover configurare l'applicazione per l'esecuzione in un database che usa un nome diverso. In tal caso, sarà necessario parametrizzare le informazioni di connessione al database.

Distribuzione Web legge le informazioni di parametrizzazione da un file XML. In questo caso, chiamerai il file Parameters.xml. Per questa demo, il file di parametri può essere copiato da qui e ha un aspetto simile al seguente (nel sito Web, questo file XML può essere espanso in una casella di codice come viene usata in questa pagina):

Screenshot che mostra l'icona del punto x m l dei parametri.

Si apprenderà ora come parametrizzare il nome dell'applicazione e il nome del database.

Parametrizzazione del nome dell'applicazione

La parametrizzazione distribuzione Web può essere usata per trasformare diversi tipi di input. In genere ciò comporta la ricerca di testo in un file XML o in un file di testo e la sostituzione con testo diverso. Nel caso del nome dell'applicazione, la copia del file e la creazione del sito Web nel computer di destinazione viene gestita da un provider di distribuzione Web. Per parametrizzare il nome dell'applicazione, è quindi necessario parametrizzare il provider dichiarato in precedenza nel file Manifest.xml.

Il provider nel file manifesto può essere considerato come il provider di origine, che leggerà le informazioni dal pacchetto dell'applicazione scaricato da un utente. A sua volta, quando l'applicazione viene installata, un provider di destinazione viene usato in background per copiare il contenuto e creare un sito Web nel computer dell'utente. Il file Manifest.xml contiene le informazioni sul provider di origine, quindi per consentire a un utente di modificare il nome dell'applicazione. È necessario parametrizzare il provider definito nel file Manifest.xml.

Nel file Parameters.xml collegato a precedente, questa parametrizzazione viene eseguita con la prima voce XML:

<parameter 
  name="Application Path" 
  description="Full site path where you would like to install your application (i.e., Default Web Site/PhotoGallery)" 
  tags="iisapp">
  <parameterValidation kind="AllowEmpty" />
  <parameterEntry kind="ProviderPath" scope="iisapp" match="Vacation Pictures" />
</parameter>

Il tag XML importante da notare è parameterEntry. Ciò indica a Web Deploy alcuni aspetti: uno, che si sta parametrizzando un provider nel manifesto (kind="ProviderPath"); due, che si sta parametrizzando un provider iisApp (scope="iisapp"); infine, che si desidera sostituire solo le voci nel file manifesto con il valore "Vacation Pictures".

La seconda voce nel file di parametri ('name="SetAclParameter1"') assicura semplicemente che il provider setAcl nel file Manifest.xml usi lo stesso nome immesso dall'utente per il provider iisApp , che viene eseguito con la riga 'defaultValue="{Percorso applicazione}/App_Data"'. Il valore tra parentesi quadre {Percorso applicazione}, fa riferimento al nome del primo parametro.

Parametrizzazione del nome del database

Le altre voci del file Parameters.xml gestiscono la parametrizzazione delle informazioni di connessione al database. Le voci 2nd-6th nel file dei parametri raccolgono informazioni dall'interfaccia utente quando un utente installa l'applicazione. Queste voci richiedono all'utente il server di database che ospiterà il database per l'applicazione ("Server di database"), il nome del database da creare ("Nome database"), l'utente del database da associare al database ("Nome utente database") e la password per tale utente ("Password database"). Per creare il database e l'utente, Distribuzione Web richiede anche l'utente amministratore del database ("Database Amministrazione istrator") e la password ("Database Amministrazione istrator Password").

Infine, tutte le informazioni immesse dall'utente vengono usate da Distribuzione Web per eseguire effettivamente gli script che creano il database (CreateDBAndUser.sql) e configurano le tabelle (VacPicDBSchema.sql). Queste sono le 7 e le 8 voci in Parameters.xml:

<parameter 
  name="Create DB and DB User Connection String" 
  description="Automatically sets the connection string for the connection request."
  defaultValue="Server={Database Server};Database={Database Name};uid={Database Administrator};Pwd={Database Administrator Password};"
  tags="Hidden,SQLConnectionString,Validate">
  <parameterEntry type="ProviderPath" scope="dbfullsql" match="CreateDBAndUser.sql" />
</parameter>
<parameter 
  name="Populate DB Connection String" 
  description="Automatically sets the connection string for the connection request." 
  defaultValue="Server={Database Server};Database={Database Name};uid={Database Administrator};Pwd={Database Administrator Password};" 
  tags="Hidden,SQLConnectionString,Validate">
  <parameterEntry type="ProviderPath" scope="dbfullsql" match="VacPicDBSchema.sql" />
</parameter>

Anche in questo caso, poiché Distribuzione Web usa un provider per sincronizzare le informazioni sul database (come dichiarato nel file Manifest.xml), queste due voci di parametro sono 'type="ProviderPath"'.

L'applicazione "Vacation Pictures" tiene traccia anche della connessione al database nel file Web.config. Questa parametrizzazione viene gestita dalla voce finale in Parameters.xml.

Passaggio 4- Creare un file ZIP contenente l'applicazione, il file manifesto e il file di parametri

Sono ora disponibili i blocchi predefiniti di base necessari per distribuire l'applicazione, quindi è ora possibile creare un pacchetto dell'applicazione nel formato del pacchetto appropriato. Il pacchetto deve contenere solo il file Parameters.xml, il file Manifest.xml e gli script di installazione del database al livello principale (radice) del pacchetto ZIP e il contenuto dell'applicazione in una sottocartella.

Nell'angolo inferiore sinistro di WebMatrix fare clic sulla scheda Sito per passare al contenuto del sito.

Screenshot che mostra la finestra di dialogo Matrice Web che evidenzia la scheda Sito.

La pagina del sito ha un collegamento alla posizione in cui si trova il contenuto dell'applicazione:

Screenshot che mostra l'URL e il percorso del contenuto dell'applicazione.

Fare clic sul collegamento per passare al contenuto dell'applicazione. Passare a un altro livello da questa cartella e creare una nuova cartella denominata "VacationPicsWPIInstaller". Copiare la cartella del contenuto dell'applicazione, i file Manifest.xml e Parameters.xml e gli script di installazione del database nella cartella appena creata:

Screenshot che mostra la cartella del contenuto dell'applicazione con file e script di installazione del database.

Con tutti i file selezionati, fare clic con il pulsante destro del mouse sulla>> cartella Compresso (compresso):

Screenshot che mostra i file selezionati evidenziando le opzioni Invia a e Cartella compressa.

Questo file compresso può essere denominato qualsiasi elemento, ma per funzionare meglio con la demo, denominarlo "VacationPicsWPIInstaller.zip".

Questo pacchetto contiene ora tutto ciò che è necessario per distribuirlo.