IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Architecture en couches, découplage et injection de dépendances avec Unity


précédentsommairesuivant

II. L'application d'étude

II-A. Présentation

Nous allons concevoir une application affichant une liste de films. Celle-ci sera très peu complexe afin de bien nous focaliser sur les problématiques de cet article.
Nous allons afficher tous les films et l'utilisateur pourra filtrer par année et par pays.
Il y aura donc avoir plusieurs couches :

  • une couche d'accès aux données utilisant un stockage XML ;
  • une couche d'accès aux données utilisant un stockage sur SQL via Entity Framework (non traité dans un premier temps) ;
  • une couche de logique métier ;
  • une couche de services pour exposer des webservices ;
  • une couche de présentation console ;
  • une couche de présentation en ASP.Net ;
  • une couche de présentation en ASP.Net MVC3 ;
  • une couche de présentation en Silverlight.

Comme vous pouvez le remarquer, nous avons deux couches d'accès aux données. Celles-ci ne sont pas destinées à être utilisées simultanément, mais nous permettront de voir l'unity dans ces deux cas de figure.

II-B. Les entités manipulées

Une petite parenthèse dans cette section pour parler des entités manipulées. Ici, nous avons uniquement la classe Movie, mais dans une vraie application elles sont beaucoup plus nombreuses. Dans une architecture par couches, plusieurs pratiques existent :

  • partager les définitions de ceux-ci à travers toutes les couches (c'est ce que nous utiliserons) ;
  • utiliser une définition par couche (permet par exemple de découpler l'objet Business de l'objet stocké en base ou l'objet Business de l'objet envoyé à la couche présentation ou service). C'est une méthodologie assez lourde à mettre en place.

Nous allons donc définir cette classe dans un projet transverse.

II-C. Le code source de l'application

Le code source de l'application originale, disposée en couches découplées est disponible à ce lien.
Nous allons le détailler un peu pour avoir des bases solides pour la suite.

II-D. La couche d'accès aux données en XML

La couche utilise Linq-To-XML pour lire et écrire nos données dans un fichier XML.
La couche est composée de deux projets : le projet MovieBase.DataAccess.Interfaces qui contient le contrat de la couche DataAccess et MovieBase.XmlDataAccess qui contient une implémentation.

II-E. La couche métier

Ici la couche business n'a que peu de responsabilités. Lors d'une requête d'affichage elle vérifie les arguments, à l'insertion d'un film elle vérifie les données.
La couche est composée de deux projets : le projet MovieBase.Business.Interfaces qui contient le contrat de la couche Business et MovieBase.Business qui contient une implémentation.
On peut noter que pour fonctionner, elle a besoin d'une instance d'une couche d'accès aux données. Cette instance est passée en paramètre au constructeur, ça n'est donc pas elle qui se préoccupe de l'instanciation.

II-F. La couche de présentation en console

L'application est vraiment basique. C'est une boucle infinie qui affiche à l'utilisateur un menu et qui traite ses choix.
On peut noter que pour fonctionner, elle a besoin d'une instance d'une couche business. C'est la couche présentation qui instancie donc la couche business, mais aussi la couche d'accès aux données puisqu'elle est nécessaire également (passée dans le constructeur de la couche business).
On remarque que la séparation en couche n'est pas tellement coûteuse en volume de code et permet de bien factoriser notre code.


précédentsommairesuivant

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2011 Nathanael Marchand. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.