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 MVC Discussion :

ASP.Net MVC rend-il la logique métier portable?


Sujet :

ASP.NET MVC

  1. #1
    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 ASP.Net MVC rend-il la logique métier portable?
    Salut,

    J'avoue je suis plus "multicouche" que "MVC". Comme on parle beaucoup de ce dernier je me renseigne et m'interroge.

    MVC a été inventé en 1979 bien avant donc l'apparition du net, des histoires de routage d'url etc.. MVC permet de développer une application (client lourd, léger) en distribuant des rôles. Dans ce contexte, l’UI se contente d’afficher et la logique est déportée dans les contrôleurs.

    "ASP.Net MVC" est une des réponses à la question:
    How do you modularize the user interface functionality of a Web application so that you can easily modify the individual parts?
    Que je traduirai par: Dans une interface utilisateur web, comment rendre les fonctionnalités modulaires afin de les modifier facilement?

    Si MVC peut cohabiter avec d’autres modèles, avec "ASP.Net MVC" on est clairement orienté web. Toutefois, il se pourrait que votre client vous dise: « Je veux réaliser les mêmes opérations de gestion sur mon Windows Phone ». Ou bien vous pouvez avoir besoin de développer une application console pour réaliser certaines opérations avec un batch.




    Mes questions :
    1. Quelles précautions prenez-vous pour être certain que votre logique métier est indépendante de l’interface?
    2. Est-ce que le controleur n'est pas à la vue ce que le code behind est à la page?
    Immobilis
    "Winter is coming" (ma nouvelle page d'accueil)

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut
    Citation Envoyé par Immobilis Voir le message
    J'avoue je suis plus "multicouche" que "MVC".
    L'un n'empêche pas l'autre

    MVC n'est qu'un pattern de Présentation, il ne dis pas comment il faut structurer ton domaine. Libre à toi d'utiliser une archi multicouche, DDD ou autre... Le comment construire le modèle que tu utilise dans ta structure MVC, le pattern ne le dit pas ^^

    1. Ben c'est simple la logique métier n'est pas dans mon application de présentation

    Pour te donner une idée voici une architecture DDD où la UI applique le pattern MVC.

    http://blogs.businesssoftwareengineering.com/?p=28

    2. le pattern MVC sert à séparer la présentation, les traitements et les données, donc si tes traitements étaient dans le code-behind le controller le remplace en ça
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  3. #3
    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
    Tu ne mets pas de logique métier dans tes contrôleurs?
    "Winter is coming" (ma nouvelle page d'accueil)

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut
    Citation Envoyé par Immobilis Voir le message
    Tu ne mets pas de logique métier dans tes contrôleurs?
    Non par définition du pattern non, voici la définition Wikipedia de MVC :

    The pattern isolates "domain logic" (the application logic for the user) from the user interface (input and presentation), permitting independent development, testing and maintenance of each (separation of concerns).
    Il n y a aucune raison pour que de la logique métier soit présente dans le controller ce n'est pas son rôle, son rôle est :

    The controller interprets the mouse and keyboard inputs from the user, informing the model and/or the view to change as appropriate.
    Tirer de : http://msdn.microsoft.com/en-us/library/ff649643.aspx
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  5. #5
    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
    Citation Envoyé par rad_hass Voir le message
    L'un n'empêche pas l'autre
    Dans une architecture multicouche, UI n'est pas sensé s'adresser directement au fournisseur de données (model du MVC). A moins qu'on considère que le model est une sorte de BLL + DAL. Sinon, cela parait difficile.
    Citation Envoyé par rad_hass Voir le message
    Non par définition du pattern non, voici la définition Wikipedia de MVC :
    Je trouve pas que l'article de Wikipedia soit génial. De plus, ASP.Net MVC implémente le modèle Front Controller (http://dotnet.developpez.com/mvc/ape...overview/#LC-A). Ca ne change pas forcement le fond, mais cela peut complexifier le modèle. Sinon,
    You have decided to use the Model-View-Controller(MVC) pattern to separate the user interface logic from the business logic of your dynamic Web application. You have reviewed the Page Controller pattern, but your page controller classes have complicated logic, are part of a deep inheritance hierarchy, or your application determines the navigation between pages dynamically based on configurable rules.
    Je serai quand même curieux de voir combien de projets intègrent la logique métier dans les contrôleurs.
    Citation Envoyé par rad_hass Voir le message
    Il n y a aucune raison pour que de la logique métier soit présente dans le controller ce n'est pas son rôle, son rôle est
    On est d'accord. Simplement, ce n'est pas super explicite dans la doc ni dans le modèles "out of the box" de VS.

    Si je comprend ce que tu dis, il faut créer des projets en plus du projet web pour implémenter la partie métier.
    "Winter is coming" (ma nouvelle page d'accueil)

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Points : 1 498
    Points
    1 498
    Par défaut
    Si je comprend ce que tu dis, il faut créer des projets en plus du projet web pour implémenter la partie métier.
    Exactement, pour une appli 3-tiers, mvc ne représente que la couche présentations.

    Je serai quand même curieux de voir combien de projets intègrent la logique métier dans les contrôleurs.
    Comme toujours entre la théorie/best practices et les fait , il y souvent un gros écart.

    En résumé aspnet.mvc ne sert qu'à faciliter le traitement des formulaires web, ne pas avoir de postbacks ou de viewState à gérer. De plus en aspmvc on écrit directement le html généré, ce qui facilite grandement le javascript ensuite.

    Si tu veux intégrer ta logique métier dans le controlleur ou dans le modèle, rien ne t'en empêche, comme en aspnet ou rien ne t'empêche de définir tes requêtes directement sur la page.

  7. #7
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Il y a aussi ce qui se passe dans les tutos/démos et la réalité. Bien souvent pour faire les démos de MVC, l'accès base se fait dans les controleurs et les vues sont des scaffoldings des entités EF. Par conséquent, on a pas le n-tiers
    Dans un vrai projet, ca ne se passe pas tout à fait comme ca (enfin j'espère).

  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
    Citation Envoyé par Nathanael Marchand Voir le message
    Il y a aussi ce qui se passe dans les tutos/démos et la réalité. Bien souvent pour faire les démos de MVC, l'accès base se fait dans les controleurs et les vues sont des scaffoldings des entités EF. Par conséquent, on a pas le n-tiers
    Dans un vrai projet, ca ne se passe pas tout à fait comme ca (enfin j'espère).
    Vu que je n'ai pas d'apriori sur MVC, j'essaye justement d'appliquer ce qu'on voit dans les tutos et démo. Du coup, je cerne mal l'intérêt de "ASP.Net MVC" face à un multicouche, des webforms avec un code behind ne faisant que de la mise en page.

    Le lien de rad_hass est intéressant et montre quelque chose de totalement différent de ce qu'on peut trouver ailleurs à propos de MVCD'ailleurs, les relations entre les trois parties du pattern montrées dans ce schéma ne correspondent pas trop au modèle originel.
    Sur http://baptiste-wicht.developpez.com...onception/mvc/
    Sur http://folk.uio.no/trygver/themes/mvc/mvc-index.html par Trygve M. H. Reenskaug lui-même.

    Je suis perplexe...
    "Winter is coming" (ma nouvelle page d'accueil)

  9. #9
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut
    Citation Envoyé par Immobilis Voir le message
    Je suis perplexe...
    Non tu devrais pas

    Citation Envoyé par Immobilis Voir le message
    D'ailleurs, les relations entre les trois parties du pattern montrées dans ce schéma ne correspondent pas trop au modèle originel.
    Car elle correspondent, cf cette image :



    Views et Controllers (en vert) sont dans le projet Web UI et ont les relations classiques du pattern MVC.

    Modèle en vert représente la troisième partie du pattern MVC et on voit qu'on retrouve les échanges classiques entre les trois parties Model View Controller
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  10. #10
    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
    Citation Envoyé par rad_hass Voir le message
    Modèle en vert représente la troisième partie du pattern MVC et on voit qu'on retrouve les échanges classiques entre les trois parties Model View Controller
    Dans ce schéma les liens ne sont pas très explicites.
    Il me semble que son architecture coupe les ponts entre la vue, le contrôleur et le model. En effet, ses objets CommandRequest et CommandResponse ne correspondent pas au objets réels de sont model. C'est la couche Service qui s'occupe du maping. Peut-on d'ailleurs assimiler cette couche à une BLL? Toujours est-il que je ne retrouve pas les échanges entre la vue et le modèle comme indiqué dans le schéma ci-dessous:

    Ai-je raté un truc?

    Merci

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  11. #11
    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
    Je viens de lire ce document: http://msdn.microsoft.com/en-us/library/ff647462.aspx

    Il explique comment implémenter MVC sur un projet WebForm. Je n'y vois qu'un projet mutlicouche standard. Etes vous d'accord avec cette implémentation et mon interprétation?

    Merci d'avance.
    "Winter is coming" (ma nouvelle page d'accueil)

Discussions similaires

  1. Sortie de Microsoft ASP.NET MVC Beta
    Par Jérôme Lambert dans le forum Général Dotnet
    Réponses: 17
    Dernier message: 06/11/2008, 23h12
  2. [ASP.NET MVC] C'est quoi ?
    Par DranDane dans le forum ASP.NET
    Réponses: 2
    Dernier message: 05/09/2008, 11h48
  3. ASP.NET MVC Preview 4
    Par hollywood dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 22/07/2008, 11h57
  4. Framework ASP.NET MVC
    Par superbobo dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 02/07/2008, 16h11
  5. ASP.NET MVC Preview 2
    Par cereal59 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 04/04/2008, 16h41

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