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 :

Architecture N-Tiers & WinForm


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 34
    Par défaut Architecture N-Tiers & WinForm
    Bonjour,

    je souhaite créer une application C# WinForms pour mon club de plongée.

    Je dispose d'une BDD avec l'ensemble des membres du club.
    J'aimerais découper mon application selon l'architecture N-Tiers.

    J'ai fait une ébauche de celle-ci.

    Data Layer : Base de données SQL.
    Data Access Layer : 1 projet dll DataAccess.
    Business Layer : 1 projet Entity, 1 projet Service.
    GUI : 1 projet application WinForms UserGUI.

    Voilà maintenant le code contenu dans chaque projet.
    Business Layer > Entity

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class Personne
    {
    	public int id;
    	public string code;
    	public string nom;
    	public string prenom;
     
    }
     
    public class Membre : Personne
    {
     
    }
    Business Layer > Service
    Mon projet Service, classe GetService, contient deux méthodes, 1 GetAllMembres & 1 GetMembreByCode(string codeMembre).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public List<Membre> GetAllMembres()
    {}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public Membre GetMembreByCode(string codeMembre)
    {}
    Data Access Layer
    Mon projet DataAccess contient deux classes : 1 permettant la connexion à la BDD & 1 contenant la méthode GetMembreData.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public DataTable GetMembreData(string codeMembre)
    {}
    Mon objectif serait que lorsque j'appelle une méthode de Service (soit GetAllMembres soit GetMembreByCode), cette dernière appelle ma méthode GetMembreData du Data Access Layer.
    Si la méthode GetAllMembres est appelé alors GetMembreData prend null en paramètre et retourne l'ensemble des membres.
    Si la méthode GetMembreByCode est appelé alors GetMembre Data prend le code en paramètre et retourne le membre associé.
    Puis retourne les objets afin d'être afficher dans une DataGridView.

    L'affichage dans la GridView n'est pas le problème pour l'instant. Je cherche a savoir comment faire intéragir Service et DataAccess.

    Merci d'avance !

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2005
    Messages : 482
    Par défaut
    Salut,
    peux-tu préciser ta phrase "Je cherche a savoir comment faire intéragir Service et DataAccess." ?
    ta méthode "GetMembreData" renvoie un DataTable, tu n'as plus qu'à "convertir" tes row en 'Membre' ou 'List<Membre>' selon la fonction d'appel.

    Que te manque t'il ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 34
    Par défaut
    Justement j'aimerais savoir ce que je dois mettre dans mes différentes méthodes...

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2005
    Messages : 482
    Par défaut
    mais lol, on ne va pas faire ton prog à ta place ^^

    en gros :
    -ta méthode "GetAllMembres()" va appeler "GetMembreData(Null)" qui va te renvoyer, grâce à la récupération depuis la BDD du genre 'select * from membres', un datatable.
    Pour chaque ligne, "GetAllMembres()" va instancier un membre et l'ajouter dans la List<Membre>; A la fin elle renvoit cette liste.

    -ta méthode "GetMembreByCode("MachinBidule")" va appeler "GetMembreData("MachineBidule")" qui va te renvoyer, grâce à la récupération depuis la BDD du genre 'select * from membres where nom='MachinBidule'', un datatable.
    Si il ce datatable contient bien (au moins...) une ligne "GetMembreByCode("MachinBidule")" va instancier UN membre et le renvoyer.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 34
    Par défaut
    -ta méthode "GetAllMembres()" va appeler "GetMembreData(Null)" qui va te renvoyer, grâce à la récupération depuis la BDD du genre 'select * from membres', un datatable.
    Ma requête doit se trouver où ? Dans ma méthode GetMemberData ?

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2005
    Messages : 482
    Par défaut
    oui, vu que c'est ta couche d'accès aux données.
    les autres classes ne verront jamais la BDD, mais seulement ce que renvoi cette couche.

    tu devrais passer un peu de temps sur un tutoriel 3-tiers pour mieux cerner le principe parce que j'ai l'impression que tu t'es un peu lancé en aveugle ^^

    en gros, ta couche d'accès aux données va se charger d'interroger la BDD et récupérer, modifier, insérer... les données.
    ta couche métier va transformer les données brutes renvoyées par la couche d'accès en données métier (Membres par exemple) et manipuler ces dernières.
    la couche UI va simplement les rendre accessible à l'utilisateur via une interface.

Discussions similaires

  1. Architecture 3 tiers : quelle est la véritable nouveauté ?
    Par unix27 dans le forum Langages de programmation
    Réponses: 8
    Dernier message: 11/03/2007, 18h21
  2. [N-Tier] Problème conception architecture 3-tiers
    Par Royd938 dans le forum Autres
    Réponses: 3
    Dernier message: 17/06/2005, 11h47
  3. [info] Architecture 3-tiers
    Par Shiryu44 dans le forum Servlets/JSP
    Réponses: 22
    Dernier message: 29/03/2005, 10h30
  4. [VB.NET] Architecture n-tiers
    Par Dnx dans le forum ASP.NET
    Réponses: 2
    Dernier message: 08/02/2005, 19h10
  5. [Design Patterns] Architecture 3 tiers
    Par HPJ dans le forum Design Patterns
    Réponses: 1
    Dernier message: 29/07/2003, 11h49

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