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 :

Presentation, BLL et DAL : automatismes possibles ?


Sujet :

ASP.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 Presentation, BLL et DAL : automatismes possibles ?
    Bonjour à tous,

    Dans mon projet, j'ai implémenté tout ce qu'il fallait coté DAL et BLL.
    Dans mon projet Web d'interface utilisateur, j'ai accès uniquement aux interfaces de mes services situés dans la BLL ainsi qu'à une classe Factory qui me renvoie des instances de mes services.
    Ce qui fait que coté présentation j'ai des appels à mes services du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ICategorieService CatServ = ServiceFactory.GetCategorieServiceInstance();
    Ce principe fonctionne très bien et permet de n'avoir que très peu de dépendance directe avec la couche BLL.

    Maintenant ma problématique se situe au niveau de l'utilisation de ces services dans les controles web.
    En effet, avant de refaire mon projet comme ceci, j'utilisais des objectdatasource qui allaient chercher directement mes services (donc les classes étaient accessibles de la couche BLL), ce qui facilitait énormément le travail avec les opération CRUD sur des listview et compagnie.

    Aujourd'hui je me retrouve juste avec des interfaces et une classe Factory qui me permet de récupérer mes instances. Je n'ai plus accès à cet automatisme qui m'aidait beaucoup à économiser le code-behind derriere chaque page (tout etait géré via les controles objectdatasource).
    Etant donné mon schéma de principe, pensez vous qu'il y ait un moyen simple de retrouver cet automatisme ? Comment faites vous en général sur des projets ayant la meme structure que le mien ?

    Merci d'avance

  2. #2
    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
    Voici une proposition qui peut, peut etre, etre la plus intéressante dans mon cas :

    Je laisse ma BLL telle quelle : accessibilité de l'exterieur uniquement sur les interfaces de mes services et sur le ServicesFactory.

    Dans le projet de présentation (la couche web), je créé des Wrappers qui auront le triple avantage suivant :

    1) Je conserve une bonne séparation entre BLL et UI.
    2) Je peux ajouter les balises spécifiques au databinding sur mes wrappers (System.ComponentModel.DataObject et DataObjectMethod) ce qui me permet ensuite d'automatiser toute la partie CRUD entre service et présentation.
    3) On conserve un systeme de méthodes CRUD façon web : au lieu d'avoir un update(T objet) on a update(Int32 Id, String Nom) ce qui pour moi est plus interessant au niveau de la logique des couches.

    Perso avec ce systeme je n'ai qu'un mot en tete : Wonderfull
    Qu'en pensez vous ?

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Je comprends pas trop le problème... tu peux pas mettre simplement la méthode de ta Factory comme SelectMethod ?

  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
    Salut Tomlev, tu as quitté les forums WPF ?

    Je ne peux pas mettre ma méthode de Factory en select car il manque une étape.

    Ma classe factory, c'est elle qui me retourne les instances de mes services.
    Ensuite dans chaque service tu as les méthodes CRUD classiques + celles qui sont spécifiques à chaque service.

    L'interet des wrappers c'est que je peux les utiliser directement dans des objectdatasources. Au niveau de l'objectdatasource, je lui donne comme source un de mes wrappers, puis je lui dit que dans ce wrapper, telle méthode est à utiliser pour le select, telle pour l'insert ...
    En mettant le factory comme source il me proposerait dans la liste des méthodes pour l'insert, update, delete uniquement les méthodes comme GetProductServiceInstance, GetCategoryServiceInstance ... tu vois le truc ?

    Edit : Je dis tout ca de façon sûre mais je ne suis pas fermé à toute suggestion bien entendu ! si tu as une proposition à faire, je suis preneur

  5. #5
    Expert confirmé
    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
    Par défaut
    Et tu ne peux pas mettre ICategorieService comme source de données? J'ai jamais essayé de mettre une interface comme source de données objet.
    "Winter is coming" (ma nouvelle page d'accueil)

  6. #6
    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
    Euh, vous avez déjà utilisé les objectdatasources en ASP.Net ? à moins que j'ai raté un épisode, l'objectdatasource, tu lui donne le type de l'objet source à utiliser ainsi que les 4 noms de méthodes CRUD de cet objet et il se débrouille tout seul. Il l'instancie, et fait appel aux méthodes quand il y a besoin. Si je lui passe une interface je ne suis pas sur qu'il apprécie En fait il attend un objet ayant un constructeur sans parametre donc l'interface ne passera pas.

    Ah mais ça y est je vois de quoi vous parlez en fait non, je ne fais rien du tout moi, je n'instancie rien, je ne fais que paramètrer dans la couche présentation (sauf deux trois lignes par ci par la quand c'est nécessaire mais c'est tout). Donc meme pas besoin de passer par les interfaces. En fait j'utilise les interfaces et la classe factory de mes services dans les wrappers. Ensuite les wrappers sont pilotés et instanciés automatiquement par les objectDataSources.

Discussions similaires

  1. Livre - Application en couche (GUI, BLL, DAL)
    Par Kiboumz dans le forum Architecture
    Réponses: 3
    Dernier message: 20/07/2009, 13h44
  2. Réponses: 15
    Dernier message: 25/05/2009, 17h31
  3. DAL+BLL que choisir?
    Par fixis dans le forum ASP.NET
    Réponses: 3
    Dernier message: 15/05/2009, 00h13
  4. [Linq to Sql] BLL ou DAL
    Par olifile dans le forum Accès aux données
    Réponses: 4
    Dernier message: 28/01/2009, 20h40
  5. [Architecture n-tier] Conception DAL & BLL
    Par lapanne dans le forum C#
    Réponses: 5
    Dernier message: 10/07/2007, 16h12

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