Slideshare.net (beta)

 
Post: 
Myspace Hi5 Friendster Xanga LiveJournal Facebook Blogger Tagged Typepad Freewebs BlackPlanet gigya icons



All comments

Add a comment on Slide 1

If you have a SlideShare account, login to comment; else you can comment as a guest


Showing 1-50 of 0 (more)

Informatique Mobile et synchronisation

From sebmade, 3 months ago

Cours Informatique mobile pour l'Ecole des Mines de Nantes

204 views  |  0 comments  |  0 favorites  |  6 downloads
 

Tags

j2me syncml

 
 

Groups/Events

Not added to any group/event

 
 

Privacy InfoNew!

This slideshow is Public

 
Embed in your blog
Embed (wordpress.com)
custom

Slideshow Statistics
Total Views: 204
on Slideshare: 204
from embeds: 0* * Views from embeds since 21 Aug, 07

Slideshow transcript

Slide 1: Informatique Mobile et Synchronisation Sébastien Letélié Ingénieur d’études et de développement s.letelie@improve.fr Introduction 1 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 2: Plan de la présentation  Introduction  Évolution des terminaux  Architecture mobile  Environnement et développement  J2ME  Synchronisation  SyncML  PointBase UniSync  Présentation du TP Introduction 2 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 3: Introdu ction  Le développement d’applications mobiles est soumis à des problématiques  hétérogénéité des terminaux (écran de taille différentes, clavier ou pas, …)  hétérogénéité des OS  prise en compte des futurs coûts de communication (mode connecté / synchronisé / les 2)  Évolution du schéma client/serveur  Transcoding : XML/XSLT permet la diffusion multi- terminaux  Services Web : .NET et J2EE avec SOAP  des standards se mettent en place pour la synchronisation (syncML)  il est nécessaire d’uniformiser les développements Introduction 3 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 4: L’évolution des terminaux Puissance et mémoire PC Portables PC PC de poche Terminaux cible Livres Téléphone électroniques multimédia 1ère convergence Lecteurs Téléphones multimédias mobiles CD - MP3, voix+données DVD Terminaux multimédias Assistants personnels Jeux Téléphones mobiles électroniques voix Terminaux Terminaux voix données Taille et poids Le facteur de succès principal de l’Internet Mobile est l’ergonomie (Ubicco) Introduction 4 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 5: Architectur e mobile Authentification SERVEUR XSLT WAP / XHTML basic diffusion XSLT iMode / XHTML basic Serveur VoiceXML XSLT d’applications XSLT SyncML XML synchronisation XMLP / SOAP BD de BD ’lite’ synchronisation BD Serveur Introduction 5 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 6: Environnement et développement  Un environnement portable sur les terminaux mobiles est une nécessité  Environnement portable = Java  Sun ajoute à sa gamme une plateforme pour les appareils électroniques et terminaux intégrés : J2ME (Java 2 Micro Edition)  La technologie J2ME consiste en un ensemble d’API et de VM adaptées à ces terminaux  2 composantes principales  Configurations  Profils  + packages optionnels Introduction 6 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 7: J2ME concept  J2ME Configuration :  spécification d’une librairie de base (low-level API)  machine virtuelle optimisée  2 configurations : • CLDC (Connected Limited Device Configuration) • CDC (Connected Device Configuration)  J2ME Profiles :  spécification détaillant une collection d’API  basé sur une configuration  plusieurs profils : • Foundation Profile • MID Profile • Personal Profile • …  Un environnement J2ME est la combinaison d’une configuration et d’un profil Introduction 7 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 8: J2ME - CLDC  CLDC (Connected Limited Device Configuration)  terminaux à ressources et mémoire limitées  microprocesseur 16 ou 32 bits  160-512 Kbytes pour Java et ses applications  packages : java.lang, java.io, java.util  Machine virtuelle : KVM  incluse dans CLDC  K pour kilobytes  non adaptée pour le temps-réel  MID Profile implémente CLDC Introduction 8 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 9: J2ME - CDC  CDC (Connected Device Configuration)  créée pour la prochaine génération de terminaux  microprocesseur 32-bit  2 Mbytes ou plus de mémoire pour Java et ses applications  packages : java.lang, java.util, java.io, java.net, java.text, java.security  Machine virtuelle : CVM  incluse dans la CDC  gestion optimisé de la mémoire  sécurisé  multithreading  Foundation Profile implémente CDC Introduction 9 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 10: J2ME - Foundatio n  Foundation Profile  extension des API du CDC  socket, classe de localisation et d’internationalisation  complément des packages java.lang et java.io  les packages java.sql, java.beans, java.rmi ne sont pas présent  Il n’y a pas d’API graphiques, d’autres profils vont venir étendre le Foundation :  Personal Basis Profile  Personal Profile  Game Profile  Optional package : RMI, SQL, …  A terme les profils vont s’adapter aux différents terminaux Introduction 10 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 11: J2ME - MIDP  MIDP (Mobile Information Device Profile)  extension du CLDC  API pour l’interface utilisateur : javax.microedition.lcdui  API pour la persistance d’objets : javax.microedition.rms  API pour le réseau : javax.microedtion.io  MIDP application = MIDlet  comme pour une Applet, un MIDlet est contrôlé par un logiciel  l’Applet est contrôlé par un browser => le MIDlet est contrôlé par le support mobile (compatible CLDC/MIDP) Introduction 11 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 12: J2ME - MIDP  Cycle de vie d’un MIDlet  public void startApp() : démarrage du MIDlet, initialisation de l’interface (Display)  public void pauseApp() : MIDlet en attente, destruction des ressources partagées  public void destroyApp() : MIDlet terminé, destruction des ressources locales et partagées, sauvegarde des données persistantes, des préférences … Introduction 12 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 13: J2ME - MIDP  Les composants de l’UI  Display : écran principal  Form : composition d’éléments orientés formulaire  Alert : fenêtre d’alerte / boite de dialogue  List : liste de String, préfixées d’une image  TextBox : écran d’édition de texte  Item : éléments de différents types (String, TextField, DateField, Image …)  Canvas : objet de base pour créer des écrans  Command : encapsulation d’une action … Introduction 13 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 14: Environnemen t – J2ME Introduction 14 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 15: Synchroni sation  Théorie  la synchronisation est le processus qui compare des données issues de 2 bases modifiées de façon indépendante, pour recréer 2 bases identiques  3 solutions possibles : • duplication : copie des informations du serveur, sans journal de modification • réplication : copie des informations modifiées du serveur, le client ne peut que consulter • « 2 ways » : envoi et réception des informations modifiées réciproquement par le serveur et le client => problème de conflits d’informations  Pourquoi synchroniser ?  bandes passantes faibles  coûts de communication élevés  pas de garantie de services  canaux de communication non fiables Introduction 15 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 16: Synchroni sation  La problématique « 2 ways »  exemple : agenda partagé où 2 utilisateurs ont choisi un rendez-vous avec le même client à la même heure  2 solutions : • favoriser un utilisateur en fonction de priorités • les utilisateurs doivent résoudre le conflit  détection des conflits • GUID/LUID : les données possèdent un identifiant coté serveur et un identifiant coté client • journal des modifications • TimeStamp : identification des données modifiées • niveau de granularité : écrasement des données ou sélection individuelle  base miroir : déporter la problématique de conflits sur le serveur pour soulager la bande passante Introduction 16 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 17: Synchroni sation  Base de données mobiles  DataFiles : synchronisation avec le système de l’OS, mais faibles performances et petit volume de données  propriétaire à un IDE : performant au niveau développement mais utilisation dépendante de l’IDE  relationnelles : repose sur SQL, performantes, robustes, compatibles. Interfaçage avec JDBC ou ODBC mais client de synchronisation spécifiques la plupart du temps • IBM : DB2 Everyplace 8.1 • Oracle : OracleLite 9i • PointBase : PointBase Micro Introduction 17 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 18: Synchro nisation  Protocoles de synchronisation  HotSync de Palm  ActiveSync de Windows CE  EPOC Connect de Symbian  SyncML le standard  Serveur de synchronisation  StarFish TrueSync Server • http://www.starfish.com/solutions/data/server.html  XTNDConnect Server • http://www.extendedsystems.fr/ESIfr/default.htm  PointBase UniSync • http://www.pointbase.com Introduction 18 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 19: Sync ML  SyncML  standard pour uniformiser la synchronisation entre support mobile et serveur  Version 1.0 (Déc. 2000)  basé sur XML  supporte les protocoles HTTP, WSP, Obex  adopté par le 3GPP (3G Partnership Project)  demain : norme de synchronisation pour la téléphonie mobile ? Introduction 19 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 20: Spécifi cation  Spécification SyncML  Representation (format des données) et Synchronisation (commandes)  Structure • un « SyncML Package » englobe un ou plusieurs « SyncML Message » • un « SyncML Message » est un document XML constitué de 2 balises : <SyncHdr> et <SyncBody> • <SyncHdr> : entête définissant le routage et le versionning • <SyncBody> : corps du message composé de « SyncML Commands » (Add, Delete, Replace, Get, Put, Sync, Map, Search, Copy, Exec …)  Orientée PIM (Personal Information Manager)  Pas de sécurité Introduction 20 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 21: SynML Message  Exemple utilisé en TP  Header <SyncML> <SyncHdr> <VerDTD>1.0</VerDTD> <VerProto>SyncML/1.0</VerProto> <SessionID>1</SessionID> <MsgID>2</MsgID> <Target> <LocURI>myPDA</LocURI> </Target> <Source> <LocURI> http://127.0.0.1:8080/Novinfo/servlet/InfoSync </LocURI> </Source> </SyncHdr> Introduction 21 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 22: SynML Message  Exemple utilisé en TP  body <SyncBody> <Sync> <CmdID>1</CmdID> <Target><LocURI>infoDB</LocURI></Target> <Source><LocURI>serverDB</LocURI></Source> <Add> <CmdID>4</CmdID> <Meta><mi:Type>text/xml</mi:Type></Meta> <Item> <Source><LocURI>2021</LocURI></Source> <Data> <![CDATA[<info> <title>test</title> <content>l'info testé</content> <date>19/12/2001</date> </info>]]> </Data> </Item> </Add> <Delete> <CmdID>5</CmdID> <Meta><mi:Type>text/xml</mi:Type></Meta> <Item> <Source><LocURI>2022</LocURI></Source> </Item> </Delete> </Sync> </SyncBody> </SyncML> Introduction 22 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 23: Point Base  Fondée en 1998 par Bruce Scott, co-fondateur d’Oracle  Le slogan : l’information partout où vous la voulez !  Ensemble de 4 produits destinés à gérer les données d’entreprise :  PointBase Server : un RDBMS 100% Java pour les applications client/serveur à grande échelle (e-commerce, serveur d’applications …), intégrant JDBC, le transactionnel, et les connections multiples  PointBase Embedded : un RDBMS 100% Java pour les applications embarquées (genre agenda), intégrant JDBC, les connections multiples sur la même JVM  PointBase Micro : un RDBMS 100% Java pour les applications destinées au terminaux mobiles (PDA, téléphones), intégrant MIDP et une sous-classe de JDBC  PointBase UniSync : un framework de synchronisation bidirectionnel, pouvant s’interfacer avec des bases de données comme Oracle, MS SQL, intégrant la résolution de conflits et le filtrage de tables Introduction 23 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 24: PointBase UniSync  Permet de synchroniser des données entre des BDD compatibles JDBC  C’est une API qui se situe à la frontière entre JDBC et l’application cliente  3 types d’API sont disponibles suivant les plates-formes JAVA (J2EE, J2SE, J2ME)  Basé sur un modèle Publish/Subscribe client/serveur  Les données qui transitent sont encryptées  Utilise TCP/IP ou HTTP Introduction 24 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 25: Comment ça marche ?  Une classe Hub coté serveur publie les tables synchronisables  Une classe Spoke coté client souscrit à cette publication Serveur Client SyncDataSource SyncDataSource  Le SyncDataSource représente l’accès à la base de donnée compatible Java  Une classe SyncManager est appelée au démarrage pour configurer les SyncDataSource, les Hubs et les Spokes Introduction 25 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 26: Public ation  Une publication d’un Hub permet de diffuser  Toutes les tables de la base  Certaines tables  Certaines tables avec un filtre  Certaines colonnes de tables  Chaque publication est nommée, et c’est par ce nom que les souscriptions se soumettent  Le souscripteur ne peut synchroniser que sur les tables que la publication a diffusées Introduction 26 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 27: Souscr iption  Une souscription d’un Spoke permet  Récupérer les tables publiées (getSnapshot())  Récupérer les modifications faites coté serveur (getPointUpdate())  Mettre à jour les modifications locales (putPointUpdate())  Combiner les 2 points précédents (sync())  Un Spoke est créée en déterminant l’URL d’accès au Hub (saveHubURL()) Introduction 27 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 28: Détection et résolution de conflits (1)  4 types de conflits sont détectés :  UPDATE_UPDATE : 2 clients mettent à jour sur le serveur une même ligne  INSERT_INSERT : 2 clients insèrent une nouvelle ligne avec la même clé primaire  UPDATE_DELETE : un client met à jour une ligne supprimée par un autre  DELETE_UPDATE : un client supprime une ligne mise à jour par un autre  Un conflit n’est pas détecté si le deux clients mettent à jour une information similaire  2 niveaux de résolution :  Au niveau de la publication  Au niveau d’une table Introduction 28 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 29: Détection et résolution de conflits (2)  4 types de résolution :  CR_NONE • pas de détection de conflits, les mises à jour du client sont toujours valides  CR_SPOKE_WINS • détection du conflit, c’est le client qui impose sa mise à jour  CR_HUB_WINS • détection du conflit, c’est le serveur qui impose sa mise à jour  User-Defined • détection du conflit et appel d’un classe spécifique pour le résoudre  Exemples :  Résolution de conflit au niveau publication : • pub.setConflictResolver("CR_HUB_WINS")  Résolution de conflit au niveau table : • pub.setConflictResolver("PBPUBLIC.NameCard", "CR_HUB_WINS")  Résolution de conflit défini par l’utilisateur : • pub.setConflictResolver("PBPUBLIC.NameCard", "com.acme.MyConflictResolver") Introduction 29 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 30: es (1) - Créatio n d’un private private private private static static static static final final final final String String String String m_CDriver = "com.pointbase.jdbc.jdbcUniversalDriver"; m_CURL = "jdbc:pointbase://localhost:9092/hubdb"; m_CUser = "pbpublic"; m_CPassword = "pbpublic"; Hub private static final String PUB = "Pub1"; private static final String HUBNAME = "Hub1"; public void configureHub2() { try { // First get an instance of the SyncManager SyncManager l_SyncManager = SyncManager.getInstance(m_CURL, m_CDriver, m_CUser, m_CPassword); // Check if the Hub already exists Hub l_Hub = l_SyncManager.getHub(HUBNAME); if(l_Hub == null) { // Create the Hub from the SyncManager l_Hub = l_SyncManager.createHub(HUBNAME); l_Hub.startServer(); } // Publish specified tables String[] tableNames = new String[]{"SCOTT.TABLE1", "SCOTT.TABLE2"}; // Check if the Publication already exists Publication l_Pub = l_Hub.getPublication(PUB); if(l_Pub == null) { // Create a new Publication l_Pub = l_Hub.newPublication(PUB, SyncDataSource.DEFAULT, tableNames); // Save the Publication l_Hub.publish(l_Pub); } } catch(Exception e) { // Handle the exception here } } Introduction 30 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 31: es (2) - Créatio n d’un private static final String m_SDriver = "com.pointbase.jdbc.jdbcUniversalDriver"; private static final String m_SURL = "jdbc:pointbase://localhost:9093/spokedb"; private static final String m_SUser = "pbpublic"; Spoke private static final String m_SPassword = "pbpublic"; private static final String PUB = "Pub1"; private static final String SUB = "Sub1"; private static final String SPOKENAME = "Spoke1"; private static final String m_HubURL = "tcp://localhost:8123"; public void configureSpoke1() { try { // First get an instance of the SyncManager SyncManager l_SyncManager = SyncManager.getInstance(m_SURL, m_SDriver, m_SUser, m_SPassword); // Check if the Spoke already exists Spoke l_Spoke = l_SyncManager.getSpoke(SPOKENAME); if(l_Spoke == null) { // Create the Spoke from the SyncManager l_Spoke = l_SyncManager.createSpoke(SPOKENAME); // Save the URL to connect to the hub l_Spoke.saveHubURL(m_HubURL); } // Subscribe to Publication PUB. This should get all the SyncTables from the Publication // Check if the Subscription already exists Subscription l_Sub = l_Spoke.getSubscription(SUB); if(l_Sub == null) { SyncDataSource l_DataSource = l_SyncManager.getSyncDataSource(SyncDataSource.DEFAULT); // Get all the tablenames from schema "SCOTT" String[] tableNames = l_DataSource.getAllTableNames("SCOTT"); // Create a new Subscription l_Sub = l_Spoke.newSubscription(SUB, SyncDataSource.DEFAULT, PUB, tableNames); // Save the Subscription l_Spoke.subscribe(l_Sub); } // Get the full snapshot from the Hub l_Spoke.getSnapshot(SUB); } catch(Exception e) { // Handle the exception here } } Introduction 31 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 32: T P  Présentation du TP  Objectif : développer une classe Java qui accèdent via HTTP à un flux SyncML, interpréter ce flux et appliquer les commandes de synchronisation  L’application « Novinfo » : Introduction 32 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 33: T P HttpServlet Modèle Objet SyncML DBManager add() SyncAgent InfoSync delete() JDBC update() PointBase Micro DB HttpConnection Info parse() Parser retrieveAll() setDocumentHandler() Form MIDlet SyncMLHandler Vector getSyncOperations() create() add() InfoForm Novinfo SyncOperation SyncOperations startSync() Introduction 33 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 34: T P  Utilisation de PointBase Unisync  Remplacement de la tache précédente par une synchronisation entre client (spoke) et serveur (hub) PointBase  Création d’un interface MIDP  Ajout d’un composant de saisie d’une info Introduction 34 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0

Slide 35: Référ ence IMPROVE 74/80, rue Roque de Fillol 92800 PUTEAUX Mail : infos@improve.fr URL : http://www.improve.fr Informations techniques http://www.application-servers.com http://www.improve-technologies.com http://wireless.java.sun.com http://www.syncml.org http://www.pointbase.com Introduction 35 © 2002 - Improve Réf. : IVF/NO/0029 v. 1.0