Structure d'une solution sous QC
2006-10-19 #qc
Private Assemblies
Une solution basée sur QC est constituée d'au minimum 4 projets, chacun correspondant à une DLL :
- qc.Engine : qc.Engine.dll
- qc.Framework : qc.Framework.dll
- qc.Classic : qc.Classic.dll
- BAS.Data.BDHelper : BAS.Data.BDHelper.dll
QC utilise le principe des Private Assemblies (PA) selon la méthode " Development Framework" pour DotNetNuke 2 qui a été décrite par Bo Norgaard sur son site (http://www.dotnetnuke.dk/Default.aspx?tabid=59).
Répertoire principal
- default.aspx : charte graphique vide (nécessaire mais inutilisé),
- default.aspx.cs : code pour la classe inPortal.Default,
- global.asax. - : ràs,
- LiteralFR.config : textes français pour les PA qc.Engine et qc.Classic
- qc.Engine.csproj : le fichier projet pour la PA
- qc.sln : le fichier de la solution QC
- web.config : ràs,
- BDHelper : sous-répertoires avec le code de la PA gérant l'accès aux bases de données
- bin/ : répertoire avec le code compilé,
- Classic/ : sous-répertoires avec le code des boites standards de QC
- data/ : sous-répertoires où stocker les fichiers de données
- Engine/ : sous-répertoires avec le code de base de QC
- Framework/ : code de la PA servant à lier le tout,
- res/ : sous-répertoires (scripts, images, chartes graphiques...)
Créer une nouvelle solution
Ce paragraphe explique point par point comment créer une nouvelle solution nommée "demo" à partir de la solution QC.
- Copier le répertoire X:\Portals\qc dans X:\Portals\demo
- Créer un répertoire virtuel "demo" qui pointe sur le sous-répertoire X:\Portals\demo
- Donner à l'utilisateur ASPNET TOUS les droits sur le sous-répertoire X:\Portals\demo\data
- Tester que http://localhost/demo fonctionne correctement
- Renommer X:\Portals\demo\qc.sln en X:\Portals\demo\demo.sln
- Supprimer X:\Portals\demo\qc.suo
- Remplacer manuellement http://localhost/qc par http://localhost/demo dans
les fichiers suivants :
- X:\Portals\demo\demo.sln
- X:\Portals\demo\qc.Engine.csproj.webinfo
- X:\Portals\demo\Classic\qc.Classic.csproj.webinfo
- Supprimer X:\Portals\qc\BDHelper\BAS.Data.BDHelper.csproj.user
- Charger la solution X:\Portals\demo\demo.sln dans Visual Studio
- Générer la solution
- dans la barre de menu, cliquer sur Générer - Générer la solution (Ctrl+Maj+B)
- le résultat doit être de la forme "Génération : 4 a réussi, 0 a échoué, 0 a été ignoré"
- Tout sauvegarder, quitter et tester que http://localhost/demo fonctionne toujours
Ajouter un nouveau projet
Ce paragraphe explique comment ajouter un nouveau projet sous forme de Private Assembly à la solution "demo". Concrètement, ce projet regroupe logiquement plusieurs "boites" dans une même Private Assembly et physiquement les sous-répertoires relatifs à chacune de ces boites dans un même répertoire.
- Lancer Visual Studio 2003 et ouvrir la solution "demo"
- Créér le projet correspondant à la Private Assembly
- dans l'explorateur de solutions, cliquer avec le bouton droit sur la solution "demo" et choisir Ajouter - Nouveau Projet
- dans la boite de dialogue sélectionner le type de projet "Projet Visual C#" et le modèle "Projet Web Vide"
- définir l'emplacement à http://localhost/demo/Exemple et valider en cliquant sur OK
- Renommer le projet
- dans l'explorateur de solutions, cliquer avec le bouton droit sur le projet qui vient d'être créé (Exemple dans le cas présent) et choisir Renommer puis indiquer "demo.Exemple"
- cliquer à nouveau avec le bouton droit sur le projet et choisir Propriétés
- dans la boite de dialogue, sélectionner Propriété communes - Général
- définir Nom de l'assembly à "demo.Exemple"
- définir Espace de noms par défaut à "demo.Exemple"
- Ajouter des références
- dans l'explorateur de solutions, cliquer avec le bouton droit sur le dossier "Références" du projet "demo.Exemple" et choisir Ajouter une référence
- cliquer sur l'onglet "Projets"
- sélectionner "qc.Engine" et valider
- Référencer le projet
- dans l'explorateur de solutions, cliquer avec le bouton droit sur le dossier "Références" du projet "qc.Framework" et choisir Ajouter une référence
- cliquer sur l'onglet "Projets"
- sélectionner "demo.Exemple" et valider
- Générer la solution
- dans la barre de menu, cliquer sur Générer - Générer la solution (Ctrl+Maj+B)
- le résultat doit être de la forme "Génération : 5 a réussi, 0 a échoué, 0 a été ignoré"
Ajouter une nouvelle boite
Dans ce paragraphe, on va voir comment ajouter une nouvelle "boite" dans le projet demo.Exemple créé auparavant. Dans la terminologie QC, une boite correspond à un module de code et regroupe généralement une classe métier et un ou des contrôles utilisateurs web destinés à gérer un élément de base dans l'application (les clients, les fournisseurs, les catégories de clients...).
- Lancer Visual Studio 2003 et ouvrir la solution "demo"
- Créer un dossier pour la boite
- dans l'explorateur de solutions, cliquer avec le bouton droit sur le projet "demo.Exemple" et choisir Ajouter - Nouveau dossier
- cliquer sur le dossier "NewFolder1" qui vient d'être créé et le renommer en "Adresse"
- Créer le contrôle utilisateur pour l'affichage
- dans l'explorateur de solutions, cliquer avec le bouton droit sur le dossier "Adresse" du projet "demo.Exemple"
- choisir Ajouter - Ajouter un contrôle utilisateur Web
- donner "viewAdresse.ascx" comme nom et valider
- sélectionner le contrôle utilisateur créé et choisir Afficher le code
- repérer la définition de la classe et remplacer "System.Web.UI.UserControl" par "qc.Engine.BoxControl" de façon à obtenir la ligne de code suivante : "public class viewAdresse : qc.Engine.BoxControl"
- Créer le contrôle utilisateur pour le paramétrage
- dans l'explorateur de solutions, cliquer avec le bouton droit sur le dossier "Adresse" du projet "demo.Exemple"
- choisir Ajouter - Ajouter un contrôle utilisateur Web
- donner "editAdresse.ascx" comme nom et valider
- sélectionner le contrôle utilisateur créé et choisir Afficher le code
- repérer la définition de la classe et remplacer "System.Web.UI.UserControl" par "qc.Engine.BoxControl" de façon à obtenir la ligne de code suivante : "public class editAdresse : qc.Engine.BoxControl"
- Créer la classe pour gérer l'objet Adresse
- dans l'explorateur de solutions, cliquer avec le bouton droit sur le dossier "Adresse" du projet "demo.Exemple"
- choisir Ajouter - Ajouter une classe
- donner "Adresse.cs" comme nom et valider
- Générer la solution
- dans la barre de menu, cliquer sur Générer - Générer la solution (Ctrl+Maj+B)
- le résultat doit être de la forme "Génération : 5 a réussi, 0 a échoué, 0 a été ignoré"