Architecture des Applications Réticulaires



Documents pareils
TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Web Tier : déploiement de servlets

Architectures Web Services RESTful

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Programmation Web. Madalina Croitoru IUT Montpellier

4. SERVICES WEB REST 46

Environnements de développement (intégrés)

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

Projet gestion d'objets dupliqués

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Point sur les solutions de développement d apps pour les périphériques mobiles

Architecture Orientée Service, JSON et API REST

Approche Contract First

les techniques d'extraction, les formulaires et intégration dans un site WEB

Module BD et sites WEB

Mise en œuvre des serveurs d application

SYSTÈMES D INFORMATIONS

Bases Java - Eclipse / Netbeans

Optimiser pour les appareils mobiles

Alfstore workflow framework Spécification technique

1. Installation d'un serveur d'application JBoss:

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

IFIPS 5 / Nouvelles Architectures Logicielles Projet : Bus de web services avec «moteur» BPEL

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

RAPPORT DE STAGE GWT PRISE EN MAIN SERVLET - TEST DES DAO TELOSYS PLUGIN ECLIPSE WIZARD DATASET TELOSYS

AJAX. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Applications et Services WEB: Architecture REST

LICENCE PROFESSIONNELLE

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Projet Android (LI260) Cours 2

Composants Logiciels. Le modèle de composant de CORBA. Plan

HTML. Notions générales

Création d une application JEE

W4 - Workflow La base des applications agiles

Architectures web/bases de données

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

Vulnérabilités et sécurisation des applications Web

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

TP JAVASCRIPT OMI4 TP5 SRC

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

Serveur d'archivage 2007 Installation et utilisation de la BD exist

EXTENSION de Microsoft Dynamics CRM Réf FR 80452

EXA1415 : Annotations

Introduction aux «Services Web»

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

Machines virtuelles Cours 1 : Introduction

Votre premier projet Android

JavaServer Pages (JSP)

Cours 1: Java et les objets

DOM - Document Object Model

Internet. DNS World Wide Web. Divers. Mécanismes de base Exécution d'applications sur le web. Proxy, fire-wall

Optimiser les performances d un site web. Nicolas Chevallier Camille Roux

Introduction à Eclipse

Compte Rendu d intégration d application

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

Utilisation de Jakarta Tomcat

TP1 : Initiation à Java et Eclipse

OpenPaaS Le réseau social d'entreprise

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Méthode de Test. Pour WIKIROUTE. Rapport concernant les méthodes de tests à mettre en place pour assurer la fiabilité de notre projet annuel.

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Ingénierie des Modèles. Méta-modélisation

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Créer une base de données vidéo sans programmation (avec Drupal)

- TP Programmation Android - NFA024 Conservatoire National des Arts et Métiers

BIRT (Business Intelligence and Reporting Tools)

Bonnes pratiques de développement JavaScript

Chapitre VI- La validation de la composition.

Catalogue des Formations Techniques

Cours en ligne Développement Java pour le web

CREATION WEB DYNAMIQUE

Le stockage local de données en HTML5

Apache Camel. Entreprise Integration Patterns. Raphaël Delaporte BreizhJUG

Les services usuels de l Internet

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

Tutoriel d installation de Hibernate avec Eclipse

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Intégration du Web 2.0 dans les solutions IBM

Machines Virtuelles. et bazard autour. Rémi Forax

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

TP1 : Initiation à Java et Eclipse

Celui qui vous parle. Yann Vigara

COMPRENDRE L ARCHITECTURE DES WEB SERVICES REST. Amosse EDOUARD, Doctorant

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Dojo Toolkit. Créer des applications AJAX/RIA en JavaScript. Thomas Corbière

Android 4 Les fondamentaux du développement d'applications Java

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. A308, Université de Paris 13

INGÉNIEUR - DÉVELOPPEUR EXPÉRIMENT É JAVA - J2EE. 27 ans - 5 ans d'expérience

Cours 1 : La compilation

Formation : WEbMaster

TP au menu «UI ANDROID»

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Projet de programmation (IK3) : TP n 1 Correction

Transcription:

Architecture des Applications Réticulaires Id : cours6.bk 76 2010-01-12 17 :07 :21Z queinnec Christian Queinnec Université Paris 6 Deuxième vague 2010-2011

UPMC NI584-2010nov c C.Queinnec 2/23 Plan 1 Approches modernes Tendances 2 3 Hop 4 Links 5 Ocsigen 6 Continuation 7 Conclusions

UPMC NI584-2010nov c C.Queinnec 3/23 Approches modernes Approches modernes Application web en un seul programme source, en un seul langage (il faut donc séparer ce qui tourne côté client ou côté serveur) Désir de plus de vérifications statiques (notamment que l XML engendré est valide vis-à-vis d une grammaire) Quelques réalisations : Hop Continuations, Rife Links, Xduce, Ocsigen

Modèles : classique ou Ajax Approches modernes évenement navigateur serveur informations réaffichage évenement navigateur éventuellement! serveur RPC informations réaffichage UPMC NI584-2010nov c C.Queinnec 4/23

UPMC NI584-2010nov c C.Queinnec 5/23 Google Widget Toolkit L application est écrite en Java Les parties à exécuter côté client sont regroupées dans un paquetage.../client/ et sont compilées en Javascript Bibliothèque d exécution en Javascript (JRE emulation library) avec les principales classes de Java (et leurs principales méthodes) et des widgets : java.lang.{boolean, Class, Number, Integer, StringBuffer, Math, System,... } et des exceptions et des interfaces java.util.{collections, Collection, Date, Vector, HashMap, HashSet, TreeMap,... } Button, TextBox, TextArea, CheckBox, Grid, FlexTable, MenuBar, PopupPanel...

UPMC NI584-2010nov c C.Queinnec 6/23 compilations Plusieurs compilations possibles pour test en local (pur Java) via l IDE pour tests JUnit avec navigateur externe (et serveur Tomcat) par type de navigateur (et par langue) par mode d obfuscation de Javascript Manipulation de l historique

UPMC NI584-2010nov c C.Queinnec 7/23 application Une série d outils (à la Catalyst ou Ruby on Rails) pour créer les squelettes des fichiers à modifier : projectcreator, applicationcreator, i18ncreator, junitcreator (connaissent Eclipse en plus). % applicationcreator -out. fr.upmc.aar.client.app src/fr/upmc/aar/app.gwt.xml src/fr/upmc/aar/client/app.java src/fr/upmc/aar/public/app.html App.launch App-shell App-compile

UPMC NI584-2010nov c C.Queinnec 8/23 App-shell (development mode)

UPMC NI584-2010nov c C.Queinnec 9/23 Mode de mise au point ou déploiement Eclipse JVM(32b) Tomcat client.app server.app logdebug Mozilla+swt appserver server.app navigateur client.js

UPMC NI584-2010nov c C.Queinnec 10/23 page de garde en XHTML <html ><head ><title >... </ title > <meta name = gwt : module content = fr. upmc. aar.app / </ head > <body ><script language = javascript src = gwt.js /> <iframe id= gwt_historyframe style = width :0; height =0; border :0 /> <div id= content ></ div > </ body ></ html >

UPMC NI584-2010nov c C.Queinnec 11/23 application client package fr. upmc. aar. client ; public class Appl implements EntryPoint { public void onmoduleload () { RootPanel. get (" content "). add (/* buttons, etc. */ ); } // autres methodes de renvoi ( callback ), etc. } Attention : Java 1.5 et JRE réduite mais widgets additionnels

UPMC NI584-2010nov c C.Queinnec 12/23 descripteur de l application < module > < inherits name = com. google. gwt. user. User /> <entry - point class = fr. upmc. aar. client. App /> <! -- et des tas d autres descripteurs -- > < servlet path = / myservice class = fr. upmc. aar. server. AServiceImpl /> </ module >

UPMC NI584-2010nov c C.Queinnec 13/23 RPC côté serveur package fr. upmc. aar. client ; public interface AService extends RemoteService { Date getdate (); Date getsomedate ( long time ); } package fr. upmc. aar. server ; public class AServiceImpl extends RemoteServiceServlet implements AService { public Date getsomedate ( long time ) { return new Date ( time ); } public Date getdate () { return new Date (); } } // et ajout dans src /fr/ upmc / aar / App. gwt. xml (cf. tran

UPMC NI584-2010nov c C.Queinnec 14/23 RPC côté client package fr. upmc. aar. client ; public interface AServiceAsync { void getdate ( AsyncCallback cb ); void getsomedate ( long time, AsyncCallback cb ); } // utilisation AServiceAsync proxy = ( AServiceAsync ). create ( AServ ServiceDefTarget target = ( ServiceDefTarget ) proxy ; target. setserviceentrypoint (. getmodulebaseurl () + " AsyncCallback cb = new AsyncCallback () { public void onfailure ( Throwable caught ) {... } public void onsuccess ( Object result ) {...} }; proxy. getsomedate (42, cb ); proxy. getdate (cb );

UPMC NI584-2010nov c C.Queinnec 15/23 RPC anatomie (d après Google)

UPMC NI584-2010nov c C.Queinnec 16/23 et Javascript Injection et couplage (dans les deux sens) à des bibliothèques Javascript tierces (JSNI Javascript native interface) public native int length ( List list ) /* -{ return list. @java. util. List :: length ()(); }-*/; Structure pour méthodes : objet.classe : :method(typearguments)(arguments) Structure pour champs : objet.classe : :champ ou classe : :champ pour champ statique Sans oublier $wnd et $doc pour les variables globales de Javascript : window et document.

UPMC NI584-2010nov c C.Queinnec 17/23 Conclusions sur Java 1.5 maintenant JUnit 3 seulement l an dernier, HTMLunit cette année RPC encore trop verbeux à utiliser pour mon goût pas incompatible d autres architectures logicielles Des compléments : Handler et Spring, Server Library (-WL)

UPMC NI584-2010nov c C.Queinnec 18/23 Hop Hop Application web en un seul programme source, en un seul langage Hop (Scheme) compilé vers Javascript et séparation fine entre code client et serveur Architecture avec un courtier (broker) intermédiaire entre le navigateur et Internet Compilation incrémentielle ou à la volée RPC synchrone (sérialisation par S-expression) Cf. transparents coordination09.sld ou MitchFest/coordination.sld de la weblet HopSlide (http://hop.inria.fr/)

UPMC NI584-2010nov c C.Queinnec 19/23 Links Links Application web en un seul programme Un seul langage pour client, serveur et base de données. Le langage est compilé vers Javascript ou SQL (et actuellement interprété côté serveur en OCaml) les fonctions sont annotées client ou server typé statiquement, purement fonctionnel (pas d affectation mais update en base possible) Côté base, langage à la LINQ Côté client, langage à la Erlang (processus et message asynchrone) Continuations stockées côté client

UPMC NI584-2010nov c C.Queinnec 20/23 Ocsigen Ocsigen Application web en un seul programme source OCaml. Vérification statique (par typage) de la génération d XML conforme à une grammaire (un certain type) [Dans la lignée d XDuce] Pas de compilation côté client Usage de continuations pour dialogues complexes cf. article

UPMC NI584-2010nov c C.Queinnec 21/23 Continuation Continuation ( let (( n1 ( read1stnumber ))) ( let (( n2 ( read2ndnumber n1 ))) ( displaysum n1 n2) ) ) ( define ( read1stnumber ) ( define ( create- page kurl ) ( html ( head ( title " First number?")) ( body ( form action : kurl " Un nombre SVP : " ( input type : text name : "n1") ( input type : submit value : "go!") ) ( let (( request ( show create- page ))) ( string- > number ( request-parameter-get request "n1") ) ) ) ( define ( show page- creator ) ( call /cc ( lambda (k) ( answer- then- wait ( page- creator ( register! k ))) )

UPMC NI584-2010nov c C.Queinnec 22/23 Continuations : avantages Continuation Écriture en style direct : continuations et fermetures assurent automatiquement le passage des informations d une page à l autre Complète maîtrise des dialogues en présence de Back et Clone Composabilité des applications Langage à continuations : Scheme. Il y a aussi des implantations qui procurent des continuations : SML/NJ, Rhino (Javascript), SeaSide (Squeak),... La transformation de programme CPS permet de convertir tout programme utilisant des continuations en un programme équivalent n en n utilisant point. Mais voir aussi Rife en Java.

UPMC NI584-2010nov c C.Queinnec 23/23 Conclusions Conclusions Pour l instant, seulement des tendances