Instructions d’installation et conception de la base de données
Cette annexe fournit les instructions nécessaires à l’installation des bases de données et des exemples d’applications. Ces instructions sont aussi claires que possible mais supposent tout de même que vous ayez des connaissances minimales en matière de bases de données ou de conception de composants.
Les extraits de codes que vous pouvez télécharger sur le site français (
http://www.wroxfrance.com) sont répartis dans douze répertoires principaux, selon le chapitre du livre auquel ils se rapportent ou la fonction qu’ils assurent :Nous allons commencer par présenter rapidement l’installation (en général les développeurs n’aiment pas perdre de temps avec ce genre d’instructions...). Nous examinerons ensuite, répertoire par répertoire, les problèmes d’installation correspondant aux différents extraits de code. De cette façon, vous pourrez vous faire une idée claire du contenu des répertoires. Nous terminerons par la description des tables de la base de données.
Installation
Afin de préserver la flexibilité, nous ne fournissons pas une routine d’installation complète (non, ce n’est pas parce que nous sommes paresseux !). C’est l’une des idées centrales de l’architecture DNA que d’offrir une approche souple à l’installation des différents composants, des files de messages et des bases de données. Nous avons donc préféré ne fournir que quelques instructions et quelques routines isolées qui vous permettent de choisir vous-même où les différents éléments doivent être placés.
Installation rapide
Pour ceux d’entre vous qui sont vraiment trop impatients, voici comment procéder :
Pour créer les bases de données
Ouvrez une
Invite de commandes sur le serveur qui hébergera les bases de données et lancez les commandes suivantes :HeadOfficeBuild.bat
ShowroomBuild.bat
N.B : On suppose ici que dans SQL Server l’utilisateur
sa ne nécessite aucun mot de passe. Si ce n’est pas le cas ou si vous préférez passer par un autre utilisateur qui possède un mot de passe (et qui possède le privilège nécessaire pour créer une base de données), il faut modifier les fichiers .bat. Le flag -U permet de spécifier le nom d’utilisateur SQL Server et -P permet de spécifier le mot de passe. Par exemple :isql -Unom_utilisateur -Pmotdepasse -i HODatabase.sql
Pour créer les chaînes de connexion à la source de données
Lancez l’exécutable
Setup.exe qui se trouve dans le répertoire Setup. Ce programme vous permet de spécifier les noms de serveurs, les ID d’utilisateurs et les mots de passe à utiliser pour se connecter aux bases de données.Il n’y a a priori pas de raison pour modifier
Data Store Driver ou Database, mais vous devrez certainement entrer le nom de votre serveur SQL dans Database Server et éventuellement un autre ID d’utilisateur et un mot de passe.Cliquez sur le bouton
Save pour stocker les informations dans le Registre, où les composants pourront les lire. Ce faisant vous créerez aussi un fichier d’inclusion pour les composants ASP dans les différents répertoires que voici :Le fichier d’inclusion (
DataStore.inc) contient les chaînes de connexion nécessaires à ADO.Pour utiliser MTS
Le répertoire
Packages contient des lots MTS préconstruits que nous avons exportés à partir de notre serveur. Voici la marche à suivre pour installer ces lots sur votre système :Vous pouvez installer tous les lots quelle que soit la version de l’application que vous utiliserez. Les noms des composants utilisant MSMQ sont différents afin qu’il n’y ait pas conflit. Voici le contenu détaillé des différents lots :
Lot |
Composant |
Description |
Wrox Car Co |
WCCHOOrder.dll |
Commande fabricant |
|
WCCOrder.dll |
Commande combinée |
|
WCCSROrder.dll |
Commande concessionnaire |
Wrox Car Co Common |
WCCCars.dll |
Routines générales pour les modèles de voitures |
|
WCCFinance.dll |
Calculs financiers |
Wrox Car Co Queued |
WCCHOOrderQ.dll |
Commande fabricant avec MSMQ |
|
WCCOrderProcessQ.dll |
Traitement des commandes fabricant |
|
WCCOrderQ.dll |
Commande combinée avec MSMQ |
|
WCCSROrderQ.dll |
Commande concessionnaire avec MSMQ |
Version Visual Basic de l’application sans MSMQ
Pour exécuter la version Visual Basic de l’application, placez-vous dans le répertoire
Chapter 4\Application\Visual Basic et lancez l’exécutable Showroom.exe.Version ASP de l’application sans MSMQ
Pour exécuter la version ASP de l’application, installez une racine virtuelle qui pointe vers
Chapter 4\Application\Web, puis ouvrez la page WCCNewOrder.asp de cette racine dans Internet Explorer.Pour utiliser MSMQ
La version de l’application utilisant la messagerie applicative nécessite deux composants qui ne sont pas gérés par MTS :
StringBag.dll et WCCOrderMonitorQ.dll. Il faut les inscrire vous-même dans le Registre. Nous avons prévu quatre fichiers BAT qui permettent de le faire:Les fichiers BAT appellent
Si vous implémentez la version de l’application MSMQ sur deux machines différentes, il faut inscrire le composant String Bag dans le Registre des deux machines. En revanche, le composant de surveillance ne doit être inscrit que dans le Registre de la machine correspondant au concessionnaire (Showroom).
Les files de messages
Pour créer les files de messages, il faut passer par MSMQ Explorer. Si vous utilisez deux machines distinctes, placez
NewOrders sur la machine correspondant au fabricant (Head Office), puis placez OrderAcknowledgement et OrderResponse sur la machine correspondant au concessionnaire (Showroom). Avec une seule machine, vous pouvez tout simplement placer les trois files de messages sur la même machine. En principe la file de messages FinanceQueue correspondant au chapitre 5 peut être placée sur n’importe quelle machine. Mais notre exemple est censé exécuter un fichier ASP qui crée le composant Finance : il faudrait donc que la file de messages soit sur la même machine.Version Visual Basic de l’application avec MSMQ
Pour exécuter la version Visual Basic de l’application, placez-vous dans le répertoire
Chapter 6\Showroom\Application\Visual Basic et lancez l’exécutable Showroom.exe.Version ASP de l’application avec MSMQ
Pour exécuter la version ASP de l’application, installez une racine virtuelle qui pointe vers
Chapter 6\Showroom\Application\Web, puis ouvrez la page WCCNewOrderQ.asp de cette racine dans Internet Explorer.Pour l’application de surveillance des commandes, ouvrez la page
WCCOrderMonitor.htm qui se trouve dans le même répertoire.Pour l’application qui traite les commandes chez le fabricant, placez-vous dans le répertoire
Chapter 6\HeadOffice\Application et lancez l’exécutable HeadOffice.exe.Scripts
Notre application utilise deux bases de données,
WroxCarCo et WroxCarCoHeadOffice. Nous les avons construites sur deux machines différentes mais vous pouvez les placer sur une seule machine. Lorsque l’application utilise MSMQ, il est encore possible de placer les deux bases de données sur le même serveur SQL Server, mais pour voir un traitement d’incident de file de messages il faut deux machines.Nous fournissons un ensemble de scripts qui permettent de construire automatiquement les bases de données. Pour chaque base de données il existe des scripts distincts, de manière que vous puissiez au besoin placer les deux bases sur deux machines distinctes.
Nom du script |
Fonction |
HeadOfficeBuild.bat |
C’est le script maître qui permet de construire la base de données du fabricant. |
HODatabase.sql |
Script SQL créant la base de données du fabricant et ses unités. |
HOTablesProcedures.sql |
Script SQL créant les procédures stockées et les tables de la base de données du fabricant. |
HODataInsert.sql |
Script SQL insérant les données dans la base de données du fabricant. |
ShowroomBuild.bat |
C’est le script maître qui permet de construire la base de données du concessionnaire. |
SRDatabase.sql |
Script SQL créant la base de données du concessionnaire et ses unités. |
SRTablesProcedures.sql |
Script SQL créant les procédures stockées et les tables de la base de données du concessionnaire. |
SRDataInsert.sql |
Script SQL insérant les données dans la base de données du concessionnaire. |
Il existe deux manières de créer une base de données. La première, la plus simple, consiste à utiliser le fichier BAT fourni, lequel lance successivement les trois scripts SQL correspondants :
isql -Usa -P -i HODatabase.sql
isql -Usa -P -i HOTablesProcedures.sql
isql -Usa -P -i HODataInsert.sql
Remarquez bien que cela suppose que l’utilisateur ait
sa et que le mot de passe soit en blanc. Si, sur votre serveur, le compte d’utilisateur sa utilise un mot de passe, il faut utiliser l’argument -P, par exemple (en supposant que le mot de passe soit sesame) :isql -Usa -Psesame -i HODatabase.sql
isql -Usa -Psesame -i HOTablesProcedures.sql
isql -Usa -Psesame -i HODataInsert.sql
Si vous voulez, vous pouvez également utiliser un autre compte que
sa. Mais il faut que ce compte possède les permissions pour créer des bases de données. En cas de doute, demandez à votre administrateur système.Mais vous pouvez aussi créer les bases de données en lançant vous-même les scripts SQL à partir d’une fenêtre de requête (par exemple dans Enterprise Manager ou ISQL_w). Vous devez respecter l’ordre d’exécution ci-dessus. Le premier script crée la base de données avec une unité de base de données de 10 Mo (Data, pour les données) et une autre de 3 Mo (Log, pour le journal). Le deuxième script crée les tables et les procédures stockées. Enfin le troisième script insère les données.
Tous les scripts sont en SQL standard. Nous avons créé les deux premiers avec SQL Server (menu
Objet/Générer des scripts SQL). Les objets de la base nécessitent de définir peu de restrictions ou de permissions. Nous avons donné la permission d’accès au groupe global public, mais vous pouvez changer cela si vous le souhaitez.Répertoire Chapter02
Dans ce chapitre on inscrit dans le Registre la DLL WCCFinance.dll. Le fichier
FinanceRegister.bat permet de la faire automatiquement (il lance tout simplement regsvr32.exe à votre place).Répertoire Chapter03
Il contient simplement la version du composant
WCCFinance fonctionnant sous MTS.Répertoire Chapter04
Ce répertoire contient le code qui correspond au chapitre 4 (incroyable, non ?). Il s’agit de la version de l’application utilisant seulement MTS (pas MSMQ). Voici quelle est la structure du répertoire :
Répertoire |
Contenu |
Finance |
Le composant WCCFinance |
Cars |
Le composant WCCCars |
ShowroomOrder |
Le composant WCCShowroomOrder |
HeadOfficeOrder |
Le composant WCCHeadOfficeOrder |
Order |
Le composant WCCOrder |
Library |
Les DLL |
Application\Visual Basic |
Application Visual Basic |
Application\Web |
Application ASP |
Application\Images |
Images des voitures |
Nous fournissons les DLL déjà construites avec l’application Visual Basic afin que ceux d’entre vous qui sont impatients puissent faire fonctionner le tout sans construire eux-mêmes les composants.
Pour construire vous-même les composants, il suffit de les charger dans Visual Basic et de les compiler, par exemple dans le répertoire
Tous ces composants sont conçus pour s’exécuter sur la machine du concessionnaire, aussi vous pouvez les installer dans un lot MTS local. Voici quelles doivent être les propriétés de gestion des transactions pour les différents composants :
Composant |
Gestion des transactions |
WCCCars |
Ne pas gérer les transactions |
WCCFinance |
Ne pas gérer les transactions |
WCCOrder |
Exiger une nouvelle transaction |
WCCHOOrder |
Gérer les transactions |
WCCSROrder |
Gérer les transactions |
Répertoire Chapter05
Ce répertoire contient le code correspondant au composant WCCFinance et à son utilisation par une application Web.
Répertoire Chapter06
Les composants de ce répertoire sont légèrement plus complexes car ils correspondent à la version de l’application qui utilise à la fois MTS et MSMQ (chapitre 6). Il y a du code spécifique pour la partie du traitement qui concerne le fabricant et du code commun placé dans un répertoire ad hoc :
Répertoire |
Contenu |
CombinedMonitor |
Combinaison des suivis des commandes chez le fabricant et chez le concessionnaire |
Common |
Routines communes |
Common\Cars |
Le composant WCCCars |
Common\General |
Code commun des files de messages. |
Common\StringBag |
Routines traitant les collections et chaînes |
HeadOffice |
Routines fabricant |
HeadOffice\Application |
Application fabricant |
HeadOffice\OrderProcess |
Composant de traitement des commandes chez le fabricant |
Showroom |
Routine concessionnaire |
Showroom\Application\Visual Basic |
Application VB concessionnaire |
Showroom\Application\Web |
Application ASP concessionnaire |
Showroom\Application\Images |
Images des voitures |
Showroom\Finance |
Composant WCCFinance |
Showroom\HeadOfficeOrder |
Composant WCCHeadOfficeOrderQ |
Showroom\Order |
Composant combiné WCCOrder |
Showroom\OrderMonitor |
Composant OrderMonitor |
Showroom\ShowroomOrder |
Composant WCCSROrder |
Library |
Les DLL |
Étant donné qu’il y a deux ensembles de composants, il faut s’assurer qu’ils sont bien installés sur la bonne machine :
Concessionnaire |
Fabricant |
StringBag |
StringBag |
WCCSROrderQ |
WCCOrderProcessQ |
WCCOrderMonitorQ |
|
WCCOrderQ |
|
WCCHOOrderQ |
|
Vous devez inscrire vous-même dans le Registre deux de ces composants. Ouvrez une
regsvr32 StringBag.dll
regsvr32 WCCOrderMonitorQ.dll
Voici quelles doivent être les propriétés de gestion des transactions pour les différents composants :
Machine |
Composant |
Gestion des transactions |
Concessionnaire |
WCCOrderQ |
Exiger une nouvelle transaction |
|
WCCSROrderQ |
Gérer les transactions |
|
WCCHOOrderQ |
Gérer les transactions |
Fabricant |
WCCOrderProcessQ |
Exiger une nouvelle transaction |
Répertoire Chapter07
Ce répertoire contient les fichiers ASP relatifs à la sécurité, et notamment les certificats.
Répertoire Chapter08
Ce répertoire contient le code Visual Basic et les pages ASP relatifs à l’authentification et au chiffrement des messages.
Répertoire Chapter09
Ce répertoire contient la version de l’application accessible publiquement par le Web. Comme elle est prévue pour l’Internet, son fonctionnement s’écarte de celui des autres versions (voir chapitre 9).
Répertoire Common
Ce répertoire contient du code Visual Basic commun à tous les chapitres. En fait il ne contient qu’un seul fichier,
Registry.bas, lequel sert à lire ou à écrire des valeurs dans le Registre. Toutes les versions de l’application en ont besoin, aussi bien la version strictement MTS (chapitre 4) que celle avec MSMQ (chapitre 6).Répertoire Setup
Ce répertoire contient le programme Visual Basic qui écrit dans le Registre le nom des sources de données et crée les fichiers
DataStore.inc.Description des bases de données
Dans cette section, nous décrivons les tables et les procédures stockées des deux bases de données. Nous avons fourni des scripts qui créent les bases de données, mais il est toujours utile de pouvoir visualiser rapidement la structure d’une base de données.
La base de données du fabricant (Head Office)
Cette base de données s’appelle
WroxCarCoHeadOffice. Elle stocke la liste des modèles, des coloris, et la liste des combinaisons modèle/coloris ainsi que les commandes provenant des différents concessionnaires.tblCar
Cette table contient les caractéristiques des différents modèles de voitures.
Nom de colonne |
Type de données |
Longueur |
Description |
CarID |
int IDENTITY |
4 |
Clé unique |
Model |
varchar |
50 |
Nom du modèle |
EngineSize |
smallint |
2 |
Taille du moteur |
Doors |
smallint |
2 |
Nombre de portes |
Seats |
smallint |
2 |
Nombre de sièges |
Price |
numeric |
9 |
Prix |
Picture |
varchar |
255 |
Chemin du fichier d’image |
Description |
text |
16 |
Texte descriptif |
tblColor
Cette table stocke tous les coloris existants.
Nom de colonne |
Type de données |
Longueur |
Description |
ColorID |
int IDENTITY |
4 |
Clé unique |
Color |
varchar |
50 |
Nom du coloris |
tblCarColor
Cette table met en relation les modèles avec les coloris et contient également le stock disponible pour chaque combinaison modèle/coloris.
Nom de colonne |
Type de données |
Longueur |
Description |
CarColorID |
int IDENTITY |
4 |
Clé unique |
fkCarID |
int |
4 |
ID du modèle |
fkColorID |
int |
4 |
ID du coloris |
InStock |
smallint |
2 |
Nombre de voitures en stock |
OnOrder |
smallint |
2 |
Nombre de voitures commandées |
tblOrder
Cette table stocke les informations relatives aux commandes. Pour simplifier la conception nous avons rassemblé dans une même table les données qui identifient les concessionnaires et les acheteurs. Nous savons très bien que ce n’est pas ainsi que l’on procède normalement. Si nous prétendions que cette conception accélère les requêtes en évitant de multiplier les jointures, vous seriez en droit de ne pas le croire…
Nom de colonne |
Type de données |
Longueur |
Description |
OrderID |
int IDENTITY |
4 |
Clé unique |
GarageName |
varchar |
50 |
Nom du concessionnaire qui passe la commande |
GarageAddress |
varchar |
50 |
Adresse du concessionnaire qui passe la commande |
GarageTown |
varchar |
20 |
Ville du concessionnaire qui passe la commande |
GarageState |
varchar |
2 |
Pays du concessionnaire qui passe la commande |
GarageZipCode |
varchar |
15 |
Code postal du concessionnaire qui passe la commande |
SalesPerson |
varchar |
20 |
Nom du vendeur chez le concessionnaire qui passe la commande |
CustomerName |
varchar |
20 |
Nom de l’acheteur |
CustomerAddress |
varchar |
50 |
Adresse de l’acheteur |
CustomerTown |
varchar |
20 |
Ville de l’acheteur |
CustomerState |
varchar |
2 |
Pays de l’acheteur |
CustomerZipCode |
varchar |
15 |
Code postal de l’acheteur |
CustomerPhone |
varchar |
15 |
Numéro de téléphone de l’acheteur |
fkCarID |
int |
4 |
ID du modèle commandé |
fkColorID |
int |
4 |
ID du coloris commandé pour ce modèle |
DateOrdered |
datetime |
8 |
Date à laquelle la commande est passée |
Ackowledged |
datetime |
8 |
Date à laquelle la commande est acquittée |
DeliveryDate |
datetime |
8 |
Date de livraison prévue |
GarageOrderNumber |
int |
4 |
Numéro de commande chez le concessionnaire |
ResponseQueue |
varchar |
255 |
ID de la file de messages de réponse MSMQ |
La base de données du concessionnaire (Showroom)
Cette base de données s’appelle
WroxCarCo. Elle stocke une copie des tables qui correspondent aux modèles et aux coloris existants, ainsi que les informations relatives aux acheteurs et aux commandes.Le contenu des tables
tblCar et tblColor est le même que dans la base de données du fabricant.tblCarColor
Cette table stocke les coloris proposés pour chaque modèle, et le nombre de voitures disponibles pour chaque combinaison modèle/coloris. Elle diffère légèrement de la table équivalente chez le fabricant car elle est dépourvue de colonne
OnOrder.
Nom de colonne |
Type de données |
Longueur |
Description |
CarColorID |
int IDENTITY |
4 |
Clé unique |
fkCarID |
int |
4 |
ID du modèle |
fkColorID |
int |
4 |
ID du coloris |
InStock |
smallint |
2 |
Nombre de voitures en stock |
tblOrder
Cette table stocke les informations relatives aux commandes passées chez le concessionnaire.
Nom de colonne |
Type de données |
Longueur |
Description |
OrderID |
int IDENTITY |
4 |
Clé unique |
fkCustomerID |
int |
4 |
ID de l’acheteur |
OrderDate |
datetime |
8 |
Date à laquelle la commande est passée |
fkCarID |
int |
4 |
ID du modèle de la voiture commandée |
fkColorID |
int |
4 |
ID du coloris de la voiture commandée |
SalesPerson |
varchar |
20 |
Nom du vendeur qui s’est occupé de la commande |
Acknowledged |
bit |
1 |
Acquittement de la commande |
DeliveryDate |
datetime |
8 |
Date de livraison |
HOOrderNumber |
int |
4 |
Numéro de la commande chez le fabricant |
PricePaid |
numeric |
9 |
Prix de vente réel |
tblCustomer
Cette table stocke les informations relatives aux acheteurs.
Nom de colonne |
Type de données |
Longueur |
Description |
CustomerName |
varchar |
20 |
Nom de l’acheteur |
CustomerAddress |
varchar |
50 |
Adresse de l’acheteur |
CustomerTown |
varchar |
20 |
Ville de l’acheteur |
CustomerState |
varchar |
2 |
Pays de l’acheteur |
CustomerZipCode |
varchar |
15 |
Code postal de l’acheteur |
|
|
|
|