IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Organisation de projets et Namespaces


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Par défaut Organisation de projets et Namespaces
    Bonjour à tous,

    Je suis dans une problématique sans fin : la gestion du découpage en mini projets et la gestion des namespaces.
    Sur un projet assez gros (env 400 tables en base et tout ce qui va avec niveau applicatif), on a fait le choix de découper notre couche business en plusieurs assembly (pour prendre un exemple simpliste : assembly Client pour gérer tout ce qui tourne autour de l'identité du client, assembly Ventes pour gérer les produits/articles, les commandes etc, assembly compta pour gérer le paiement, la facturation...).

    Dans chacun de ces assembly, nous avons des classes du même "genre", c'est à dire qui utilisent le même patern. Par exemple, nous avons un genre Repository, un genre Engine... Ces "genres" sont transverses à tous ces assembly.

    Maintenant, dans un cas concret, j'aimerai pouvoir faire la chose suivante :
    J'ajoute une référence à ma DLL Clients et à ma DLL Compta.

    J'aimerai que quand je tape "Engine." l'intellisense me propose toutes les classes du genre "Engine" quel que soit l'assembly importé.

    Exemple :

    Projet Clients :
    - ClientRepository
    - AdresseRepository
    - ...
    Projet Compta :
    - FactureRepository
    - CompteRepository

    Si dans mon code j'importe les éléments comme suit :

    Imports Clients
    Imports Compta

    et que je tape "Repository."
    L'intellisense devrait me proposer les classes suivantes :
    - ClientRepository
    - AdresseRepository
    - FactureRepository
    - CompteRepository

    Auriez vous connaissance d'une façon de s'organiser pour avoir ce genre de résultat ?
    Le but de la manoeuvre serait que le développeur n'ait plus à se poser de question. Il connait son cahier des charges, sait qu'il va devoir coder quelque chose qui touche à la compta et au compte client, il importe donc les deux dll puis ensuite, s'il doit taper dans un repository, il commence par taper repository et là il voit dans quoi il peut vraiment taper techniquement parlant.

    J'espere qu'il existe une façon de faire pas trop alambiquée pour ça...
    Sinon, comment organisez vous vos projets lorsque ceux ci sont suffisamment gros pour devoir être découpés en plus petits projets ?

  2. #2
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    Ce n'est peut-être pas la bonne façon mais dans notre cas, on a une seule DLL, et une grande arborescence.

    Data
    Data.Contrat
    Data.Compta
    Data.Compta.Prelevement
    Data.Client
    Data.Event
    Data.Exception
    ...

    Tools
    Tools.ModuleRecherche
    Tools.PDFBuiler
    ...

    UI
    UI.Template
    UI.event
    UI.PanneauData
    UI.LControls


    etc etc

    Ainsi on qu'une dll a référencer, et on saisit Data. et l'intellisense propose les namespace Contrat & Contact & Client, et une fois le namespace choisi il propose les classes qui en découlent.

    Je n'ai jamais essayé, mais je pense que dans ton cas l'IDE va te dire que le namespace Repository porte à confusion car il ne saura pas lequel des 2 choisir et je ne pense pas qu'il soit capable de mixer les 2 en un seul intellisense (je ne pense pas, mais je ne j'ai jamais essayé donc j'ai peut-être tort) ...

  3. #3
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Citation Envoyé par zax-tfh Voir le message
    Si dans mon code j'importe les éléments comme suit :

    Imports Clients
    Imports Compta

    et que je tape "Repository."
    L'intellisense devrait me proposer les classes suivantes :
    - ClientRepository
    - AdresseRepository
    - FactureRepository
    - CompteRepository
    Si ces classes sont définies dans des assemblies directement référencées par le projet et que les espaces de noms correspondants sont importés, alors Intellisense les suggèrera.

    En revanche j'insiste sur le "directement" : Intellisense ne proposera pas de classes d'une référence d'une référence du projet.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Par défaut
    En fait, je me demande si c'est d'avoir posé le problème sur le forum qui m'a éclairci les idée ou quoi mais il y a une solution simple :

    Il suffit de changer le Root Namespace des différents projets
    Puis ensuite de créer des namespaces bien comme il faut.

    Exemple :
    Projet Clients.dll => root Namespace = MaSociete
    Projet Compta.dll => root Namespace = MaSociete

    Ensuite, dans mes classes repository de Clients.dll :
    Namespace Repository
    Dans les repository de Compta.dll :
    Namespace Repository

    Le tour est joué On peut même imaginer un niveau de filtrage par projet en utilisant des namespaces comme ceci :
    Namespace Repository.Clients
    Namespace Repository.Compta

    Par contre, DonQuiche, peux tu expliquer ton histoire de référence directe dans le projet stp ? parce que je ne comprend pas bien la nuance (enfin je ne suis pas sur de comprendre en fait, j'ai un doute). Pour moi, soit tu références une DLL physique, soit tu référence un projet de ta solution.

    @_Ez3kiel : pour un ERP, tout avoir dans un même projet avec une équipe de développeurs conséquente n'est pas une très bonne idée (surtout quand tu travailles en check-out exclusif, dès qu'une personne ajoute un fichier au projet, s'il ne check in pas dans la foulée, personne ne peut en ajouter à son tour). De plus, lorsque tu veux pouvoir développer des produits qui dérivent de l'ERP mais sur un périmètre fonctionnel plus restreint, tu n'as pas à embarquer la totalité du métier, mais juste une partie.

  5. #5
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    pour un ERP, tout avoir dans un même projet avec une équipe de développeurs conséquente n'est pas une très bonne idée (surtout quand tu travailles en check-out exclusif, dès qu'une personne ajoute un fichier au projet, s'il ne check in pas dans la foulée, personne ne peut en ajouter à son tour). De plus, lorsque tu veux pouvoir développer des produits qui dérivent de l'ERP mais sur un périmètre fonctionnel plus restreint, tu n'as pas à embarquer la totalité du métier, mais juste une partie.
    Dans notre cas, on est 3 développeurs, dont seulement 2 touchent -vraiment- à la dll, et parmi ces 2, je suis le seul à le faire tous les jours. Nous ne sommes pas du tout une ERP, juste un département info dans une boîte administrative. Donc oui mon cas n'était peut-être pas le plus adapté pour répondre à ta question, mais j'essaye de poser ma pierre à l'édifice aussi bancale soit-elle.

  6. #6
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Imagine que ton projet ait une référence "parent.dll" qui elle-même référence "grandParent.dll". Intellisense liste les symboles de "parent.dll" mais pas de "grandParent.dll", à moins d'ajouter celle-ci en référence du projet.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Par défaut
    @_Ez3kiel : oui, pas de soucis, et merci pour ta participation c'est vraiment pas évident de trouver des avis sur des projets aussi conséquents. Et d'ailleurs, même si la structure n'est pas la même en nombre de devs, taille de l'appli etc, de bonne idées peuvent provenir de petites structures, moyennes, micro, peut importe, l'idée peut venir de n'importe où et en général de là où on ne s'y attend pas

    @DonQuiche : merci pour l'info, je comprend mieux

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant]Organisation de projet Swing, Formulaires !
    Par 17mounir dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 23/08/2006, 17h14
  2. Réponses: 1
    Dernier message: 02/05/2006, 10h50
  3. [VB.Net 2.0] Comment organiser un projet 3-tiers ?
    Par errant dans le forum Services Web
    Réponses: 3
    Dernier message: 07/03/2006, 21h09
  4. [WSAD]Organisation de projet Web
    Par thibaut dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 21/10/2004, 14h05
  5. [Debutant(e)][eclipse] Comment organiser ses projets ?
    Par Javanaute dans le forum Eclipse Java
    Réponses: 9
    Dernier message: 09/04/2004, 10h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo