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 :

  1. Démarrez l’Explorateur MTS.
  2. Sélectionnez la machine sur laquelle vous souhaitez installer les lots, et sélectionnez Lots installés.
  3. Dans le menu Action sélectionnez Nouveau/Lot (ou bien faites un clic droit et sélectionnez Nouveau/Lot dans le menu contextuel).
  4. Sélectionnez Installer des lots pré-construits.
  5. Cliquez sur le bouton Ajouter, et sélectionnez l’un des fichiers PAK qui se trouvent dans l’un des sous-répertoires du répertoire Packages :

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 regsvr32.exe, ce qui vous évite d’avoir à passer par l’invite de commandes.

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 Library. Vous pouvez les compiler dans un répertoire différent, mais n’oubliez pas alors de redéfinir aussi le chemin dans les options de compatibilité.

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 Invite de commande. Placez-vous dans le répertoire Chapter 6\Library et entrez les commandes suivantes (en supposant que vous ayez besoin d’un StringBag sur les deux machines) :

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