Fondamentaux d'architecture d'une application Flex

Slides:



Advertisements
Présentations similaires
Master SIR (M2) Année Développement en environnement J2EE de Web services pour l'interopérabilité du projet CASTORE ce stage de fin d’étude a.
Advertisements

Réalisation d’un Framework pour la création de jeux d'arcades
Les Web Services Schéma Directeur des Espaces numériques de Travail
JEE 5 - JSF F.Pfister 2 institut eerie Les technologies du web Servlets JSP MVC Model 1 : servlets + JSP MVC Model.
- Formation Flex (Introduction)‏ - Formation Flex 1 1.
SOA et Services Web Dr. Rim Samia Kaabi 26 mars 2017.
Agenda de la journée 10h00 : La place dASP.NET dans la plate-forme Microsoft 10h30 : Développement rapide dapplications Web en ASP.NET 12h00 : Construire.
« Les Mercredis du développement » Introduction Office « 12 » Présenté par Bernard Fedotoff Microsoft Regional Director Agilcom.
Nouveautés pour les développeurs Office System Scott Burmester Responsable des programmes PSPS.
Plan Portlets La norme JSR-168 Qu'est-ce qu'une Portlet ?
Xavier Blanc Web Services Xavier Blanc
Première expérience d’utilisation des Web Services dans SmartTools Didier Parigot Projet OASIS INRIA Sophia www-sop.inria.fr/oasis/SmartTools Journée.
L’architecture .net et ASP.net
Exposé de Système - Informatique et Réseau
1 Les technologies XML Cours 1 : Les Web Services et Architectures Orientées Services Fé vrier Version 1.0 -
51 Les technologies XML Cours 7 : Utilisations dXML Janvier Version 1.0 -
Design Pattern MVC En PHP5.
Introduction aux services WEB
Sécurité Informatique
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Démarche Analyse des OGL et des Méthodes Objectifs : Activités :
Etude des Technologies du Web services
Communiquer avec ELYX.
XML-Family Web Services Description Language W.S.D.L.
JAVASERVER FACES Un framework Java pour le développement Web.
ASP.NET un peu plus loin… Développement Rapide dApplications Web avec.NET.
Développement Rapide dApplications Web avec.NET « Mon premier site »
Programmation Approche composants Ing5 SI
Projet JAVA EE Approfondi
Interaction audio sur le site web du LIA
Le Travail Collaboratif ...
ASP.NET Par: Hugo St-Louis. C ARACTÉRISTIQUES A SP. NET Évolution, successeur plus flexible quASP (Active Server Pages). Pages web dynamiques permettant.
.Net Remoting.
Atelier « Créations de sites » : Les techniques de réalisation de sites EPN :...
ADOBE FLEX 4. © Logica All rights reservedNo. 2 Introduction Flex en action Autour de Flex Logica Le programme.
Clients riches RIA (Rich Internet Application) / RDA
Architecture dun site de vente au détail1 Modèle d'un site simple de vente Lexemple du livre Ruby on Rails Partie II Java Adventure Builder Demo Réalisé.
PhP-MySQL Pagora 2012/2013 CTD 1 - Presentation de moi ^^
Développement dapplication avec base de données Semaine 10 : WCF avec Entité Framework Automne 2013.
Adaptée du cours de Richard Grin
J2EE vs .NET Réaliser par : SEIF ENNACER BADRA && CHETOUI RIM.
Patrons de conceptions de créations
1 journée, 5 sessions, 1 réalisation.NET Enterprise Realization Day.
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
LES CLIENTS WEB RICHES Tuteur : Olivier CARON LEFEBVRE Benoit
Mise en oeuvre et exploitation
CENTRALISATION DES CANDIDATS LOCATAIRES
1 Architecture orientée service SOA Architecture orientée service SOA (Service Oriented Architecture)
Content Management System CMS. Pourquoi ? Obligation de ressaisir des contenus publiés à plusieurs endroits Pas d’outils de gestion de qualité de l’information.
Découverte des Framework : SPRING & JAXB
AngularJS.
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
« Le plaisir du chercheur : retrousser les jupes de la nature » Jean Rostand Proposer une « Interface Homme Machine » en utilisant une technologie Client.
Metro Web Services Ben Yaflah Marouen Dhrif Mohamed Hbib Hajlaoui Nader.
Le web service
Mastère Professionnel Systèmes de Communication et Réseaux
Séminaire (6-12 Février 2007) Promo. M2 ESCE-Tunis 2006/07
Présentation du framework JSF (Java Server Faces) dans le modèle événementiel MVCII
Struts.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
L’enseignement de spécialité SLAM
Développement et design Web Awaves academy Stockholm 2006.
21/02/2003DEA DISIC 1 Grid Computing Programming the grid: Distributed Software Components, P2P and Grid Web Services for Scientific Applications Tarak.
Web Services 17/01/2009.
Apports des clients riches dans le monde du WEB 2.0
Présentation de Qt Iris 1
SOAP et les RPC XML SOAP WSDL RPC. Rappels sur le XML Langage avec des balises Très lisible Pour stocker des données Séparation entre contenu et présentation.
Réalisation d’un Framework pour la création de jeux d'arcades Groupe MUS-D : FHAL Jonathan KÖNIG Mélanie MAILLET Laurent MANESCHI Romain NOVAK Audrey Encadrant.
Parquet Geoffrey 3 ARIL EXIA.CESI ARRAS. Présentation du MLD Présentation de la persistance Présentation récapitulatif du projet JSP/SERVLET MVC Cycle.
Architecture J2EE Web Jean-Jacques LE COZ. J2EE Web Container JSP Page Servlet J ava 2 Standard Edition APIs EJB Container EJB JDBCJMS JNDI JTA JavaMail.
Transcription de la présentation:

Fondamentaux d'architecture d'une application Flex Adobe eSeminar - 06/06/08 David Deraedt Centre Regart.net

Introduction Comment organiser le code d'une application Flex ? Ne sont pas concernés : Démonstrations Exemples Très petites applications Généralement : Enjeu commercial Utilisateurs "réels" Durée de vie importante Travail en équipe (?)

Contraintes Constat : Maintenance > Développement initial Méthodes agiles = cycles courts, itératifs Faciliter : Modifications Tests / Débogage Travail en équipe Productivité

Bonnes pratiques Séparer les responsabilités Dans le code Dans l'équipe Limiter le couplage Indépendance Modularité Partager Informations (Méthodologie et terminologie, documents) Outils (factorisation, mutualisation)

Mise en oeuvre POO Encapsulation Polymorphisme Design patterns Architecture patterns Contexte technologique Flex = RIA = Couche présentation d'une architecture 3 tiers

Rich Internet Application Architecture 3 tiers        Rich Internet Application   Architecture RIA: Client s'exécute sur poste client Client conscient de son état, "stateful" Le client connaît les détails d'implémentation du serveur Architecture plus "client / serveur"

Rich Internet Application Répartition des rôles Client / Serveur Serveur d'application = règles métiers Client riche = relation à l'utilisateur Quelle architecture côté serveur ? Présentation : Client Riche Intégration : Business Objects via des Services Persistance (ORM) : VOs / DTOs, DAO, ActiveRecord, ...

Rich Internet Application

Rich Internet Application Le client (RIA Flex) communique avec : L'API du service (parfois, directement DAOs) Les VOs / DTOs Mais de quelle manière ?

Communication Avec Flex, deux familles d'outils : Communication temps réel Communication RPC asynchrone RPC : HTTPService WebService RemoteObject

HTTPService Requêtes HTTP(s) URLencoding, (couple identifiant/valeur voire XML) Script / Page ASP, JSP, PHP, ... Services REST Les données échangées ne sont pas typées. => Intérêt limité à de "petites" tâches individuelles - Upload de fichiers, création de fichiers, Proxies, etc... ou => JSON (typage des données)

WebService Au sens SOAP Envoie / reçoit SOAP (XML) Web Service Definition Language (WSDL) Echanges de quelques données "typées" : Types primitifs AS3 (Boolean, int, uint, Number, String, ...) Quelques types complexes du top level (Array, Date) Sérialisation/ Désérialisation côté Flex Pas de type personnalisé

RemoteObject Remoting : AMF : ActionScript Message Format = AS binaire HTTP(S) ou protocoles temps réél AMF3 = AS3 (Flex), AMF0 = AS1 + AS2 Spécifications ouvertes Avantages Performance (car binaire), cf Census Confort de développement car... Données typées Types primitifs Types complexes Top Level (selon passerelle) Types personnalisés : Value Objects ([RemoteClass]) ... = 100 % POO !

RemoteObject Inconvéniant : Nécessite une passerelle AMF3 côté serveur (Sérialisation / Désérialisation AMF3) Solutions gratuites et OpenSource pour toutes technos J2EE : BlazeDS, WebORB, GraniteDS, LCDS(ES) .NET : Fluorine, WebORB PHP : AMFPHP, WebORB, SABREAMF ROR : RubyAMF, WebORB Python : PyAMF Perl : ?

 

Architecture côté Flex A priori : hiérarchie de composants MXML. Sommet de la pyramide = Document principal (Application, WindowedApplication, Module) Les composants : Représentent les données graphiquement Reçoivent l'interaction utilisateur => C'est la vue d'un MVC Ces vues peuvent elles être indépendantes ? Qui va s'occuper du reste (logique de l'application) ?

Indépendance des composants Permise par 2 Mécanismes fondamentaux : DataBinding = Mise à jour des données automatisée (Model -> View) Evénements = Transmission l'interaction utilisateur (View -> Controller) Note : attribut source de la balise Script "Code Behind" purement formel => Insuffisant

Limites du framework Flex Cas classique : le document principal gère toute la logique de l'application ! Conséquence : Vues bien découplées Reste de l'application très monolithique (code spaghetti) Conclusion: Reste la solution la plus simple pour de "petites" applications Très vite limité

Un MVC côté Flex  

Un MVC côté Flex : Le modèle Stocke les données Ne sait pas comment elles sont représentées C'est l'état de notre application Aucune logique (sauf accès aux données) Souvent, simple liste de propriétés publiques VOs, ArrayCollections Tout est "Bindable"

Un MVC côté Flex : Le modèle  

Un MVC côté Flex : Le contrôleur Cerveau de l'application Logique entre vue et modèle Ecoute les événements diffusés par les vues Met à jour le modèle Ne connaît rien des vues Design pattern "Command" Déléguer les tâches à des objets (Commands) Command = logique derrière une User Gesture Permet de traiter chaque tâche comme un objet (historique, undo, ...)

Un MVC côté Flex : Le contrôleur  

Un MVC côté Flex : Le contrôleur Problème de fond : Comment faire remonter les événements vers un Contrôleur ? Bubbling : s'appuie sur la display list (pas suffisant) Remonter parent par parent : clone(), dispatchEvent(event) => Difficile de faire quelque chose de propre ET standard

Un MVC côté Flex : Le contrôleur  Parfois, besoin de mettre à jour une vue dans une commande Problème : Le contrôleur ne doit rien savoir de la vue Solution : Diffuser un événement écouté par un tiers qui, lui connaît la vue. (View Helpers, View Controlers ...)

Un MVC côté Flex : Le contrôleur  

La couche métier Les commandes doivent communiquer avec le Service Risque de couplage entre les deux Déléguer à un objet la communication avec le Service Le "BusinessDelegate" : Expose l'API du Service en AS3 Encapsule l'implémentation de sa communication Transmet le résultat à un Responder (Command) Avantages Découplage entre Command et Service Typage, Intelliscence

La couche métier  

Vue d'ensemble

Remarques Peut paraître abstrait et compliqué, mais Beaucoup de classes sont très simples Toutes les classes sont courtes et lisibles Pas nécessaire de tout utiliser Concerne la majorité des applications Méthodologie et terminologie commune Adapté aux méthodes agiles / itératives De plus, des outils peuvent nous aider Frameworks d'architecture Générateurs de code

Les frameworks d'architecture Ce sont des bibliothèques tierces (.swc) Pas indispensables... Mais difficile de faire sans ! Les deux cas les plus communs : Cairngorm PureMVC

Cairngorm Framework d'architecture Flex Créé par Adobe Consulting S'inspire des core patterns J2EE Le plus utilisé Implémentation Modèle : ModelLocator (Singleton) Type d'événement : CairngormEvent Pattern FrontController / Command ServiceLocator BusinessDelegate optionnel

Cairngorm Problèmes Difficile de faire communiquer Commandes et vues Risque de couplage des vues avec Cairngorm (event.dispatch()) Pas terrible avec les Modules Trop de Singletons => problèmes de tests Documentation faible Notes Beaucoup de ressources sur le Web Générateurs de code Cairngorm Extensions (Universal Minds)

PureMVC Framework AS3 (pas Flex, ni Flash) Créé par Cliff Hall Existe pour d'autres technologies Documentation de qualité et communauté active Implémentation Modèle : Proxies Contrôleur : Façade et Commands Evénements : Notifications Vues : Mediator

PureMVC Problèmes Pas de DataBinding entre Modèle et Vues Modèle événementiel non standard Plus de travail de Cairngorm Souffre de son éloignement vis-à-vis du framework Flex

Conclusion Privilégier une approche pragmatique Ne pas essayer d'appliquer une solution avant d'avoir rencontré le problème Ne pas avoir peur de la quantité de code : cela peut s'avérer rentable au final S'appuyer sur des techniques qui ont fait leurs preuves plutôt que de réinventer la roue Connaître un minimum Flex avant d'essayer les frameworks d'architecture Commencer par Cairngorm avant PureMVC

Questions / Réponses David Deraedt - Flex My Day http://www.dehats.com Centre de formation Regart.net http://www.regart.net Remerciements Lovely Charts http://www.lovelycharts.com