Déploiement d’une base de données (C#)
par Scott Mitchell
Le déploiement d’une application web ASP.NET implique d’obtenir les fichiers et les ressources nécessaires de l’environnement de développement à l’environnement de production. Pour les applications web pilotées par les données, cela inclut le schéma de base de données et les données. Ce tutoriel est le premier d’une série qui explore les étapes nécessaires pour déployer correctement la base de données de l’environnement de développement vers la production.
Introduction
Le déploiement d’une application web ASP.NET implique d’obtenir les fichiers et les ressources nécessaires de l’environnement de développement à l’environnement de production. Au cours des six derniers tutoriels, nous avons examiné le déploiement d’une simple application web Book Reviews. Ce site de démonstration comprenait un certain nombre de ressources côté serveur (ASP.NET pages, fichiers de configuration, un Web.sitemap
fichier, etc.) ainsi que des ressources côté client, telles que des images et des fichiers CSS. Mais qu’en est-il des applications web pilotées par les données ? Quelles étapes supplémentaires doivent être effectuées pour déployer une application web qui utilise une base de données ?
Au cours des prochains tutoriels, nous aborderons les étapes nécessaires pour déployer une application web pilotée par les données. Ce tutoriel commence par examiner comment obtenir le schéma et le contenu d’une base de données de l’environnement de développement vers l’environnement de production, tandis que le tutoriel suivant examine les modifications de configuration nécessaires. Nous allons ensuite explorer les défis liés au déploiement d’une base de données qui utilise les services d’application (appartenance, rôles, profil, etc.).
Examen de l’application Web Révisions de livres mis à jour
Pour illustrer le déploiement d’une application web pilotée par les données, j’ai mis à jour l’application web Book Reviews d’un site web statique simple à un site web piloté par les données. Comme précédemment, il existe deux versions de l’application dans le téléchargement de ce tutoriel : une qui utilise le modèle projet d’application web et une autre qui utilise le modèle projet de site web.
L’application web Book Reviews mise à jour utilise une base de données Express Edition 2008 SQL Server, qui est stockée dans le dossier du App_Data
site (~/App_Data/Reviews.mdf
). Si vous avez installé SQL Server 2008 sur votre ordinateur, la démonstration doit s’exécuter sans erreur. Si vous disposez d’une version antérieure de SQL Server vous pouvez installer le SQL Server 2008 Express Edition gratuit ou utiliser les scripts de base de données disponibles dans ce téléchargement de tutoriel pour créer la base de données vous-même.
La Reviews.mdf
base de données contient quatre tables :
Genres
- inclut un enregistrement pour chaque genre, tel que Technologie, Fiction et Business.Books
- inclut un enregistrement pour chaque révision, avec des colonnes telles queTitle
,GenreId
,ReviewDate
etReview
, entre autres.Authors
- inclut des informations sur chaque auteur qui a contribué à un livre révisé.BooksAuthors
- une table de jointure plusieurs à plusieurs qui spécifie les auteurs qui ont écrit les livres.
La figure 1 montre un diagramme ER de ces quatre tables.
Figure 1 : La base de données de l’application Web Book Reviews est composée de quatre tables (cliquez pour afficher l’image en taille réelle)
La version précédente du site web Book Reviews avait une page ASP.NET distincte pour chaque livre. Par exemple, il y avait une page nommée ~/Tech/TYASP35.aspx
qui contenait la révision pour Enseigner vous-même ASP.NET 3,5 en 24 heures. Cette nouvelle version pilotée par les données du site web contient les révisions stockées dans la base de données et une page ASP.NET unique, Review.aspx ?ID=bookId, qui affiche la révision du livre spécifié. De même, il existe une page Genre.aspx ?ID=genreId qui répertorie les livres examinés dans le genre spécifié.
Les figures 2 et 3 montrent les Genre.aspx
pages et Review.aspx
en action. Notez l’URL dans la barre d’adresse de chaque page. Dans la figure 2, il est Genre.aspx ?ID=85d164ba-1123-4c47-82a0-c8ec75de7e0e. Étant donné que 85d164ba-1123-4c47-82a0-c8ec75de7e0e est la GenreId
valeur pour le genre Technologie, l’en-tête de la page se lit « Technology Reviews » et la liste à puces énumère les avis sur le site qui appartiennent à ce genre.
Figure 2 : Page Genre de la technologie (cliquer pour afficher l’image en taille réelle)
Figure 3 : L’examen pour Enseigner vous-même ASP.NET 3,5 en 24 heures (cliquer pour afficher l’image en taille réelle)
L’application web Book Reviews comprend également une section d’administration où les administrateurs peuvent ajouter, modifier et supprimer des genres, des révisions et des informations sur l’auteur. Actuellement, n’importe quel visiteur peut accéder à la section administration. Dans un prochain tutoriel, nous allons ajouter la prise en charge des comptes d’utilisateur et autoriser uniquement les utilisateurs autorisés dans les pages d’administration.
Si vous téléchargez l’application Book Reviews, gardez à l’esprit que son objectif est de démontrer le déploiement d’une application pilotée par les données. Il ne présente pas les meilleures pratiques en matière de conception d’application. Par exemple, il n’existe pas de couche d’accès aux données (DAL) distincte ; les pages ASP.NET communiquent directement avec la base de données via le contrôle SqlDataSource ou ADO.NET code dans leurs classes code-behind. Pour un aperçu plus détaillé de la création d’applications pilotées par les données à l’aide d’une architecture hiérarchisée, consultez mes didacticiels Utilisation des données.
Bases de données sur le développement et la production
Lorsque vous démarrez le développement sur une application web pilotée par les données, vous devez spécifier une chaîne de connexion de base de données, qui fournit les détails de l’application sur la façon de se connecter à la base de données. Cette chaîne de connexion spécifie, entre autres, le serveur de base de données, le nom de la base de données et les informations de sécurité. Le plus souvent, la base de données utilisée par l’application pendant le développement est différente de la base de données utilisée lorsqu’elle est en production. L’utilisation de bases de données différentes pour le développement et la production présente de nombreux avantages. Avoir une autre base de données en cours de développement signifie que vous n’avez pas à vous soucier de modifier ou de supprimer accidentellement des données actives. Il vous permet également d’insérer des données de test factices ou d’apporter des modifications cassants au modèle de données sans avoir à vous soucier des effets sur l’application en production. L’inconvénient d’avoir une base de données différente dans les environnements de développement et de production est que lorsque l’application est déployée, la base de données et les modifications pertinentes apportées au schéma ou aux données de la base de données doivent également être déployées.
Avant le premier déploiement, il n’existe qu’une seule instance de la base de données, et cette instance se trouve dans l’environnement de développement. Lors du déploiement de l’application en production pour la première fois, nous devons non seulement copier les fichiers côté serveur et côté client nécessaires, mais également copier la base de données de l’environnement de développement vers l’environnement de production. C’est là que nous en sommes à l’heure actuelle avec l’application web Book Reviews : la base de données réside dans le App_Data
dossier de notre environnement de développement, mais n’a pas encore été poussée vers l’environnement de production.
Une fois l’application déployée, il existe deux copies de la base de données. À mesure que l’application mûrit, de nouvelles fonctionnalités peuvent être ajoutées, ce qui nécessite une modification du modèle de données (par exemple, l’ajout de nouvelles colonnes à des tables existantes, l’apport de modifications à des colonnes existantes, l’ajout de nouvelles tables, etc.). Lors du prochain déploiement de l’application web, les modifications appliquées à la base de données dans l’environnement de développement depuis le dernier déploiement doivent être appliquées à la base de données de production. Certaines stratégies de gestion de ce processus sont abordées dans un prochain tutoriel. Ce didacticiel se concentre sur le déploiement de l’ensemble de la base de données de l’environnement de développement vers la production.
Déploiement de la base de données dans l’environnement de production
Le reste de ce tutoriel montre comment déployer la base de données de l’environnement de développement vers l’environnement de production. Si vous suivez, vous devez vous assurer que votre compte auprès de votre fournisseur d’hôte web inclut la prise en charge de la base de données Microsoft SQL Server. Vous devez également disposer d’informations, notamment le nom du serveur de base de données, le nom de la base de données et le nom d’utilisateur et le mot de passe utilisés pour vous connecter à la base de données.
Comme indiqué précédemment dans ce tutoriel, la base de données du site web Book Reviews est une base de données Express Edition SQL Server 2008 stockée dans le App_Data
dossier. Il semblerait que le déploiement d’une telle base de données soit aussi simple que la copie du App_Data
dossier de l’environnement de développement vers l’environnement de production. Toutefois, la plupart des fournisseurs d’hôtes web ne prennent pas en charge l’hébergement de bases de données dans le App_Data
dossier pour des raisons de sécurité. Au lieu de cela, les hôtes web fournissent un compte sur un serveur de base de données SQL Server au sein de leur environnement. Le déploiement de la base de données de votre environnement de développement vers l’environnement de production nécessite l’inscription de votre base de données sur le serveur de base de données de votre hôte web.
Comment obtenir votre base de données de l’environnement de développement vers l’environnement de production ? Il existe deux façons d’y parvenir en fonction des services offerts par votre hôte web. Avec certains hôtes, tels que DiscountASP.NET, vous pouvez ftp une sauvegarde de la base de données ou du fichier réel .mdf
sur votre site web, puis, à partir du Panneau de configuration, restaurer le fichier de sauvegarde ou attacher le .mdf
fichier au serveur de base de données SQL Server. Avec ces outils, le déploiement de la base de données est aussi simple que de copier le App_Data
dossier dans l’environnement de production, puis de l’attacher via le Panneau de configuration. Il s’agit peut-être du moyen le plus simple et le plus rapide de publier votre base de données pour la première fois.
Une autre approche consiste à utiliser l’Assistant Publication de base de données. L’Assistant Publication de base de données est une application de bureau Windows qui génère les commandes SQL pour créer le schéma de votre base de données (tables, procédures stockées, vues, fonctions définies par l’utilisateur, etc.) et, éventuellement, les données de ses tables. Vous pouvez ensuite vous connecter au serveur de base de données de votre fournisseur d’hôte web via SQL Server Management Studio, puis exécuter ce script pour dupliquer la base de données en production. Mieux encore, si votre fournisseur d’hôte web prend en charge les services de publication de base de données Microsoft, vous pouvez avoir le script généré par l’Assistant Publication de base de données automatiquement exécuté sur le serveur de base de données en votre nom. Étant donné que l’Assistant Publication de base de données génère un script qui crée le schéma et les données de la base de données, il fonctionne que votre fournisseur d’hôte web offre ou non des fonctionnalités telles que l’attachement d’un fichier chargé .mdf
.
Génération des commandes SQL pour créer le schéma et les données de base de données à l’aide de l’Assistant Publication de base de données
Passons à l’aide de l’Assistant Publication de base de données pour déployer la base de données Book Reviews en production. Si vous utilisez Visual Studio 2008 ou une version ultérieure, l’Assistant Publication de base de données est déjà installé.
Ouvrez Visual Studio et accédez à la Reviews.mdf
base de données. Si vous utilisez Visual Web Developer, accédez à l’Explorer de base de données ; si vous utilisez Visual Studio, utilisez le Explorer server. La figure 4 montre la Reviews.mdf
base de données dans le Explorer de base de données dans Visual Web Developer. Comme le montre la figure 4, la Reviews.mdf
base de données est composée de quatre tables, de trois procédures stockées et d’une fonction définie par l’utilisateur.
Figure 4 : Localiser la base de données dans le Explorer de base de données ou le serveur Explorer (cliquer pour afficher l’image en taille réelle)
Cliquez avec le bouton droit sur le nom de la base de données et choisissez l’option « Publier sur le fournisseur » dans le menu contextuel. Cela lance l’Assistant Publication de base de données (voir figure 5). Cliquez sur Suivant pour passer au-delà de l’écran de démarrage.
Figure 5 : Écran de démarrage de l’Assistant Publication de base de données (cliquer pour afficher l’image en taille réelle)
Le deuxième écran de l’Assistant répertorie les bases de données accessibles à l’Assistant Publication de bases de données et vous permet de choisir entre scripter tous les objets de la base de données sélectionnée ou choisir les objets à scripter. Sélectionnez la base de données appropriée et laissez l’option « Script tous les objets de la base de données sélectionnée » activée.
Notes
Si vous recevez l’erreur « Il n’y a pas d’objets dans la base de donnéesName des types pouvant être scriptables par cet Assistant » lorsque vous cliquez sur Suivant dans l’écran illustré dans la figure 6, assurez-vous que le chemin d’accès à votre fichier de base de données n’est pas trop long. Il a été découvert que cette erreur peut se produire si le chemin d’accès au fichier de base de données est trop long.
Figure 6 : Écran de démarrage de l’Assistant Publication de base de données (cliquer pour afficher l’image en taille réelle)
À partir de l’écran suivant, vous pouvez générer un fichier de script ou, si votre hôte web le prend en charge, publier la base de données directement sur le serveur de base de données de votre fournisseur d’hôte web. Comme le montre la figure 7, j’ai écrit le script dans le fichier C:\REVIEWS.MDF.sql
.
Figure 7 : Script de la base de données dans un fichier ou publication directement sur votre fournisseur d’hôte web (cliquez pour afficher l’image en taille réelle)
L’écran suivant vous invite à entrer diverses options de script. Vous pouvez spécifier si le script doit inclure des instructions drop pour supprimer ces objets existants. Cette valeur par défaut est True, ce qui est correct lors du déploiement d’une base de données pour la première fois. Vous pouvez également spécifier si la base de données cible est SQL Server 2000, SQL Server 2005 ou SQL Server 2008. Enfin, vous pouvez indiquer s’il faut scripter le schéma et les données, uniquement les données ou simplement le schéma. Le schéma est la collection d’objets de base de données, les tables, les procédures stockées, les vues, etc. Les données sont les informations résidant dans les tables.
Comme l’illustre la figure 8, j’ai configuré l’Assistant pour supprimer des objets de base de données existants, générer un script pour une base de données SQL Server 2008 et publier le schéma et les données.
Figure 8 : Spécifier les options de publication (cliquer pour afficher l’image en taille réelle)
Les deux derniers écrans résument les actions qui sont sur le point d’être effectuées, puis affichent les status du script. Le résultat net de l’exécution de l’Assistant est que nous disposons d’un fichier de script qui contient les commandes SQL nécessaires pour créer la base de données en production et la remplir avec les mêmes données que pour le développement.
Exécution des commandes SQL sur la base de données de l’environnement de production
Maintenant que nous avons le script qui contient les commandes SQL pour créer la base de données et ses données, il ne reste plus qu’à exécuter le script sur la base de données de production. Certains fournisseurs d’hôtes web proposent une zone de texte dans leur Panneau de configuration où vous pouvez entrer des commandes SQL à exécuter sur votre base de données. Si vous avez un fichier de script très volumineux, cette option risque de ne pas fonctionner (la taille du REVIEWS.MDF.sql
fichier de script est supérieure à 425 Ko, pour instance).
Une meilleure approche consiste à se connecter directement au serveur de base de données de production à l’aide de SQL Server Management Studio (SSMS). Si vous avez installé une édition autre qu’Express de SQL Server sur votre ordinateur, vous avez probablement déjà installé SSMS. Sinon, vous pouvez télécharger et installer une copie gratuite de SQL Server Management Studio Express Edition.
Lancez SSMS et connectez-vous au serveur de base de données de votre hôte web à l’aide des informations fournies par votre fournisseur d’hôte web.
Figure 9 : Se connecter au serveur de base de données de votre fournisseur d’hôte web (cliquer pour afficher l’image en taille réelle)
Développez l’onglet Bases de données et recherchez votre base de données. Cliquez sur le bouton Nouvelle requête dans le coin supérieur gauche de la barre d’outils, collez les commandes SQL à partir du fichier de script créé par l’Assistant Publication de base de données, puis cliquez sur le bouton Exécuter pour exécuter ces commandes sur le serveur de base de données de production. Si votre fichier de script est particulièrement volumineux, l’exécution des commandes peut prendre plusieurs minutes.
Figure 10 : Se connecter au serveur de base de données de votre fournisseur d’hôte web (cliquez pour afficher l’image en taille réelle)
C’est tout ce qu’il y a à ça ! À ce stade, la base de données de développement a été dupliquée en production. Si vous actualisez la base de données dans SSMS, vous devriez voir les nouveaux objets de base de données. La figure 11 montre les tables de la base de données de production, les procédures stockées et les fonctions définies par l’utilisateur, qui miroir celles de la base de données de développement. Comme nous avons demandé à l’Assistant Publication de base de données de publier les données, les tables s de base de données de production ont les mêmes données que les tables de base de données de développement au moment de l’exécution de l’Assistant. La figure 12 montre les données de la Books
table sur la base de données de production.
Figure 11 : Les objets de base de données ont été dupliqués sur la base de données de production (cliquer pour afficher l’image en taille réelle)
Figure 12 : La base de données de production contient les mêmes données que sur la base de données de développement (cliquez pour afficher l’image en taille réelle)
À ce stade, nous avons déployé uniquement la base de données de développement en production. Nous n’avons pas encore examiné le déploiement de l’application web elle-même ni examiné les modifications de configuration nécessaires pour que l’application en production utilise la base de données de production. Nous aborderons ces problèmes dans le tutoriel suivant !
Résumé
Le déploiement d’une application web pilotée par les données nécessite la copie de la base de données utilisée pendant le développement dans l’environnement de production. De nombreux fournisseurs d’hôtes web offrent des outils pour simplifier le processus de déploiement d’une base de données. Par exemple, avec DiscountASP.NET vous pouvez FTP votre fichier de base de données .mdf
(ou une sauvegarde), puis attacher la base de données au serveur de base de données à partir du Panneau de configuration. Une autre option qui fonctionne quelles que soient les fonctionnalités proposées par votre fournisseur d’hôte web est l’outil Assistant Publication de bases de données Microsoft, qui génère un script de commandes SQL pour créer le schéma et les données de la base de données de développement. Une fois ce script généré, vous pouvez l’exécuter sur la base de données de production.
Maintenant que la base de données de l’application web Book Reviews est en production, nous pouvons déployer l’application. Toutefois, les informations de configuration de l’application web spécifient le chaîne de connexion à la base de données et que chaîne de connexion référence à la base de données de développement. Nous devons mettre à jour ces informations chaîne de connexion lors du déploiement du site en production. Le tutoriel suivant examine ces différences de configuration et décrit les étapes nécessaires pour publier le site de révisions de livres piloté par les données en production.
Bonne programmation !
En savoir plus
Pour plus d’informations sur les sujets abordés dans ce tutoriel, reportez-vous à la ressource suivante :