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

C# Discussion :

Problème d'architecture, définition des assemblys


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de WebPac
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 947
    Par défaut Problème d'architecture, définition des assemblys
    Bonjour tout le monde,

    je souhaite faire plusieurs applications qui pourront exporter dans un tableur, soit dans Excel soit dans OpenOffice.org.
    Il y aura au final, une suite pour Excel et une suite pour OpenOffice.org.
    Les 2 suites ont bien entendu tout le code métier en commun, seul le code de pilote des tableurs change.
    Ainsi, je désire créer une dll ExportExcell.dll et une dll ExportOOo.dll.
    Chacune de ses 2 dll possèdera le code spécifique associé au tableur lui correspond et les projets et autres dll métier n'auront aucun code spécique à tel ou tel tableur.
    Jusque là, rien de bizarre, juste une volonté de faire un code propre.

    Ainsi, la solution est de faire une interface Tableur avec 2 classes filles TableurExcel et TableurOOo, chacune des 2 filles se trouvant dans une des 2 dll et création des filles en utilisant un design pattern Fabrique abstraite.

    Mon soucis est que je ne sais pas où définir mon interface Tableur, en effet, si je souhaite la déclarer dans mon projet principal métier, il faudra que les dll puissent y avoir accès et ce n'est pas faisable car mon projet principal doit déjà pouvoir y accéder, de plus, je ne voudrais pas que les dll dépendent du code métier.

    Si je déclare l'interface Tableur dans une assembly séparée, ça me fait créer une dll qui ne possèdera qu'une déclaration d'une interface, je trouve que c'est un gaspillage pour pas grand chose et une complication de l'architecture.

    Quelle est la solution en général pour ce genre de problème d'architecture ?
    Je ne vois pas mais me dis que je ne suis pas le seul à me poser ce problème.

    Merci par avance pour vos suggestions.

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par WebPac Voir le message
    Si je déclare l'interface Tableur dans une assembly séparée, ça me fait créer une dll qui ne possèdera qu'une déclaration d'une interface, je trouve que c'est un gaspillage pour pas grand chose et une complication de l'architecture.
    C'est pourtant la solution la plus commode.
    On l'applique courament avec WCF, par exemple où le seul point commun entre le serveur et le client sont souvent les BO et les interfaces de communication.

    Je ne comprends pas la notion de "gaspillage" ici ? ca gaspille quoi ? 10 Ko sur le disque ?

  3. #3
    Membre éclairé Avatar de WebPac
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 947
    Par défaut
    Salut,

    en fait, non, "gaspillage" n'est pas un bon terme, c'est que je me dis que si je commence à créer des assembly pour des interfaces uniques, je vais me retrouver avec un nombre assez conséquent d'assembly au final.

    Mais de toute façon, je ne voyais pas d'autre solution, donc si c'est ainsi la bonne pratique, je valide et fais aussi ainsi.

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par WebPac Voir le message
    Salut,

    en fait, non, "gaspillage" n'est pas un bon terme, c'est que je me dis que si je commence à créer des assembly pour des interfaces uniques, je vais me retrouver avec un nombre assez conséquent d'assembly au final.si.
    Quelques dizaines d'assemblies dans une application c'est assez fréquent, tu sais.

    Une petite application, c'est souvent une dizaine d'assemblies.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2004
    Messages : 57
    Par défaut
    salut,

    tu peux même aller plus loin.

    - tu peux étudier le chargement dynamique de DLL qui te permettra de rompre le lien d'implémentation.

    - faire une assembly permettant de switcher entre OpenOffice et Excel

    après il faut savoir si c'est vraiment nécessaire.

    parfois une bonne DLL avec une gestion de version correcte permet de faire des choses propres et efficaces.

    enjoy

  6. #6
    Membre éclairé Avatar de WebPac
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 947
    Par défaut
    Merci pour vos réponses, en fait, je suis nouveau en .NET avec un grosse expérience en Delphi, donc pas de dll mais un gros exécutable qui intègre tout.
    Je me pose des questions justement sur les problèmes de versionning des assemblys, si une classe mère se trouve dans une assembly et des classes filles dans d'autres assemblies, si on modifie la déclaration de la classe mère (ajout de propriétés, méthodes, changement de signature de méthodes) et qu'on n'a pas les même versions des assemblies, que se passe-t-il ?

    Peut-on vérifier à l'exécution que les versions sont bien les bonnes ?

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

Discussions similaires

  1. Problème d'architecture sur des classes abstraites
    Par Walther Bishop dans le forum Langage
    Réponses: 2
    Dernier message: 02/10/2013, 11h26
  2. [XL-2003] Problème avec la définition des axes d'un ScatterMarkers avec OWC10
    Par ankoubzh dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/05/2009, 22h15
  3. Problème de mise à jour des assembly-> reflexion
    Par gdkenny dans le forum ASP.NET
    Réponses: 2
    Dernier message: 14/11/2007, 11h10
  4. [JSTL] Problème de définition des biblio des balises jstl.jar
    Par amine lahyani dans le forum Taglibs
    Réponses: 5
    Dernier message: 30/08/2006, 20h32
  5. [Système] Problème de définition des variables
    Par SLAM JACK dans le forum Langage
    Réponses: 6
    Dernier message: 29/03/2006, 19h53

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