Informatique Mobile et synchronisation

35
Réf. : IVF/NO/0029 v. 1.0 © 2002 - Improve Introduction 1 Informatique Mobile et Synchronisation Sébastien Letélié Ingénieur d’études et de développement [email protected]

description

Cours Informatique mobile pour l'Ecole des Mines de Nantes

Transcript of Informatique Mobile et synchronisation

Page 1: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 1

Informatique Mobile

et

Synchronisation

Sébastien Letélié

Ingénieur d’études et de développement

[email protected]

Page 2: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 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

Page 3: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 3

Introduction

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

Page 4: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 4

L’évolution des terminaux

Assistantspersonnels

Livres électroniques

Jeux électroniques

Taille et poids

Puissance et mémoire

Terminaux voix

Terminaux données

Terminaux multimédias

1èreconvergence

Terminauxcible

PC Portables

PC de poche

PC

Le facteur de succès principal de l’Internet Mobile est l’ergonomie (Ubicco)

Téléphones mobiles

voix+données

LecteursmultimédiasCD - MP3,

DVD

Téléphones mobiles

voix

Téléphone multimédia

Page 5: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 5

Architecture mobile

diffusion

synchronisation

Serveurd’applications

XSLT

XSLT

XSLT

WAP / XHTML basic

iMode / XHTML basic

VoiceXML

XML

BD ’lite’BD de synchronisation

BD Serveur

SERVEUR

XSLT SyncML

Authentification

XMLP / SOAP

Page 6: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 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

Page 7: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 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

Page 8: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 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

Page 9: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 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

Page 10: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 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

Page 11: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 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)

Page 12: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 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 …

Page 13: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 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 …

Page 14: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 14

Environnement – J2ME

Page 15: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 15

Synchronisation

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

Page 16: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 16

Synchronisation

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

Page 17: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 17

Synchronisation

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

Page 18: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 18

Synchronisation

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

Page 19: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 19

SyncML

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 ?

Page 20: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 20

Spécification

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é

Page 21: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 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>

Page 22: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 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>

Page 23: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 23

PointBase

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

Page 24: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 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

Page 25: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 25

Comment ça marche ?

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

SyncDataSource

Serveur

SyncDataSource

Client

Une classe Hub coté serveur publie les tables synchronisables Une classe Spoke coté client souscrit à cette publication

Page 26: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 26

Publication

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

Page 27: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 27

Souscription

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())

Page 28: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 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

Page 29: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 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")

Page 30: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 30

Exemples (1) - Création d’un

Hub private static final String m_CDriver = "com.pointbase.jdbc.jdbcUniversalDriver"; private static final String m_CURL = "jdbc:pointbase://localhost:9092/hubdb"; private static final String m_CUser = "pbpublic"; private static final String m_CPassword = "pbpublic"; 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 } }

Page 31: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 31

Exemples (2) - Création d’un

Spoke 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"; 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 } }

Page 32: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 32

TP

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 » :

Page 33: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 33

TP

Modèle Objet

DBManager InfoSync

Parser

SyncMLHandler

SyncOperationsSyncOperation

HttpServlet

MIDlet

Vector

Info

Novinfo

Form

InfoForm

SyncAgent

startSync()

add() delete() update()

retrieveAll()

setDocumentHandler()

HttpConnection

SyncML

parse()

create() add()

getSyncOperations()

PointBase Micro DB

JDBC

Page 34: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 34

TP

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

Page 35: Informatique Mobile et synchronisation

Réf. : IVF/NO/0029 v. 1.0© 2002 - ImproveIntroduction 35

Référence

IMPROVE74/80, rue Roque de Fillol

92800 PUTEAUX

Mail : [email protected] : http://www.improve.fr

Informations techniqueshttp://www.application-servers.com

http://www.improve-technologies.comhttp://wireless.java.sun.com

http://www.syncml.orghttp://www.pointbase.com