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

ASP.NET Discussion :

un petit exemple trés simple du pattern repository


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Homme Profil pro
    consultant java
    Inscrit en
    Août 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 325
    Points : 109
    Points
    109
    Par défaut un petit exemple trés simple du pattern repository
    bonjour,
    puis-je avoir un exemple simple de l'utilité du pattern repository,
    un exemple simple avec deux class au max une interface ou deux par ex,



    merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 312
    Points : 411
    Points
    411
    Par défaut
    Salut,

    Voir ici:
    http://www.developpez.net/forums/d63...n/#post3754805

    L’intérêt et de n'avoir pratiquement aucune, voir aucune, dépendance entre tes couches et la couche de données.

    Ton appli ignore donc si elle travaille en mémoire, sur du xml, du sql etc...

  3. #3
    Membre régulier
    Homme Profil pro
    consultant java
    Inscrit en
    Août 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 325
    Points : 109
    Points
    109
    Par défaut
    oui j'ai vue ce tuto ,
    mais a quoi sert de definir des interface pour chaque entité avec des methode .et de les redefinir dans chaque controlleur par exemple ??
    c'est ce que je comprend pas??
    on cree une interface pour chaque entité avec des methode et dans chaque controlleur on redefini ces methode !!

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 312
    Points : 411
    Points
    411
    Par défaut
    Je ne suis pas sur de comprendre ta question.

    On n'a qu'une seule interface ici, que tous les différents repository concrets doivent implémenter.

    Le controlleur reçoit en paramètre de son constructeur un objet de type interface et le tour est joué.

    Les méthodes ne sont pas redéfinies dans le controlleur.

  5. #5
    Membre régulier
    Homme Profil pro
    consultant java
    Inscrit en
    Août 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 325
    Points : 109
    Points
    109
    Par défaut
    on une interface : ICustomerRepository
    et une class qui contiens les meme methode :CustomerRepository_LinqToSQL
    ( on redefini les meme methodes )


    tout ça c'est pour Customer, alors pour chaque autre entité on doit faire la meme chose :
    son interface avec les methodes
    et une class qui implement cette interface


    mais c'est du code en double !!
    c quoi l'interet de tout ça ??

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 312
    Points : 411
    Points
    411
    Par défaut
    L'exemple donné (customers) n'est pas l'objet du pattern.

    Tu peux réfléchir avec une interface générale du genre IRepository si tu préfère (dans le cadre d'un projet de taille modeste).

    c quoi l'interet de tout ça ??
    Si tu passe d'un mode de persistance à l'autre, il te suffit de créer un nouveau Repository et tout le reste fonctionne pareil.

    Comme indiqué par l'auteur du post, c'est notamment très appréciable pour tester tes classes (tu simule à ce moment les données avec un repository TestRepository).

    Enfin, et pour généraliser le concept, il est toujours recommandé de séparer les couches via des abstractions (donc techniquement des interfaces) pour les raisons évoquées ci dessus.

  7. #7
    Expert confirmé
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Points : 4 066
    Points
    4 066
    Par défaut
    Citation Envoyé par mvc_dev Voir le message
    mais c'est du code en double !!
    c quoi l'interet de tout ça ??
    Ce n'est pas du code en double, c'est même tout l'inverse. L'utilisation du pattern Repository, mais plus généralement des interfaces te permet de ne pas avoir de duplication de code et de réduire le couplage entre tes classes.

    Je t'invite à refaire un petit tour sur les tutoriels concernant la Programmation Orientée Objet et ses principes fondamentaux (Encapsulation, Héritage, Spécialisation, etc...). Ça ne fait jamais de mal de revoir les bases, même pour les expérimentes. Tu as ici des articles généraux sur les Designs Patterns en .NET, et un autre très intéressant sur l'injection de dépendances.

    Avoir une interface te permet aussi de faire de l'inversion de dépendances. Imagine le cas suivant, tu as deux bases de données :

    • une que tu utilises avec Linq via la classe CustomerRepository_LinqToSQL
    • l'autre avec Entity Framework via la classe CustomerRepository_EntityFramework.

    Au niveau de ton contrôleur, manipuler l'interface ICustomerRepository te permet de t'abstraire de la notion de CustomerRepository_LinqToSQL ou CustomerRepository_EntityFramework ou CustomerRepository_Autre. Tu remarqueras que le constructeur du contrôleur HomeController de l'exemple cité plus haute te permet d'injecter le CustomerRepository de ton choix (on parle ici d'injection de dépendances par constructeur ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public HomeController(ICustomerRepository repository) 
    {             
        _repository = repository;         
    }
    En espérant t'avoir aidé.

  8. #8
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Salut,
    Je ne sais si on peut dire que j'ai utilisé le pattern repository mais un exemple concret de ce que dit Nicolas peut être trouvé dans mon dernier papier: http://immobilis.developpez.com/tuto...ity-framework/
    Pour les besoins des tests j'ai réalisé une classe qui accède à des données en utilisant plusieurs fournisseurs. Sans l'utilisation de l'interface, le code aurait été beaucoup plus long.

    A+

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 312
    Points : 411
    Points
    411
    Par défaut
    Je ne sais si on peut dire que j'ai utilisé le pattern repository mais un exemple concret de ce que dit Nicolas peut être trouvé dans mon dernier papier: http://immobilis.developpez.com/tuto...ity-framework/
    Bah a partir du moment ou tu cache l'implémentation de ton accès BDD à tes couches supérieures (via une interface) c'est du repository, donc on est en plein dedans avec ton article à mon sens.

Discussions similaires

  1. petite question, peut-être très simple
    Par BigColino dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 15/02/2012, 11h53
  2. Exemple très simple en REST
    Par simonakro dans le forum REST
    Réponses: 0
    Dernier message: 12/04/2011, 20h40
  3. Réponses: 2
    Dernier message: 03/04/2011, 11h55
  4. Exemple simple utilisant le repository pattern
    Par Arthis dans le forum ASP.NET
    Réponses: 6
    Dernier message: 04/11/2008, 11h24
  5. [batch] petit script très simple, help
    Par zeguzz dans le forum Windows
    Réponses: 2
    Dernier message: 11/10/2006, 00h42

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