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é"