Technologies

L’évolution des frameworks MVC…

Publié le : Auteur: Abdenour BOUATELI 3 commentaires
technologies

Introduction

Avec  l’évolution des technologies et l’apparition des mobiles et tablettes, les frameworks implémentant le pattern MVC ont également évolués en fonction de ces  technologies.

Le Modèle-Vue-Contrôleur (en abrégé MVC, de l’anglais Model-View-Controller)  est une architecture et un patron de conception qui organise  l’interface homme-machine (IHM) d’une application logicielle.

Ce pattern divise l’IHM en  trois composants :

  • un modèle (modèle de données),
  • une vue (présentation, interface utilisateur)
  • et un contrôleur (logique de contrôle, gestion des évènements, synchronisation)

Dans cet article, nous allons découvrir l’évolution de ce pattern MVC  à travers des technologies NTIC les plus utilisées : Java/JEE, RIA, C#/DotNet et Mobilité (Android,…)

Rappel de la cinématique du MVC

  • L’utilisateur émet une requête
  • Le contrôleur intercepte la requête de l’utilisateur
  • Le contrôleur détermine quelle partie du modèle est concernée et quelle vue y est associée
  • Le modèle traite les interactions avec les données, applique les règles métier et renvoie les données au contrôleur
  • Le contrôleur sélectionne la vue et y renseigne les données
  • La vue présente les données à l’utilisateur

Evolution des technologies de l’information et de la communication

Web1.0 (JSP, PHP,…), Java/JEE léger

A l’époque des applications Web, il n’est pas rare que le développeur soit tenté de mettre du code de traitement dans les composants de présentation (JSP, PHP …). Certains composants facilitent même ce genre de développement.

Le MVC impose cette séparation en trois composants :

  • un modèle (modèle de données),
  • une vue (présentation, interface utilisateur)
  • et un contrôleur (logique de contrôle, gestion des évènements, synchronisation)

On parle également du MVC2, Struts se révèle très adapté, mais c’est exactement le même modèle de conception à la différence qu’il n’y a plus qu’un seul contrôleur qui se charge de rediriger la requête vers le bon traitement.

mvc

http://baptiste-wicht.developpez.com/tutoriels/conception/mvc/

Java lourd (SWT/JFace, Swing)

Et oui, le framework MVC s’applique aussi sur un client lourd, comme Swing. Il suffit juste de le combiner avec des patterns (observer+observable).

Ce qui donne l’implémentation suivante :

  • la Vue implémente un interface java Observer,
  • le Modèle étend la classe java Observable,
  • le Contrôleur implémente un Listener.

img_mvc_swing

http://perso.telecom-paristech.fr/~hudry/coursJava/interSwing/boutons5.html

On remarque que le modèle ne connaît ni la vue ni le contrôleur, que la vue connaît le modèle, que le contrôleur connaît la vue et le modèle.

Web2.0, les RIA (Adobe Flash, Silverlight…)

Il faut distinguer des RIA proches de Java, comme Flex, et ceux qui sont proches du C#, comme Silverlight.

Silverlight 4 et Blend 4 RC

Dans ce cas, on utilise un framework dénommé « MVVM » : Model, View et ViewModel.

Le MVVM est un principe de conception et d’organisation qui sépare le développement d’applications RIA en trois catégories :

  • Modèle,
  • Vue
  • et Vue-Modèle.

De cette manière, le code et le design d’une application sont totalement découplés et il est plus facile de les faire évoluer. Concrètement le développeur mettra à disposition du designer des appels de méthodes dans Vue-Modèle, qui est une abstraction de la vue d’un point de vue Modèle, qui seront très simple à appliquer sur des composants présents dans la vue.

img_mvvm

http://blogs.msdn.com/b/stephgou/archive/2011/09/29/de-la-decouverte-a-la-maitrise-du-pattern-m-v-vm.aspx

Autre RIA (Adobe Flash,…)

Généralement, le modèle est représenté par un web service (REST, SOAP), par conséquent le MVC reste limité.

Une exception cependant : PureMVC est un framework permettant de créer des applications basées sur l’architecture Modèle-Vue-Contrôleur. D’abord implémenté dans le langage ActionScript pour être utilisé avec Adobe Flex, Flash et AIR, ce framework a été porté sur la plupart des plates-formes de développement utilisées dans l’industrie.

img_puremvc
http://active.tutsplus.com/tutorials/workflow/understanding-the-puremvc-open-source-framework/

Les technologies mobiles (Android…)

Le MVC reste toujours faisable dans le développement des applications mobiles et tablettes, comme Android.

img_mvc_android
http://www.mobilab.unina.it/tesi/TESI_V.D.Cuccaro.pdf

Un autre framework plus avancé appelé AVA (de l’anglais Adapter-View-Activity) s’est imposé dans ce domaine :

  • View joue le rôle d’une vue,
  • Activity joue le rôle d’un contrôleur,
  • Adapter joue le rôle d’un orchestrateur de données depuis un modèle.

img_mva_android
http://www.mobilab.unina.it/tesi/TESI_V.D.Cuccaro.pdf

Conclusion

Le MVC organise bien le développement et la maintenance du code, il facilite même la refonte et la modernisation du SI. Cependant, un tel modèle de conception se révèle très performant surtout sur de gros projets et/ou avec de grandes équipes de développements.

Aujourd’hui, il existe des frameworks très avancés qui se basent sur le MVC ou le MVC2.

Enfin, l’utilisation de ces frameworks facilite la mise en place du pattern MVC et cadre sa réalisation.

  • Vincent Hanniet

    C’est une bonne idée de billet Abdenour. Effectivement « MVC » est un pattern, donc il est indépendant des technologies. Le fait qu’il évolue au fur et à mesure de la pratique montre également qu’un pattern vaut pour un contexte donné. Si on prend un famille de contextes similaires il n’est pas illogique qu’on arrive sur… Une famille de patterns tous issus d’un même père.

  • MVC

    Ceci dit il n’y a malheureusement pas beaucoup de clients qui sont en vrai modèle MVC2. Ce qui rend les développement assez complexes. (Et allonge les missions par la même occasion.). Ce pattern devrait devenir la norme pour tout développement applicatif.

  • Pingback: Thibaudse | Pearltrees()