Condividi tramite


Cenni preliminari sulla distribuzione del progetto di applicazione Web ASP.NET

Dopo avere creato un progetto di applicazione Web ASP.NET o un progetto di sito Web ASP.NET in Visual Studio 2010, si distribuisce in genere il progetto in un server Web, dove altri utenti possono accedere all'applicazione. La distribuzione non consiste in genere solo nella copia dei file dell'applicazione da un server a un altro. Potrebbe essere necessario eseguire anche attività aggiuntive, come le seguenti:

  • Modifica delle impostazioni del file Web.config che devono essere diverse nell'ambiente di destinazione, ad esempio impostazioni per il debug o stringhe di connessione al database.

  • Propagazione di dati o strutture di dati in database utilizzati dall'applicazione Web.

  • Configurazione delle impostazioni di IIS sul computer di destinazione, quali pool di applicazioni, metodo di autenticazione, gestione degli errori e indicazione dell'eventuale abilitazione dell'esplorazione directory.

  • Installazione di certificati di sicurezza.

  • Impostazione di valori nel Registro di sistema del computer di destinazione.

  • Installazione degli assembly di applicazione nella Global Assembly Cache (GAC) nel computer di destinazione.

Un'estensione di Microsoft Internet Information Services (IIS) denominata Distribuzione Web può automatizzare la maggior parte delle attività di distribuzione. Visual Studio fornisce strumenti che funzionano con Distribuzione Web per semplificare la distribuzione di un progetto di applicazione Web.

Nota

Questo argomento si riferisce ad applicazioni Web create tramite un modello di progetto di applicazione Web.È anche possibile creare le applicazioni Web utilizzando un modello di progetto di sito Web.Per informazioni sulla distribuzione di progetti di sito Web, vedere Cenni preliminari sulla distribuzione di progetti di sito Web ASP.NET.

In questo argomento sono incluse le sezioni seguenti:

  • Pacchetti di Distribuzione Web

  • Pubblicazione con un clic

  • Scenari aziendali

  • Scenari di hosting di terzi

  • Trasformazione del file Web.config

  • Distribuzione di un database SQL Server

  • Estensione della pipeline della pubblicazione sul Web

Per ulteriori informazioni sugli argomenti illustrati in questa panoramica, vedere Mappa del contenuto per la distribuzione di ASP.NET.

Pacchetti di Distribuzione Web

È possibile distribuire un progetto di applicazione Web utilizzando Visual Studio per creare un pacchetto di distribuzione Web e installando il pacchetto nel server di destinazione. Un pacchetto di distribuzione è un file compresso (zip) o che contiene tutte le informazioni necessarie per impostare l'applicazione in IIS, copiare in essa file dell'applicazione e impostare le risorse correlate quali i database.

È possibile creare il pacchetto di distribuzione e quindi reinstallarlo separatamente. In alternativa, è possibile utilizzare la pubblicazione con un clic che consente di distribuire in modalità remota in un solo passaggio. Per impostazione predefinita, mediante la pubblicazione con un clic non viene crea un pacchetto ma è possibile specificare che è necessario creare un pacchetto se lo si desidera.

Oltre ai file di origine e ai file binari dell'applicazione, un pacchetto di distribuzione in genere include file che contengono i tipi di informazioni riportati di seguito.

  • Impostazioni di IIS, quali pool di applicazioni, metodo di autenticazione, gestione degli errori e indicazione dell'eventuale abilitazione dell'esplorazione directory.

  • Script di database utilizzati per la propagazione delle modifiche apportate ai dati o alle strutture del database.

  • Parametri che contengono valori che può essere necessario modificare quando viene installato il pacchetto, ad esempio impostazioni per il debug o stringhe di connessione.

Il processo di creazione del pacchetto in Visual Studio è estensibile. Tra le informazioni che può essere opportuno includere in un pacchetto ma che richiedono estensioni personalizzate sono presenti le seguenti:

  • Certificati di sicurezza.

  • Impostazioni del Registro di sistema Windows.

  • Assembly (file con estensione dll) che devono essere installati nella GAC del computer di destinazione.

Specifica del contenuto da includere in un pacchetto di distribuzione

In Visual Studio vengono utilizzate le impostazioni create nella scheda Pubblicazione/Creazione pacchetto Web della pagina Proprietà del progetto per determinare cosa includere in un pacchetto di distribuzione. Nell'illustrazione seguente viene mostrata la scheda Pubblicazione/creazione pacchetto Web.

Finestra di dialogo per la creazione del pacchetto e la pubblicazione

Le impostazioni relative al database che incidono sulla creazione del pacchetto vengono immesse nella scheda Pubblicazione/creazione pacchetto SQL, descritta più avanti in questo argomento.

Queste due schede consentono di aggiornare le impostazioni più utilizzate. Le altre impostazioni utilizzate meno frequentemente vengono archiviate nel file del progetto di Visual Studio (csproj o vbproj) e possono essere modificate mediante la modifica diretta di tale file.

Creazione di un pacchetto di distribuzione

Per creare un pacchetto è possibile procedere nei modi riportati di seguito.

  • Utilizzare gli strumenti di Visual Studio.

  • Utilizzare direttamente il comando MSBuild dalla riga di comando.

  • Utilizzare indirettamente il comando MSBuild da PowerShell o Team Build.

Installazione di un pacchetto di distribuzione

Una volta creato un pacchetto di distribuzione, è necessario installarlo nel computer di destinazione. Distribuzione Web utilizza le informazioni contenute nel pacchetto per configurare IIS, impostare i database, creare strutture di cartelle e copiarvi i file ed eseguire qualsiasi altra attività necessaria per distribuire l'applicazione.

Per installare un pacchetto è possibile procedere nei modi riportati di seguito.

  • Utilizzare Distribuzione Web dalla riga di comando.

  • Utilizzare un file cmd creato da Visual Studio contenente comandi Distribuzione Web per l'installazione del pacchetto. I comandi Distribuzione Web possono essere lunghi e complessi, pertanto viene fornito questo file per semplificare l'installazione di un pacchetto dalla riga di comando.

  • Utilizzare Gestione IIS.

  • Utilizzare PowerShell per eseguire i comandi Distribuzione Web.

È possibile includere parametri in un pacchetto quando lo si crea. Queste sono coppie nome/valore a cui si fornisce un valore predefinito quando viene creato il pacchetto ma che per cui è possibile fornire un nuovo valore quando il pacchetto viene installato. Se si utilizza Gestione IIS per installare il pacchetto, i nomi dei parametri vengono visualizzati utilizzando caselle di testo in modo che sia possibile immettere nuovi valori. Se si effettua l'installazione utilizzando Distribuzione Web dalla riga di comando, è possibile specificare valori di parametri in un file XML.

Percorso e contenuto della cartella dei pacchetti

Per impostazione predefinita, in Visual Studio i pacchetti di distribuzione vengono generati nella cartella identificata dalla proprietà IntermediateOutputPath di MSBuild. La proprietà IntermediateOutputPath fa riferimento alla cartella obj\Configurazione del progetto, come mostrato nell'illustrazione seguente della finestra Esplora soluzioni:

Esplora soluzioni con file del pacchetto di distribuzione

I nomi predefiniti per Configurazione sono Debug (come mostrato nell'illustrazione precedente) e Release. È possibile definire configurazioni di compilazione aggiuntive.

Il pacchetto viene creato in una cartella denominata Package. Nella cartella Pacchetto sono contenuti i file riportati di seguito.

  • nomeprogetto.zip. Questo è il pacchetto di distribuzione effettivo.

  • nomeprogetto.deploy.cmd. Si tratta di un file batch della riga di comando che richiama Distribuzione Web per semplificare l'installazione del pacchetto dalla riga di comando.

  • nomeprogetto.SetParameters.xml. Questo file contiene i parametri passati a Distribuzione Web quando si utilizza il file deploy.cmd per installare il pacchetto. Per ogni parametro, viene specificato un valore predefinito determinato dalle impostazioni del pacchetto di Visual Studio. Ad esempio, è possibile modificare questi valori se si desidera installare l'applicazione Web su più server ma utilizzare impostazioni diverse per ogni server.

  • nomeprogetto.SourceManifest.xml. Questo file contiene le impostazioni passate da Visual Studio a Distribuzione Web e utilizzate da Distribuzione Web per creare il pacchetto Web. Questo file è richiesto da Distribuzione Web solo per creare il pacchetto. Non si utilizza quando il pacchetto viene installato.

Se si sceglie di non creare il pacchetto come file con estensione zip, le cartelle e i file che sarebbero stati archiviati nel file con estensione zip vengono archiviati in una cartella denominata Archive. In questo caso, il primo nodo dei nomi file deploy.cmd, SetParameter.xml e SourceManifest.xml è "Archive" anziché nomeprogetto.

Le interrelazioni tra Visual Studio, Distribuzione Web e questi file sono riportate nell'illustrazione seguente:

File di un pacchetto di distribuzione creato tramite Visual Studio

Pubblicazione con un clic

È inoltre possibile distribuire in modalità remota tramite la funzionalità Pubblicazione con un clic di Visual Studio. In tal caso, è necessario specificare in un profilo di pubblicazione la posizione e il modo in cui Visual Studio deve distribuire l'applicazione. Nella figura seguente è illustrata la finestra di dialogo Profilo di pubblicazione.

Finestra di dialogo Profilo di pubblicazione

Se si utilizza la pubblicazione con un clic per distribuire l'applicazione a una società di hosting di terze parti, le impostazioni necessarie per la finestra di dialogo Profilo di pubblicazione verranno in genere fornite da tale società.

Una volta completata la specifica delle impostazioni di pubblicazione, è possibile fare clic sul pulsante Pubblica in questa finestra di dialogo o nella barra degli strumenti Sito Web - Pubblicazione con un clic. Visual Studio distribuirà quindi l'applicazione sul computer di destinazione. Quando si fa clic sul pulsante Pubblica dopo che un progetto di applicazione Web è già stato distribuito, vengono ridistribuiti gli elementi modificati.

È possibile creare più profili in modo da consentire la pubblicazione in server differenti o nello stesso server con impostazioni differenti.

Scenari aziendali

In un ambiente aziendale, in genere si effettua la distribuzione da un computer di sviluppo a uno o più ambienti intermedi, ad esempio un server di test o un server di gestione temporanea. Da uno degli ambienti intermedi, si distribuisce quindi all'ambiente di produzione.

Per la distribuzione iniziale dall'ambiente di sviluppo, gli scenari tipici includono quanto segue:

  • Creare un pacchetto di distribuzione tramite Visual Studio e installarlo manualmente.

  • Creare e installare il pacchetto di distribuzione tramite un processo riga di comando. Ciò viene eseguito in genere in modalità batch da un repository di controllo del codice sorgente tramite MSBuild.

  • Utilizzare la funzionalità di pubblicazione con un clic. Questa opzione è disponibile solo se il computer di sviluppo dispone di accesso remoto all'ambiente di destinazione, se il computer di destinazione è impostato per il metodo di pubblicazione selezionato e se si dispone di autorizzazioni appropriate sul computer di destinazione. Per impostazione predefinita, la pubblicazione con un clic non crea un pacchetto. Tuttavia, è possibile specificare che deve essere creato un pacchetto per l'utilizzo come archivio o backup.

Per distribuire da un ambiente al successivo dopo la distribuzione iniziale, è possibile utilizzare lo stesso pacchetto creato per la distribuzione iniziale. In alternativa, è possibile utilizzare Distribuzione Web per creare un nuovo pacchetto nel computer dal quale si distribuisce.

Nell'illustrazione seguente vengono mostrati alcuni scenari aziendali tipici.

Scenari tipici per distribuzione Web aziendale

Scenari di hosting di terzi

Se si utilizza una società di hosting di terzi e si effettua la distribuzione direttamente dal computer di sviluppo alla società di hosting, sono disponibili le opzioni riportate di seguito.

  • Utilizzare la funzionalità di pubblicazione con un clic di Visual Studio.

  • Creare un pacchetto e utilizzare Gestione IIS per installarlo in modalità remota.

Presso la società di hosting, l'applicazione potrebbe essere ospitata in un ambiente condiviso oppure su server dedicati. Per applicazioni ospitate in ambienti condivisi, esistono in genere limitazioni significative riguardo alla possibilità di configurare l'ambiente. Ad esempio, generalmente non è consentito modificare impostazioni di IIS in un ambiente host condiviso.

Nell'illustrazione seguente vengono mostrati alcuni scenari di hosting di terze parti.

Scenari tipici di distribuzione su host di terze parti

Trasformazione del file Web.config

I file Web.config includono in genere impostazioni che devono differire in base all'ambiente in cui l'applicazione è in esecuzione. Ad esempio, quando si distribuisce un file Web.config in un server di destinazione, potrebbe essere necessario apportare modifiche come quelle riportate di seguito.

  • Modificare la stringa di connessione al database in modo da puntare al database di produzione.

  • Disabilitare il debug nell'ambiente di produzione.

  • Rimuovere informazioni riservate, ad esempio stringhe di connessione, se si fornisce un pacchetto in un sito della community.

Per gestire manualmente le modifiche a un file Web.config, è possibile effettuare le operazioni riportate di seguito.

  • Modificare il file Web.config sul server di destinazione ogni volta che il progetto viene distribuito.

  • Gestire versioni separate del file Web.config per ogni ambiente (probabilmente in cartelle separate o con nomi distintivi) e copiare solo la versione appropriata nell'ambiente di destinazione quando si effettua la distribuzione.

  • Creare file XSLT per trasformare il file Web.config e applicare le trasformazioni quando si distribuisce l'applicazione.

Per progetti di applicazione Web, ASP.NET fornisce strumenti che automatizzano il processo di modifica (trasformazione) dei file Web.config quando vengono distribuiti. Per ogni ambiente in cui si desidera effettuare la distribuzione, viene creato un file di trasformazione che specifica solo le differenze nel file Web.config per tale ambiente.

I nomi dei file di trasformazione includono il nome dell'ambiente di destinazione (il nome della configurazione di compilazione) come nodo aggiuntivo tra "Web" e "config". Ad esempio, il file di trasformazione per la configurazione di compilazione Debug è Web.Debug.Config. Nella finestra Esplora soluzioni di Visual Studio vengono automaticamente raggruppati questi file nel file Web.config, come mostrato nell'illustrazione seguente:

Esplora soluzioni con file di trasformazione Web.config

Un file di trasformazione è un file XML che specifica quali modifiche devono essere apportate al file Web.config. Nei file di trasformazione vengono utilizzati attributi XML progettati specificatamente per eseguire la trasformazione di file Web.config per la distribuzione. Ad esempio, supponendo che il file Web.config contenga la sezione della stringa di connessione riportata di seguito.

<connectionStrings>
  <add name="ApplicationServices"
      connectionString="[TestDatabase]" />
</connectionStrings>

Il file di trasformazione riportato di seguito specifica che la stringa di connessione denominata ApplicationServices deve essere convertita automaticamente in modo da puntare a un database di produzione quando viene distribuita l'applicazione Web.

<?xml version="1.0"?>
<configuration xmlns:xdt="https://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="ApplicationServices" 
        connectionString="[ProductionDatabase]" 
        xdt:Transform="Replace" xdt:Locator="Match(name)"/>
  </connectionStrings>
</configuration>

Nell'esempio, il valore dell'attributo LocatorMatch(name) specifica che solo l'elemento add che ha lo stesso nome (ApplicationServices) deve essere modificato. Il valore dell'attributo TransformReplace specifica che il processo di distribuzione deve sostituire l'elemento add intero.

Distribuzione di un database SQL Server

Quando si distribuisce un'applicazione Web che utilizza un database di SQL Server, potrebbe essere necessario propagare anche dati, strutture di dati o entrambi. Visual Studio è in grado di creare automaticamente script (file con estensione sql) per effettuare questa operazione nel database di destinazione e tali script possono essere inclusi nel pacchetto Web. È inoltre possibile includere script SQL Server personalizzati e specificarne l'ordine di esecuzione. Distribuzione Web esegue gli script nel server di destinazione quando il pacchetto viene installato.

Le opzioni di distribuzione di SQL Server vengono specificate nella scheda Pubblicazione/creazione pacchetto SQL della pagina Proprietà del progetto. Nell'illustrazione seguente viene mostrata la scheda Pubblicazione/creazione pacchetto SQL.

Scheda Pubblicazione/creazione pacchetto SQL, Proprietà progetto

Estensione della pipeline della pubblicazione sul Web

La pipeline della pubblicazione sul Web (WPP) è il processo che Visual Studio utilizza quando si crea un pacchetto di distribuzione o si utilizza la pubblicazione con un clic. I processi eseguiti in WPP vengono in realtà effettuati da MSBuild e Distribuzione Web. Questo è il motivo per cui la stessa funzionalità è disponibile sia in Visual Studio o mediante gli strumenti da riga di comando per la distribuzione.

Alcuni aspetti di WPP possono essere estesi modificando i file XML che controllano il comportamento di MSBuild. Ad esempio, le attività che è possibile gestire modificando i file XML includono le seguenti:

  • Esclusione dal pacchetto di file e cartelle specifici dell'applicazione Web.

  • Precompilazione dell'applicazione Web prima della creazione del pacchetto.

  • Installazione di assembly di applicazione nella GAC del server di destinazione.

  • Aggiornamento delle chiavi del Registro di sistema nel server di destinazione.

  • Installazione dei certificati SSL nel server di destinazione.

Le altre attività richiedono che si estenda sia MSBuild che Distribuzione Web. Ad esempio, supporre che l'applicazione Web utilizzi MSMQ e che si desideri automatizzare la distribuzione MSMQ. È possibile procedere creando un provider MSMQ per Distribuzione Web e aggiungendolo a WPP modificando i file che controllano MSBuild.

Distribuzione Web utilizza il modello di provider .NET Framework. Ogni tipo di informazione che deve essere gestito per la distribuzione viene gestito da un provider. Ad esempio, è presente un provider per le impostazioni di IIS, un provider per i database SQL Server, un provider per il contenuto Web quali file html e aspx e così via.

Quando Distribuzione Web crea un pacchetto, chiama ogni provider per raccogliere le informazioni relative all'applicazione Web che deve essere distribuita. Distribuzione Web richiama il provider per serializzare le informazioni e archiviarle nei file. Quando Distribuzione Web installa il pacchetto, il provider legge i file creati per il pacchetto e deserializza le informazioni come richiesto per ricreare le impostazioni originali nell'ambiente di destinazione. I Provider devono essere in grado di gestire i parametri della fase di installazione. Ossia, devono essere in grado di utilizzare i valori forniti in fase di installazione nell'Interfaccia utente di Gestione IIS o in un file Parameters.xml.

Nelle illustrazioni seguenti viene mostrato il flusso di dati tra le informazioni di un'applicazione Web, i provider Distribuzione Web, l'API Distribuzione Web, un pacchetto di distribuzione e un file dei parametri. Nell'illustrazione, Parameters.xml viene mostrato accanto al file zip del pacchetto per illustrarne il ruolo. Tuttavia, Parameters.xml è in realtà incluso nel file zip del pacchetto.

Computer di sviluppo

Provider di distribuzione Web nel computer di sviluppo

Server Web

Provider di distribuzione Web nel server di destinazione

Distribuzione Web fornisce provider per la maggior parte dei tipi di risorse che potrebbero essere associati a un'applicazione Web. Tuttavia, è possibile scrivere un provider personalizzato se nessuno dei provider incorporati è adatto per i requisiti. Per un elenco dei provider disponibili, vedere l'argomento relativo ai provider di distribuzione Web nel sito Web Microsoft TechNet.

Nell'illustrazione seguente viene mostrata una sequenza tipica di passaggi in WPP relativa all'utilizzo di Distribuzione Web per comprimere o pubblicare. Viene mostrata una WPP estesa con l'aggiunta dei passaggi seguenti:

  • Esclusione dei file specificati.

  • Precompilazione dell'applicazione Web.

  • Distribuzione di assembly GAC, di assembly COM e di chiavi del Registro di sistema.

  • Distribuzione di certificati.

Pipeline di pubblicazione del sito Web

Se si sceglie di effettuare la distribuzione tramite pubblicazione con un clic e tramite un metodo diverso da Distribuzione Web, è possibile estendere solo le parti di WPP che non si applicano a Distribuzione Web, come mostrato nell'illustrazione seguente:

Pipeline di pubblicazione del sito Web senza distribuzione Web

Per esempi che descrivono come estendere la pipeline della pubblicazione sul Web per gli scenari specifici, vedere le voci seguenti nel blog del team di Visual Web Developer:

Vedere anche

Concetti

Mappa del contenuto per la distribuzione di ASP.NET