• Aucun résultat trouvé

Structure de l’application

2. Présentation du projet

4.2. L’application

4.2.1. Structure de l’application

Bien que l’objectif principal d’une application soit de répondre au besoin exprimé par le client, il est également nécessaire que l’application remplisse d’autres critères tels que :

 avoir une interface homme-machine (IHM) intuitive  avoir des temps de réponses satisfaisants

 gérer la validité des saisies de l’utilisateur

 prendre en compte les contraintes de confidentialité  gérer de façon claire les erreurs éventuelles

L’application doit être développée pour faciliter la maintenance et les potentielles évolutions, d’où le choix d’une architecture MVC et d’une structure modulable. La modularité de l’application est assurée par la mise en place de couches applicatives responsables chacune de fonctionnalités clairement identifiées.

IHM

Contrôleurs

BLL

Vue Modèle

Application ExtJS

ASP.NET MVC

AJAX

DAL

L’interface homme-machine :

Les applications Web doivent permettre une facilité d’utilisation que l’on retrouve dans des applications de bureau classiques. On appelle cela des applications Internet riches (RIA).Dans les RIA, une partie des traitements normalement effectués côté serveur sont faits du côté client. Le langage JavaScript a notamment été conçu dans cet objectif. La bibliothèque ExtJS de Sencha, retenue pour l’application, présente les caractéristiques demandées à une plate-forme JavaScript (système de mise en page performant pour gérer la disposition des composants, système de classe permettant d’organiser le code et d’étendre les composants, documentation de qualité) et implémente l’architecture MVC en fournissant des classes de bases pour utiliser les modèles, les vues et les contrôleurs.

Les composants JavaScript de l’IHM communiquent avec le serveur Web via des requêtes AJAX en format JSON. AJAX (Asynchronous JavaScript And XML) est une méthode de développement web basée sur l'utilisation d'un script JavaScript pour effectuer des requêtes web à l'intérieur d'une page web sans recharger la page. AJAX rend plus interactifs les sites web et offre une meilleure ergonomie ainsi qu'une réactivité améliorée en permettant de modifier interactivement une partie de l'interface web seulement. JSON (JavaScript Objet Notation) est un format d’écriture des données JavaScript. Son avantage est de fournir un support pour une écriture simple et légère au format texte, relativement compréhensible par les développeurs JavaScript.

La couche IHM effectue des contrôles simples (champ obligatoire, saisie incorrecte) afin d’éviter de faire des appels au serveur qui entraineraient forcément un échec. Les erreurs sont notifiées à côté du champ concerné ou dans une pop-up si c’est un message plus complexe à afficher.

Pour éviter les doubles envois de formulaires pouvant entrainer un double traitement par le serveur, l’IHM est bloquée jusqu’à la fin du traitement côté serveur.

Un cache local est mis en place pour stocker les données du contexte utilisateur (droit d’accès, restrictions) et pour stocker des couples clé/valeur des tables de référence afin de simplifier les requêtes.

Les contrôleurs :

Les contrôleurs mettent à disposition des composants de l’IHM différentes actions : lecture, création, mise à jour, suppression, ou autre fonctions utiles.

Ils s’occupent :

 de convertir le message JSON fourni par l’IHM en objet métier et d’appeler la méthode de service demandée

 de fournir la réponse au format JSON à l’IHM une fois la méthode exécutée, en convertissant si besoin les objets retournés par la couche de service

De manière générale, la conversion JSON/Objet C# se fait par les mécanismes de sérialisation et désérialisation.

La couche service (BLL) :

La BLL (Business Logic Layer) est généralement une sorte de façade fonctionnelle pour l’application : elle centralise et porte l’accès aux règles métiers. Les méthodes de service appellent, au sein d'une transaction, les différentes méthodes de la couche d'accès aux données. En cas d’erreur l’ensemble des traitements doivent être annulés.

En cas de traitements longs et complexes, nous pourrons veiller à limiter les allers retours avec la base de données en regroupant des traitements via une procédure stockée.

La couche d’accès aux données (DAL) :

La DAL (Data Access Layer) n’est connue que de la BLL. En aucun cas les autres couches de l’application ne doivent posséder de référence vers la DAL. La couche d’accès aux données effectue directement les requêtes SQL. Néanmoins en cas de traitement long ou complexe l’utilisation de procédures stockées est envisagée. Il sera toujours fait usage de requêtes paramétrées afin d’éviter les problèmes d’injection SQL.

Dans le cas de notre application, l’utilisation de SQL Serveur permet la mise en place de la gestion optimiste avec un champ de type Timestamp. Lors d’une mise à jour, on vérifie alors si ce champ a été modifié depuis la lecture des données. S’il n’a pas été modifié, la mise à jour est effectuée, sinon un message est affiché à l’utilisateur.

Les requêtes SQL seront écrites directement au sein de la couche d’accès aux données. L’usage des procédures stockées n’est pas souhaité. Néanmoins elles pourront être utilisées ponctuellement par soucis de performance par exemple.

Les Vue-Modèles :

Une vue modèle, comme son nom l’indique, permet de faire le lien entre un modèle et une vue. La vue modèle peut convertir et manipuler les données du modèle afin qu’elle soit facilement utilisées par la vue. La vue modèle gère les interactions entre la vue et le modèle et peut également implémenter la validation des données. C’est via la vue modèle que nous faisons passer les informations du côté client (JavaScript) au côté serveur (C#) et inversement.

Documents relatifs