Condividi tramite


Distribuzione di un database (C#)

di Scott Mitchell

La distribuzione di un'applicazione Web ASP.NET comporta l'acquisizione dei file e delle risorse necessari dall'ambiente di sviluppo all'ambiente di produzione. Per le applicazioni Web basate sui dati, questo include lo schema e i dati del database. Questa esercitazione è la prima di una serie che illustra i passaggi necessari per distribuire correttamente il database dall'ambiente di sviluppo all'ambiente di produzione.

Introduzione

La distribuzione di un'applicazione Web ASP.NET comporta l'acquisizione dei file e delle risorse necessari dall'ambiente di sviluppo all'ambiente di produzione. Nel corso delle ultime sei esercitazioni abbiamo esaminato la distribuzione di un'applicazione Web Book Reviews semplice. Questo sito demo è costituito da numerose risorse lato server , ASP.NET pagine, file di configurazione, un Web.sitemap file e così via, insieme alle risorse lato client, ad esempio immagini e file CSS. Ma quali sono le applicazioni Web basate sui dati? Quali passaggi aggiuntivi devono essere eseguiti per distribuire un'applicazione Web che usa un database?

Nelle esercitazioni successive verranno illustrati i passaggi necessari per distribuire un'applicazione Web basata sui dati. Questa esercitazione inizia esaminando come ottenere uno schema e il contenuto del database dall'ambiente di sviluppo all'ambiente di produzione, mentre l'esercitazione successiva esamina le modifiche di configurazione necessarie. In seguito verranno esaminate le sfide di distribuzione di un database che usa i servizi applicazioni (appartenenza, ruoli, profilo e così via).

Esame dell'applicazione Web Revisioni libro aggiornata

Per illustrare la distribuzione di un'applicazione Web basata sui dati, ho aggiornato l'applicazione Web Book Reviews da un sito Web semplice e statico a uno basato sui dati. Come in precedenza, sono disponibili due versioni dell'applicazione in questa esercitazione: una che usa il modello di progetto applicazione Web e una che usa il modello Di progetto sito Web.

L'applicazione Web Book Reviews aggiornata usa un database Express Edition SQL Server 2008, archiviato nella cartella del App_Data sito (~/App_Data/Reviews.mdf). Se nel computer è installato SQL Server 2008, la demo deve essere eseguita senza errori. Se si dispone di una versione precedente di SQL Server è possibile installare la versione gratuita SQL Server 2008 Express Edition oppure è possibile usare gli script di database disponibili in questa esercitazione per creare autonomamente il database.

Il Reviews.mdf database contiene quattro tabelle:

  • Genres - include un record per ogni genere, ad esempio Technology, Fiction e Business.
  • Books - include un record per ogni revisione, con colonne come Title, GenreId, ReviewDatee Review, tra gli altri.
  • Authors - include informazioni su ogni autore che ha contribuito a un libro recensito.
  • BooksAuthors - tabella di join molti-a-molti che specifica quali autori hanno scritto i libri.

La figura 1 mostra un diagramma ER di queste quattro tabelle.

Il database dell'applicazione Web Recensioni libro è costituito da quattro tabelle

Figura 1: Il database dell'applicazione Web Recensioni libro è costituito da quattro tabelle (fare clic per visualizzare l'immagine full-size)

La versione precedente del sito Web Recensioni libro aveva una pagina ASP.NET separata per ogni libro. Ad esempio, c'è stata una pagina denominata ~/Tech/TYASP35.aspx che contiene la revisione per Teach Yourself ASP.NET 3.5 in 24 Ore. Questa nuova versione basata sui dati del sito Web ha le recensioni archiviate nel database e una singola pagina ASP.NET, Review.aspx?ID=bookId, che visualizza la revisione per il libro specificato. Analogamente, esiste una pagina Genre.aspx?ID=genreId che elenca i libri esaminati nel genere specificato.

Le figure 2 e 3 mostrano le Genre.aspx pagine e Review.aspx in azione. Si noti l'URL nella barra degli indirizzi per ogni pagina. Nella figura 2 è Genre.aspx?ID=85d164ba-1123-4c47-82a0-c8ec75de7e0e. Poiché 85d164ba-1123-4c47-82a0-c8ec75de7e0e è il GenreId valore del genere Technology, l'intestazione della pagina legge "Recensioni tecnologiche" e l'elenco puntato enumera le recensioni nel sito che rientrano in questo genere.

Pagina Genere tecnologia

Figura 2: Pagina Genere tecnologia (fare clic per visualizzare l'immagine full-size)

La recensione per Insegnare a te stesso ASP.NET 3,5 in 24 ore

Figura 3: Revisione per insegnare a te stesso ASP.NET 3,5 in 24 ore (fare clic per visualizzare l'immagine a dimensioni complete)

L'applicazione Web Book Reviews include anche una sezione di amministrazione in cui gli amministratori possono aggiungere, modificare ed eliminare generi, recensioni e informazioni sull'autore. Attualmente, qualsiasi visitatore può accedere alla sezione amministrazione. In un'esercitazione futura si aggiungerà il supporto per gli account utente e verrà consentito solo agli utenti autorizzati nelle pagine di amministrazione.

Se si scarica l'applicazione Recensioni libro, tenere presente che lo scopo è di dimostrare la distribuzione di un'applicazione basata su dati. Non presenta procedure consigliate per quanto riguarda la progettazione dell'applicazione. Ad esempio, non esiste un livello di accesso ai dati separato (DAL); le pagine ASP.NET comunicano direttamente con il database tramite il controllo SqlDataSource o ADO.NET codice nelle classi code-behind. Per un'analisi più approfondita sulla creazione di applicazioni basate sui dati usando un'architettura a livelli, vedere le esercitazioni Sull'uso dei dati.

Database in fase di sviluppo e produzione

Quando si avvia lo sviluppo in un'applicazione Web basata sui dati, è necessario specificare un database stringa di connessione, che fornisce i dettagli dell'applicazione su come connettersi al database. Questa stringa di connessione specifica, tra le altre cose, il server di database, il nome del database e le informazioni di sicurezza. La maggior parte delle volte, il database usato dall'applicazione durante lo sviluppo è diverso dal database usato quando è in produzione. Esistono molti vantaggi dell'uso di database diversi per lo sviluppo rispetto alla produzione. Avere un database diverso nello sviluppo significa che non è necessario preoccuparsi di modificare accidentalmente o eliminare dati in tempo reale. Consente inoltre di inserire dati di test fittizi o apportare modifiche di rilievo al modello di dati senza dover preoccuparsi degli effetti sull'applicazione in produzione. Il lato negativo della presenza di un database diverso negli ambienti di sviluppo e produzione è che quando l'applicazione viene distribuita il database e le modifiche pertinenti allo schema o ai dati del database devono essere distribuite anche.

Prima della prima distribuzione, esiste solo un'istanza del database e tale istanza si trova nell'ambiente di sviluppo. Quando si distribuisce l'applicazione in produzione per la prima volta, non è necessario copiare solo i file sul lato server e sul lato client necessari, ma anche copiare il database dall'ambiente di sviluppo all'ambiente di produzione. Questo è il punto in cui ci si trova ora con l'applicazione Web Book Reviews : il database si trova nella App_Data cartella nell'ambiente di sviluppo, ma non è ancora stato eseguito il push nell'ambiente di produzione.

Dopo la distribuzione dell'applicazione sono presenti due copie del database. Man mano che l'applicazione matura, è possibile aggiungere nuove funzionalità, richiedere una modifica al modello di dati, ad esempio l'aggiunta di nuove colonne alle tabelle esistenti, l'aggiunta di nuove tabelle e così via. Quando l'applicazione Web viene distribuita successivamente, le modifiche applicate al database nell'ambiente di sviluppo poiché l'ultima distribuzione deve essere applicata al database di produzione. Alcune strategie per la gestione di questo processo vengono illustrate in un'esercitazione futura. Questa esercitazione è incentrata sulla distribuzione dell'intero database dall'ambiente di sviluppo all'ambiente di produzione.

Distribuzione del database nell'ambiente di produzione

Nella parte restante di questa esercitazione viene illustrato come distribuire il database dall'ambiente di sviluppo all'ambiente di produzione. Se si segue insieme è necessario assicurarsi che l'account con il provider host Web includa il supporto del database di Microsoft SQL Server. Sarà inoltre necessario disporre di alcune informazioni, ovvero il nome del server di database, il nome del database e il nome utente e la password usati per connettersi al database.

Come indicato in precedenza in questa esercitazione, il database del sito Web Book Reviews è un database express edition SQL Server 2008 archiviato nella App_Data cartella. Il motivo per cui la distribuzione di un database di questo tipo sarebbe semplice come copiare la App_Data cartella dall'ambiente di sviluppo all'ambiente di produzione. Tuttavia, la maggior parte dei provider host Web non supporta l'hosting App_Data di database nella cartella a causa di motivi di sicurezza. Gli host Web forniscono invece un account in un server di database SQL Server all'interno del proprio ambiente. La distribuzione del database dall'ambiente di sviluppo all'ambiente di produzione richiede la registrazione del database nel server di database dell'host Web.

Come si ottiene quindi il database dall'ambiente di sviluppo all'ambiente di produzione? Esistono alcuni modi per eseguire questa operazione a seconda dei servizi offerti dall'host Web. Con alcuni host, ad esempio DiscountASP.NET, è possibile eseguire il backup del database o il file effettivo .mdf nel sito Web e quindi, dal Pannello di controllo, ripristinare il file di backup o collegare il .mdf file al server di database SQL Server. Con tali strumenti che distribuiscono il database è semplice come copiare la App_Data cartella nell'ambiente di produzione e quindi collegarla tramite la Pannello di controllo. Questo è forse il modo più semplice e rapido per pubblicare il database per la prima volta.

Un altro approccio consiste nell'usare la Pubblicazione guidata database. La Pubblicazione guidata database è un'applicazione desktop di Windows che genererà i comandi SQL per creare lo schema del database: le tabelle, le stored procedure, le visualizzazioni, le funzioni definite dall'utente e così via e, facoltativamente, i dati nelle relative tabelle. È quindi possibile connettersi al server di database del provider host Web tramite SQL Server Management Studio e quindi eseguire questo script per duplicare il database in produzione. Anche meglio, se il provider host Web supporta Servizi di pubblicazione database Microsoft, è possibile che lo script generato dalla Pubblicazione guidata database venga eseguito automaticamente nel server di database per conto dell'utente. Poiché la Pubblicazione guidata database genera uno script che crea lo schema e i dati del database, funzionerà indipendentemente dal fatto che il provider host Web offre funzionalità come l'associazione di un file caricato .mdf .

Generazione dei comandi SQL per creare lo schema e i dati del database tramite la pubblicazione guidata del database

Per distribuire il database Recensioni libro nell'ambiente di produzione, seguire questa procedura guidata. Se si usa Visual Studio 2008 o versioni successive, la Pubblicazione guidata database è già installata.

Aprire Visual Studio e passare al Reviews.mdf database. Se si usa Visual Web Developer, passare a Esplora database; se si usa Visual Studio, usare Esplora server. La figura 4 mostra il Reviews.mdf database in Esplora database in Visual Web Developer. Come illustrato nella figura 4, il Reviews.mdf database è costituito da quattro tabelle, tre stored procedure e una funzione definita dall'utente.

Individuare il database in Esplora database o Esplora server

Figura 4: Individuare il database in Esplora database o Esplora server (fare clic per visualizzare l'immagine full-size)

Fare clic con il pulsante destro del mouse sul nome del database e scegliere l'opzione "Pubblica nel provider" dal menu di scelta rapida. In questo modo viene avviata la Pubblicazione guidata database (vedere la figura 5). Fare clic su Avanti per passare la schermata iniziale.

Screenshot della finestra Pubblicazione guidata database, che mostra la schermata iniziale e il pulsante Avanti per avanzare la procedura guidata.

Figura 5: Schermata iniziale pubblicazione guidata database (fare clic per visualizzare l'immagine full-size)

La seconda schermata della procedura guidata elenca i database accessibili alla Pubblicazione guidata database e consente di scegliere se creare lo script di tutti gli oggetti nel database selezionato o selezionare gli oggetti da creare nello script. Selezionare il database appropriato e lasciare selezionata l'opzione "Script all objects in the selected database" (Crea script per tutti gli oggetti nel database selezionato).

Nota

Se viene visualizzato l'errore "There are no objects in database databaseName of the types scriptable by this wizard" when click Next (Avanti) nella schermata illustrata nella figura 6, assicurarsi che il percorso del file di database non sia troppo lungo. È stato rilevato che questo errore può verificarsi se il percorso del file di database è troppo lungo.

Screenshot della finestra Pubblicazione guidata database, che mostra un database evidenziato nell'elenco di database e una casella di controllo Script tutti gli oggetti compilati.

Figura 6: Schermata iniziale della Pubblicazione guidata database (fare clic per visualizzare l'immagine a dimensione intera)

Dalla schermata successiva è possibile generare un file di script o, se l'host Web lo supporta, pubblicare il database direttamente nel server di database del provider host Web. Come illustrato nella figura 7, lo script viene scritto nel file C:\REVIEWS.MDF.sql.

Creare lo script del database in un file o pubblicarlo direttamente nel provider host Web

Figura 7: Creare lo script del database in un file o pubblicarlo direttamente nel provider host Web (fare clic per visualizzare l'immagine a dimensione intera)

La schermata successiva richiede un'ampia gamma di opzioni di scripting. È possibile specificare se lo script deve includere istruzioni drop per rimuovere questi oggetti esistenti. L'impostazione predefinita è True, che viene eseguita correttamente durante la distribuzione di un database per la prima volta. È anche possibile specificare se il database di destinazione è SQL Server 2000, SQL Server 2005 o SQL Server 2008. Infine, è possibile indicare se creare lo script dello schema e dei dati, solo i dati o solo lo schema. Lo schema è la raccolta di oggetti di database, tabelle, stored procedure, viste e così via. I dati sono le informazioni che risiedono nelle tabelle.

Come illustrato nella figura 8, è stata configurata la procedura guidata per eliminare gli oggetti di database esistenti, per generare script per un database SQL Server 2008 e per pubblicare sia lo schema che i dati.

Specificare le opzioni di pubblicazione

Figura 8: Specificare le opzioni di pubblicazione (fare clic per visualizzare l'immagine a dimensione intera)

Le due schermate finali riepilogano le azioni che stanno per essere eseguite e quindi visualizzano lo stato dello scripting. Il risultato netto dell'esecuzione della procedura guidata è che è disponibile un file di script che contiene i comandi SQL necessari per creare il database nell'ambiente di produzione e popolarlo con gli stessi dati dello sviluppo.

Esecuzione dei comandi SQL nel database dell'ambiente di produzione

Ora che è disponibile lo script che contiene i comandi SQL per creare il database e i relativi dati, tutto ciò che rimane consiste nell'eseguire lo script nel database di produzione. Alcuni provider di host Web offrono una casella di testo nella relativa Pannello di controllo in cui è possibile immettere i comandi SQL da eseguire nel database. Se si dispone di un file di script di dimensioni molto grandi, questa opzione potrebbe non funzionare (il REVIEWS.MDF.sql file di script è di dimensioni superiori a 425 KB, ad esempio).

Un approccio migliore consiste nel connettersi direttamente al server di database di produzione usando SQL Server Management Studio (SSMS). Se nel computer è installata una versione non Express Edition di SQL Server, è probabile che sia già installato SSMS. In caso contrario, è possibile scaricare e installare una copia gratuita di SQL Server Management Studio Express Edition.

Avviare SSMS e connettersi al server di database dell'host Web usando le informazioni fornite dal provider host Web.

Screenshot della finestra di dialogo Connetti al server, che mostra le informazioni sul server dati dell'host Web nei campi di testo.

Figura 9: Connettersi al server di database del provider host Web (fare clic per visualizzare l'immagine a dimensione intera)

Espandere la scheda Database e individuare il database. Fare clic sul pulsante Nuova query nell'angolo superiore sinistro della barra degli strumenti, incollare i comandi SQL del file di script creato dalla Pubblicazione guidata database e fare clic sul pulsante Esegui per eseguire questi comandi nel server di database di produzione. Se il file di script è particolarmente grande, l'esecuzione dei comandi può richiedere alcuni minuti.

Screenshot della finestra microsoft SQL Server Management Studio, che mostra i comandi del file di script vengono eseguiti nel server di produzione.

Figura 10: Connettersi al server di database del provider host Web (fare clic per visualizzare l'immagine a dimensione intera)

Questo è tutto lì! A questo punto il database di sviluppo è stato duplicato nell'ambiente di produzione. Se si aggiorna il database in SSMS, verranno visualizzati i nuovi oggetti di database. La figura 11 mostra le tabelle, le stored procedure e le funzioni definite dall'utente del database di produzione, che rispecchiano quelle nel database di sviluppo. Poiché è stata specificata la Pubblicazione guidata database per pubblicare i dati, le tabelle del database di produzione hanno gli stessi dati delle tabelle del database di sviluppo al momento dell'esecuzione della procedura guidata. La figura 12 mostra i dati nella Books tabella nel database di produzione.

Gli oggetti di database sono stati duplicati nel database di produzione

Figura 11: Gli oggetti di database sono stati duplicati nel database di produzione (fare clic per visualizzare l'immagine a dimensione intera)

Il database di produzione contiene gli stessi dati del database di sviluppo

Figura 12: Il database di produzione contiene gli stessi dati del database di sviluppo (fare clic per visualizzare l'immagine a dimensione intera)

A questo punto è stato distribuito solo il database di sviluppo nell'ambiente di produzione. Non è stata ancora esaminata la distribuzione dell'applicazione Web stessa o sono state esaminate le modifiche alla configurazione necessarie per fare in modo che l'applicazione nell'ambiente di produzione usi il database di produzione. Questi problemi verranno illustrati nell'esercitazione successiva.

Riepilogo

La distribuzione di un'applicazione Web guidata dai dati richiede la copia del database usato durante lo sviluppo nell'ambiente di produzione. Molti provider di host Web offrono strumenti per semplificare il processo di distribuzione di un database. Ad esempio, con DiscountASP.NET è possibile eseguire il ftp del file di database .mdf (o un backup) e quindi collegare il database al server di database dal Pannello di controllo. Un'altra opzione che funziona indipendentemente dalle funzionalità offerte dal provider host Web è lo strumento Pubblicazione guidata database di Microsoft, che genera uno script di comandi SQL per creare lo schema e i dati del database di sviluppo. Dopo aver generato questo script, è possibile eseguirlo nel database di produzione.

Ora che il database dell'applicazione Web Book Reviews è in produzione, è possibile distribuire l'applicazione. Tuttavia, le informazioni di configurazione dell'applicazione Web specificano il stringa di connessione al database e che stringa di connessione fa riferimento al database di sviluppo. È necessario aggiornare queste informazioni stringa di connessione durante la distribuzione del sito nell'ambiente di produzione. L'esercitazione successiva esamina queste differenze di configurazione e illustra i passaggi necessari per pubblicare il sito di recensioni dei libri guidate dai dati nell'ambiente di produzione.

Buon programmatori!

Altre informazioni

Per altre informazioni sugli argomenti descritti in questa esercitazione, vedere la risorsa seguente: