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

Visual C++ Discussion :

Architecture couche métier <-> couche présentation


Sujet :

Visual C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Architecture couche métier <-> couche présentation
    Bonjour à tous,

    Voici l'architecture souhaitée pour faire évoluer notre appli :
    - sur le serveur : 1 BD + 1 couche métier
    - sur le client : 1 couche présentation

    Rien que du classique.
    Cependant, je me pose une question sur la communication entre la couche métier et la couche présentation.

    La couche métier va être développée en C++. Il va en résulter une série de Dll contenant chacune plusieurs classes.

    Si l'on développe notre couche présentation en C++ également, est-il possible de manipuler directement les objets de notre couche métier, les instancier, accéder aux attributs...

    Si oui comment linker notre projet ? Est-ce que VS6.0 est suffisant ou faut-il passer par .NET ? Je suppose qu'il y a un protocole de communication à utiliser entre le serveur et le client. Faut-il le développer à la main (socket, pipe...) ? Est-ce qu'on est obligé de mapper toutes nos classes ?

    Peut-etre que tout ce système existe déjà. Mais je n'ai pas trouvé de solution sur le fait de pouvoir instancier directement dans la couche présentation (stocké sur le client) des objets issus de la couche métier (stocké sur le serveur).

    Merci d'avance pour vos réponses...

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    si tu déclares une dll MFC oui tu peux sans probléme stocker des classes dans tes dll et les exposer au programme.
    c'est le systéme utilisé par les MFC en mode dll partagées: les classes MFC sont dans une dll et le programme y accède normalement.
    faq:http://cpp.developpez.com/faq/vc/?pa...keDLLExtension
    entre le client et le serveur tu peux utiliser ADO ,oledb ,odbc etc...
    ou encore un moyen d'accès propriétaire :
    par exemple moi j'utilise MySql et la lib C++ spécialisée pour l'accès au serveur
    (beaucoup plus rapide que les protocoles cités)
    tout dépend de la base et du type de protocole standard et des performances voulues...

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Merci de ta réponse rapide,

    J'ai essayé avec ce que tu m'as donné et la communication des classes d'une Dll à une autre marche bien.

    Par contre, je ne pense pas que ca réponde exactement à mon problème.

    Toutes les Dll de ma couche métier vont être stockées sur le serveur. Et la couche présentation doit pouvoir instancier des objets stockés sur le serveur.

    Du coup, je pense qu'un protocole de communication est nécessaire. En terme de perf, on doit aller le plus vite possible entre la couche métier & présentation (la BD est déjà très performante, il n'y a pas de pb de communication BD <-> couche métier).

    Si rien n'existe déjà, je pensai peut etre à un système de ce style pour la communication métier -> présentation :

    1. serialize des classes à envoyer au format XML
    2. compression ZIP du XML généré
    3. envoie du XML compressé du serveur vers le client
    4. réception du XML compressé par le client
    5. décompression du ZIP
    6. unserialize pour alimenter les classes de la couche présentation

    Le pb avec ça, c'est qu'on est obligé d'écrire les même squelettes de classes à la fois sur le serveur et sur le client. Ce que je souhaiterai éviter.

    Si quelqu'un a une solution...
    Merci.

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    hum je n'avais pas compris ça ....
    ce que tu demandes ressemble au pattern proxy (remote).
    ou l'objet réel peut être situé dans un autre espace que que le programme client.
    cette fonctionnalité existe en java mais pas en C++ .
    le développement est assez conséquent ,si ton objectif est uniquement la séparation des couches métier et présentation, je trouve que c'est inadapté
    la séparation peut être faite localement.
    autre piste qui peut t'intéresser un plugin de classe

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    C'est vraiment interessant ce système de "plugin de classe".

    Tu penses que le "LoadLibrary()" peut s'exécuter pour une Dll située sur un serveur distant ? (en connaissant l'adresse IP et en ayant les droits d'accès nécessaires à la DLL).

    Est-ce que par exemple une méthode "GetAll()" déclarée virtuelle pure sur le client et implémentée dans la Dll sur le serveur peut accéder à la BD pour alimenter la classe ? Les membres sont alors lisibles sur le client ?

    Est-ce que ca peut poser des problèmes de sécurité ?

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    Citation Envoyé par bozo614 Voir le message
    C'est vraiment interessant ce système de "plugin de classe".

    1)Tu penses que le "LoadLibrary()" peut s'exécuter pour une Dll située sur un serveur distant ? (en connaissant l'adresse IP et en ayant les droits d'accès nécessaires à la DLL).

    2)Est-ce que par exemple une méthode "GetAll()" déclarée virtuelle pure sur le client et implémentée dans la Dll sur le serveur peut accéder à la BD pour alimenter la classe ? Les membres sont alors lisibles sur le client ?

    3)Est-ce que ca peut poser des problèmes de sécurité ?
    1) je n'ai jamais essayé ,je vois quand même un probléme:
    après lecture de la dll par LoadLibrary(), un cas d'échec réseau pourrait provoquer un crash du programme lors de la lecture d'une page de dll.
    (si la dll n'est pas lue entièrement en mémoire...)
    2) oui dans le principe.
    3) tout dépend du type de connexion mis en ouvre canal sécurisé ,vpn etc.. .

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Je te remercie pour ton aide.
    Le mieux c'est de tester ce système et voir ce que ca peut donner.

    Si tu as d'autres idées, je suis preneur.
    Merci.

  8. #8
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    Citation Envoyé par bozo614 Voir le message
    Je te remercie pour ton aide.
    Le mieux c'est de tester ce système et voir ce que ca peut donner.

    Si tu as d'autres idées, je suis preneur.
    Merci.
    un systéme de mise a jour locale des dll depuis le serveur...
    avec un classe virtuelle plugin Majserver qui se chargerait de copier les dll en locale en fonctions des versions etc...

Discussions similaires

  1. Communication couche métier / présentation
    Par olive.m dans le forum Architecture
    Réponses: 3
    Dernier message: 20/03/2012, 12h49
  2. [Flex3] L'intégration de la couche métier et couche présentation
    Par imyJava dans le forum Flex
    Réponses: 2
    Dernier message: 01/07/2010, 17h05
  3. Comment bien architecturer sa couche métier ?
    Par luc2verga dans le forum Architecture
    Réponses: 5
    Dernier message: 24/11/2009, 18h45
  4. Réponses: 3
    Dernier message: 17/06/2009, 08h34
  5. [EJB] Architecture couche métier + packaging
    Par st0ne dans le forum Java EE
    Réponses: 2
    Dernier message: 26/10/2007, 10h57

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