Sistemi Mobili M - Università di Bologna
Transcript
Sistemi Mobili M - Università di Bologna
Sistemi Mobili M Università di Bologna CdS Laurea Magistrale in Ingegneria Informatica II Ciclo - A.A. 2010/2011 Corso di Sistemi Mobili M (6 cfu) 05 – Principi di Design per Mobile Middleware e Applicazioni Mobili Docente: Paolo Bellavista [email protected] http://lia.deis.unibo.it/Courses/sm1011-info/ http://lia.deis.unibo.it/Staff/PaoloBellavista/ Principi Mobile Middleware - Sistemi Mobili M 1 Evoluzione dei Sistemi e dei Servizi Mobili 1st generation (1990-1999) Messaggi di testo (SMS) e forme limitate di accesso mobile a dati; banda massima attorno a decine di Kbps 2nd generation (1999-2003) Browser Web limitati, WAP, iMode e MMS; banda massima fino a 144Kbps 3rd generation (2003-2008) Piattaforme mobili, cosiddetti servizi di middleware; terminali con Symbian Series 60, J2ME, Android, iPhone, ...; banda massima fino a diversi Mbps 4th generation (2008-...) Servizi adattativi, interfacce utente adattative, protocolli adattativi; context awareness, connettività continua; banda massima fino a centinaia di Mbps Principi Mobile Middleware - Sistemi Mobili M 2 Evoluzione dei Sistemi e dei Servizi Mobili revenue Social sites, media portals Stores and Web pages SMS ringtones, logos WAP Ringtones Java portals On-demand and streaming video Advanced browsers Full music and video streaming Full music streaming Music downloads Music clips Monophonic Polyphonic Master tones time Principi Mobile Middleware - Sistemi Mobili M 3 Mobile Middleware Gestione di tanti aspetti, non strettamente applicationspecific, in particolare della mobilità, è un problema complesso. Ad esempio, mobilità di: Reti Nodi Connessioni di trasporto Sessione Oggetti (passivi, attivi) Servizi Utenti Molte soluzioni necessarie, a livelli multipli (link, rete, trasporto, applicazione) e cross-layer Soluzioni di mobile middleware per indicare tutte le soluzioni di supporto tipicam. collocate dal livello 4 OSI in su Principi Mobile Middleware - Sistemi Mobili M 4 Middleware Termine “popolare” e largamente usato, talora anche in maniera parzialmente imprecisa e un po’ fuzzy Una possibile definizione: “A set of service elements above the operating system and the communications stack” Una definizione alternativa “Software that provides a programming model above the basic building blocks of processes and message passing” (Colouris, Dollimore, Kindberg, 2001) Noi useremo definizione di stack software di supporto, tipicamente cross-layer e application-agnostic, che si occupa di problematiche per livelli OSI >= 4 5 Principi Mobile Middleware - Sistemi Mobili M Perché Necessità di Middleware? Sviluppo di applicazioni distribuite come processo complesso e timeconsuming Ogni sviluppatore si deve occupare di fare coding from scratch dei suoi protocolli per servizi di nomi, transazioni, ...? Come gestire inevitabile eterogeneità degli ambienti di esecuzione? diverse applications divergence transport layer (TCP/IP) Necessità di middleware Per riduzione tempo di sviluppo e rapid prototyping Per semplificare sviluppo di applicazioni e ridurne i costi Per supportare ambienti eterogenei, mascherando in parte differenze a livello di linguaggio/OS/hardware Principi Mobile Middleware - Sistemi Mobili M convergence diverse physical layers hourglass model 6 Chi Beneficia di Mobile Middleware? Utenti finali Anche se l’obiettivo del middleware non è di interagire direttamente con utenti finali, supporto ad applicazioni e servizi visibili agli utenti. Quindi middleware con API e meccanismi adeguati per gestire differenti tipologie di guasti ed errori runtime, oltre che per supportare enhanced usage experience Produttori di dispositivi Middleware per fornire funzionalità avanzate ed estese che poi si interfaccino a basso livello con driver di dispositivo Internet Service Provider Middleware per monitoraggio e amministrazione di rete Fornitori di piattaforme middleware Sviluppo di piattaforme middleware che si integrano con differenti sistemi operativi Application Service Provider Middleware per facilitare sviluppo e deployment di applicazioni in modo veloce, scalabile e a basso costo Principi Mobile Middleware - Sistemi Mobili M 7 Obiettivi ed Elementi Chiave Accessibilità e Reachability Risorse devono essere comunque disponibili e accessibili per utenti finali in modo non legato alla locazione corrente (di utenti e risorse). Supportate oggi in modo completo? Vogliamo veramente trasparenza completa? Adattatività Servizi mobili e loro utilizzo avvengono in ambiente soggetto a cambiamenti runtime; devono adattarsi dinamicamente all’ambiente operativo Appropriato livello di fiducia (trust) Deve essere gestito un appropriato livello di trust fra le entità interagenti in modo tale che operazioni siano svolte in accordo ad aspettative. Contratti? Come ottenere trust decentralizzato? Universalità Possibilità di accesso universale a dati come per Web su rete Internet tradizionale Principi Mobile Middleware - Sistemi Mobili M 8 Mobile Middleware Middleware tradizionalmente progettato e implementato per host di rete fissa Larga banda, bassa latenza, comunicazioni affidabili Storage persistente, buone capacità computazionali, nessun problema consumo energetico No mobilità Ambienti mobili richiedono soluzioni middleware nuove Middleware esistenti non adatti a dispositivi limitati e non sempre scalabili Obiettivi di mobile middleware: fault-tolerance, adattatività, supporto eterogeneità, scalabilità, condivisione risorse Principi Mobile Middleware - Sistemi Mobili M 9 Mobile Middleware Mobile middleware Contesto cambia dinamicamente Necessità di disaccoppiamento in spazio e tempo Eventi asincroni, spazi di condivisione dati Soluzione base in molti casi di wireless computing Utilizzo di proxy Inoltre, fornitura di un qualche livello di visibilità delle condizioni ai livelli sottostanti (si parla talora di reflective middleware) Trasparenza alla locazione in RPC/RMI In ambienti mobili, parziale visibilità di cambio di locazione, modifiche in livelli QoS disponibile, ... Principi Mobile Middleware - Sistemi Mobili M 10 Principi e Pattern Principio come forte convinzione in un certo stato o proprietà di un soggetto Principi supportano formazione di regola o norma tramite osservazione del soggetto a cui si applicano Principi hanno caratteristica di minimalità; non possono ulteriormente essere decomposti Pattern come schemi di soluzione che hanno dimostrato di funzionare e lavorare bene in diverse situazioni con caratteristiche comuni Classificati in gruppi differenti sulla base del loro livello di astrazione Architectural pattern per progetto architettura di soluzione Design pattern per strategie di progetto languageindependent, tipicamente object-oriented Idiomi per aspetti di buone soluzioni (best practice) a livello di utilizzo linguaggio di programmazione 11 Principi Mobile Middleware - Sistemi Mobili M Pattern Info importanti per definizione di pattern: Nome pattern: nome “informative” che faccia da identificatore unico per il pattern Intent: obiettivo del pattern e ragioni per il suo utilizzo Motivation: presentazione sintetica del problema a cui pattern si applica, utilizzando uno scenario di esempio Applicabilità: ambiente operativo e contesto in cui pattern può essere applicato efficacemente Struttura: struttura del pattern, rappresentata secondo diverse modalità e convenzioni grafiche Collaborazione: come i vari elementi che costituiscono il pattern (tipicamente classi e oggetti) interagiscono fra loro Conseguenze: risultati attesi dall’utilizzo del pattern Implementazione: descrizione di una possibile implentazione pratica del pattern proposto Casi di utilizzo noti e altri pattern correlati: esempi pratici di come pattern sia stato applicato in sistemi reali Principi Mobile Middleware - Sistemi Mobili M 12 Definizioni di Architettura e Piattaforma Una architettura è guidata da principi e fondata su scelte di design derivanti da pattern architetturali; è costituita da componenti, e dalle regole/vincoli che governano relazioni fra componenti Piattaforma come realizzazione concreta di una architettura middleware Un protocol stack è una realizzazione concreta di un insieme di protocolli e di un’architettura per il loro utilizzo (tipicamente strutturata a livelli, come nello stack OSI) 13 Principi Mobile Middleware - Sistemi Mobili M Principi Internet Principio End-to-End Nella sua espressione originale, riferita all’opportunità di mantenere stato e intelligenza solo sui bordi (edge) della rete Internet connette tali bordi senza mantenere stato, per avere massima efficienza e semplicità Oggi nel mondo reale: firewall, NAT, cache per contenuto Web. Modifiche rilevanti a questo principio generale Verso Trust-to-Trust principle (logica applicativa eseguita sempre su nodi fidati)? Principio di Robustezza “Be conservative in what you do, be liberal in what you accept from others” (attribuito a Jon Postel, RFC 793 Transmission Control Protocol) Sviluppatori di stack Internet dovrebbero attenersi scrupolosamente a quanto specificato in RFC esistenti nella realizzazione loro funzionalità, ma essere pronti a processare in modo lasco e ad accettare input non conforme proveniente da altri (non consistente con RFC esistenti) Principi Mobile Middleware - Sistemi Mobili M 14 Principi Web Principi alla base del Web seguono le linee guida di quelli alla base dello stack TCP/IP sottostante Semplicità, modularità, decentralizzazione e robustezza In particolare, relativamente ad accesso, rappresentazione dati e loro trasformazione per risorse Web: Principio dell’applicazione di least powerful language per realizzazione di ogni funzionalità (massima accessibilità e meccanismo URL) Problema essenziale e riconosciuto del mantenimento dello stato per interazioni stateful. Ad es. Representational State Transfer (REST), basato su URI, HTTP, XML Client-server, stateless, cacheable, a livelli Condivisione interfaccia uniforme per trasferimento di stato fra cliente e risorsa (insieme limitato di operazioni ben definite, eventualmente con code on demand) 15 Principi Mobile Middleware - Sistemi Mobili M Principi SOA Service Oriented Architecture (SOA) come architettura software dove funzionalità sono strutturate attorno a processi di business e realizzate tramite servizi interoperabili loosely-coupled. Fortemente basato su comunicazioni message-oriented Riutilizzo, granularità, modularità, possibilità di composizione dinamica, organizzazione a componenti, interoperabilità Conformità a standard Identificazione e categorizzazione di servizi, provisioning e delivery, monitoraggio e tracking Principi Mobile Middleware - Sistemi Mobili M 16 Principi di Sicurezza (e non solo) – – – Privacy Autenticazione Accountability - Integrità - Autorizzazione - Disponibilità Principio di Inversion of Control Principio di least privilege: solo info e risorse strettamente necessarie per fini legittimi di quell’entità a quel livello Il gruppo di lavoro W3C Platform for Privacy Protections (P3P) ha stabilito i seguenti principi guida ai fini di privacy: Notice & Communication. Service provider devono fornire notizie fresche ed efficaci su politiche e pratiche di mantenimento dati; user agent devono offrire strumenti efficaci per accedere a queste notizie e permettere a utenti finali di prendere decisioni informate Choice & Control. Utenti devono avere possibilità di scegliere su raccolta, utilizzo ed eventuale disclosure di loro info personali Fairness & Integrity. Utenti devono mantenere controllo sulle loro informazioni personali e la loro integrità Confidentiality. Info personali devono sempre essere protette con misure di sicurezza ragionevoli che considerino sensibilità delle info e livello di privacy richiesto (livelli differenziati) Principi Mobile Middleware - Sistemi Mobili M 17 Principi per Mobile: Prospettiva Dispositivo (vedi NoTA) Esempio di Network on Terminal Architecture (NoTA): architettura proposta da Nokia per strutturazione interna dispositivi mobili; validità generale dei principi sotto System-level loose coupling. Accoppiamento debole/lasco portato fino all’estremo dei componenti hw che costituiscono il dispositivo Interconnect-centric. Componente centrale responsabile per interconnessione di altri componenti e servizi (bus comune), basato su meccanismi message passing Basato su servizi, funzionalità realizzate tramite servizi con interfacce ben definite. Insieme a loose-coupling, porta ad adattabilità Message & data driven. Message passing come meccanismo privilegiato per realizzazione applicazioni. Comunicazioni data-driven nel senso di forwarding richieste basato anche su condizioni correnti del sistema e dati contenuti nelle richieste. Verso disaccoppiamento Implementation-wise heterogeneous. Integrazione di sotto-sistemi da diversi produttori e vendor; una volta note specifiche di interfaccia e formati di richiesta, componenti sono intercambiabili Principi Mobile Middleware - Sistemi Mobili M 18 Esempio di NoTA Basato su servizi anche per l’integrazione all’interno di un singolo device Possibilità di composizione di sottosistemi Principi Mobile Middleware - Sistemi Mobili M 19 Principi per Mobile: Prospettiva Mantenimento Sessione (SIP) Session Initiation Protocol (SIP), alla base di reti convergenti Next Generation Network (NGN). Ne avete già parlato in altri corsi, vero ☺? Utilizzo massiccio di proxy, ad es. per routing Stato delle chiamate mantenuto presso endpoint “Endpoint fate sharing”, ovvero fallimento delle applicazioni quando i loro endpoint hanno guasto Utilizzo di modello a dialog, e non di modello a chiamata Architettura basata su componenti logici (ricoprono ruoli logici, non necessariamente associati a componenti fisici) Generality over efficiency Separazione chiara fra piano di segnalazione e piano di distribuzione media Principi Mobile Middleware - Sistemi Mobili M 20 Esempio di SIP Protocollo, con messaggi tipicamente verbosi per mantenimento di stato di sessione , basato su proxy Modello a dialog, non a chiamata Alla base, insieme a Diameter, di architettura IP Multimedia Subsystem (IMS) Principi Mobile Middleware - Sistemi Mobili M 21 Principio di Cross-Layering Varie tipologie di interazione per differenti forme di cross-layering in uno stack protocollare Flusso info upward, con info propagata da layer più bassi a layer più alti, contrariamente a principi di architetture a livelli tradizionali Flusso info downward, con info propagata dai layer alti verso quelli bassi, tipicamente per fare configurazione di parametri a livello più basso Flusso info back-and-forth, con info propagata nei due versi Merging di layer adiacenti, consente combinazione di differenti layer adiacenti in un unico super-layer Accoppiamento senza aggiunta di nuove interfacce. Due o più layer sono accoppiati a design time in modo definitivo, senza possibilità di mantenere indipendenza/astrazione da livello sottostante Calibrazione verticale fra layer. Per consentire la configurazione congiunta di parametri fra layer (joint tuning) e ottenere migliori performance complessive Principi Mobile Middleware - Sistemi Mobili M 22 Principio di Cross-Layering Designed for X Layer X Upward information Downward flow information flow Back and forth flow Merging of adjacent layers Design coupling Vertical coupling Principi Mobile Middleware - Sistemi Mobili M 23 Pattern Architetturali Diversi pattern architetturali di utilizzo e applicabilità generali, non solo nel distribuito: A livelli. Architettura software multi-livello con responsabilità differenti allocate “rigidamente” a differenti livelli, strutturati Cliente-Servitore. Pattern più frequente nel distribuito: clienti sfruttano risorse e servizi messi a disposizione dal servitore Peer-to-peer. Ogni nodo può giocare dinamicamente il ruolo sia di cliente che di servitore; funzionalità più o meno simmetriche Pipeline (o pipe&filter). Pipeline come catena di elementi di processamento allineati in modo tale che output di ciascuno sia input per il successivo Multitier. Architettura cliente-servitore in cui applicazione eseguita da una molteplicità di software agent distinti Blackboard. Una base di conoscenza comune (blackboard) è aggiornata iterativamente da sorgenti differenti di conoscenza, partendo da specifica di problema per giungere alla sua soluzione Publish/Subscribe. 1) Canale per gli eventi e 2) Notifier (astrazione da locazione/distribuzione di broker) Principi Mobile Middleware - Sistemi Mobili M 24 Pattern Architetturali per Mobile Computing Non solo utilizzabili in applicazioni mobili, ma particolarmente utili in questi scenari: Model-View-Control (MVC) sia come pattern architetturale che di design, vedi applicazioni Web Broker, per introdurre disaccoppiamento fra clienti e servitori Microkernel. Funzionalità centrali e ridotte di un sistema (microkernel), separate da funzionalità complete e più estese, che possono essere plugged-in mediante specifiche interfacce Active Object. Semplifica supporto a processamento asincrono mediante incapsulamento di richiesta servizio e risposta al completamento del servizio Principi Mobile Middleware - Sistemi Mobili M 25 Model-View-Control Applicazione divisa in tre parti, con responsabilità separate e modalità di interazione ben specificate Invocazione di metodi ed eventi Ad esempio utilizzato in Symbian OS Principi Mobile Middleware - Sistemi Mobili M 26 Broker Componente broker che realizza disaccoppiamento fra clienti e servitori Server si registrano presso broker, mettendo a disposizione i loro servizi per i clienti attraverso interfacce fornite al broker Clienti accedono le funzionalità dei server inviando richieste di servizio al broker Compiti del broker includono: determinare/localizzare server appropriato fare forwarding richieste verso server trasmettere risultati ed eccezioni indietro al cliente Esempio classico: CORBA Object Request Broker 27 Principi Mobile Middleware - Sistemi Mobili M MicroKernel Pattern tipicamente applicato in scenari con sistemi software complessi che svolgono ruolo di piattaforma per altre applicazioni Caratteristiche desiderate sono estensibilità, adattabilità e interoperabilità Idea cruciale di piccolo core estensibile tramite componenti che possano essere plugged-in dinamicamente Calls Microkernel External Server Microkernel calls Microkernel Internal Server Calls Adapter Calls Client Principi Mobile Middleware - Sistemi Mobili M 28 Active Object Supporto per processamento asincrono Pattern lavora tramite incapsulamento e gestione di richieste asincrone di servizio e di risposte al completamento del servizio Cliente notificato al completamento operazione e in grado di svolgere altre operazioni, anche con stesso server, in modo asincrono Active Object esegue nello stesso thread dell’applicazione, per ridurre overhead di context switching fra thread Active Object deve gestire eventi in modo non-preemptive (un evento processato per volta; processamenti rapidi) Decide resumed object CActiveScheduler Status ActiveObject AsynchronousServiceProvider Status flags CActive Principi Mobile Middleware - Sistemi Mobili M 29 Pattern for Mobile Computing Tre categorie di pattern per middleware e applicazioni mobili: per distribuzione (come risorse sono distribuite ed accedute nell’ambiente di esecuzione) remote facade, data transfer object, remote proxy, observer per gestione risorse e sincronizzazione session token, caching, eager acquisition, lazy acquisition, synchronization, rendezvous, state transfer per comunicazione connection factory, client-initiated connection Principi Mobile Middleware - Sistemi Mobili M 30 Distribuzione: Remote Facade Addresses Coordinates Addresses Coordinates Remote Facade Mobile Device Directions and maps Routes Route Segment Map Web Services Direction Route Segment Highlighted map Last hop wireless network Fast fixed-network Interfaccia coarse-grained verso singolo o pluralità di oggetti finegrained Interfaccia fornita tramite remote gateway Accetta richieste incoming che siano conformi all’interfaccia della facade Susseguenti interazioni finegrained fra remote facade (gateway) e interfacce oggetti Applicazione che usa pattern non ha necessità di conoscere quali particolari server o funzioni remote sono usati per implementare operazioni richieste Principi Mobile Middleware - Sistemi Mobili M 31 Distribuzione: Data Transfer Object (DTO) Pattern Data Transfer Object (DTO) per fornire un contenitore serializzabile per trasferimento di elementi multipli di dati fra processi distribuiti Obiettivo principale del pattern è riduzione del numero di chiamate a metodo remoto Singolo DTO che contiene tutti i dati che devono essere trasferiti perché di interesse complessivo per una applicazione Usualmente implementato come semplice oggetto serializzabile che contiene un insieme di campi con corrispondenti metodi ”getter & setter” Principi Mobile Middleware - Sistemi Mobili M 32 Distribuzione: Remote Proxy Proxy (o gateway) interposto fra terminale e rete By the way ☺, chiara vero la differenza fra proxy e gateway? Client Web Browser encoded request wireless encoded response Gateway Server request Encoders Decoders Protocol Gateways HTTP Server response CGI,.. Tutti messaggi/pacchetti (o un loro sottinsieme selezionato) passano attraverso proxy, che può valutarli (anche contenuto) e svolgere operazioni su di loro Proxy anche per svolgere operazioni computazionalm. pesanti al posto del terminale cliente Proxy fa da adapter, anche consentendo l’interazione lato server senza bisogno di implementare protocolli/soluzioni terminal-specific Tipicamente necessità di discovery per determinare proxy Principi Mobile Middleware - Sistemi Mobili M 33 Distribuzione: Observer Supporta definizione di dipendenza one-to-many fra oggetti Tutti gli oggetti considerati ”dipendenti” vengono notificati quando si verificano modifiche dello stato dell’oggetto ”sotto osservazione” Disaccoppiamento tramite subject e observer Supporto a comunicazione di gruppo, ma scalabilità limitata Adottato in modelli ad eventi Java e Jini Principi Mobile Middleware - Sistemi Mobili M 34 Gestione Risorse: Session Token Rende più semplici e leggeri l’onere e i requisiti di gestione dello stato lato server Token emesso da server e inviato a cliente (contiene dati che si riferiscono alla sessione attiva che il cliente ha in corso con il server) Token contiene identificatore di sessione (talora anche informazioni di sicurezza correlate e time-to-live per evitare attacchi replay) Quando cliente ri-presenta token al server, il server è in grado di associare correttamente il cliente alla sessione (stato, …) opportuna By the way, in quali tecnologie avete già visto applicato questo pattern di soluzione? Principi Mobile Middleware - Sistemi Mobili M 35 Gestione Risorse: Caching Suggerisce memorizzazione temporanea di risorse in local storage dopo il loro utilizzo, piuttosto che la loro immediata distruzione/deallocazione Si ha prima verifica locale in cache di risorse, all’atto di ogni nuova richiesta di risorse/servizio Se cache hit, immediata consegna all’applicazione richiedente Se cache miss, richiesta propagata e nuova entry creata nella cache Esempi di file system Coda e Aura framework per pervasive computing Principi Mobile Middleware - Sistemi Mobili M 36 Gestione Risorse: Eager Acquisition Se risorse necessarie a un’applicazione sono note fin dall’inizio, possibilità di utilizzare questa info per fare prefetching delle risorse richieste Come risultato, risorse già disponibili localmente al momento del bisogno; nessuna necessità di richiesta remota Esempi di risorse come memoria, connessioni di rete, file handler, thread e sessioni 37 Principi Mobile Middleware - Sistemi Mobili M Gestione Risorse: Lazy Acquisition Ai fini di ottimizzazione dell’uso delle risorse di sistema, si suggerisce di differire acquisizione risorse fino all’ultimo (latest possible time) Resource Proxy responsabile per intercettazione di tutte richieste utente a risorse Resource Proxy NON acquisisce risorse, trasparentemente, fino a che l’utente non vi accede esplicitamente Principi Mobile Middleware - Sistemi Mobili M 38 Sincronizzazione Ai fini di gestire efficacemente istanze multiple di dati per una molteplicità di dispositivi, il pattern suggerisce di realizzare un engine di sincronizzazione Sync engine traccia le modifiche fatte ai dati utilizzati, scambiando info modifica trasparent. fra engine differenti (coordinamento), e aggiornando poi dati quando connessione disponibile Sync engine responsabile per detection di conflitti e loro risoluzione durante processo di sincronizzazione Possibilità accesso a dati obsoleti e conflitti 39 Principi Mobile Middleware - Sistemi Mobili M Esempio: SyncML App A Sync Engine SyncML Framework application/vnd.syncml App B SyncML SyncML I/F Adapter Sync Server Agent SyncML XML Objects SyncML Adapter SyncML I/F Sync Client Agent Transport (e.g. HTTP / OBEX) Principi Mobile Middleware - Sistemi Mobili M 40 Sincronizzazione: Rendezvous Rendezvous come pattern di grande utilizzo per assistere rete (ma non solo) nella gestione di dispositivi mobili In generale, rendezvous come modalità che consente a due o più entità di coordinare le loro attività Realizzato in sistemi distribuiti tipicamente tramite rendezvous point Una entità logicamente centralizzata (punto di indirettezza) Accetta messaggi/pacchetti e mantiene stato così da poter rispondere, ad es., su dove un dispositivo mobile è correntemente posizionato Esempi: DNS, Mobile IP, HIP, ... Principi Mobile Middleware - Sistemi Mobili M 41 Gestione Risorse & Sincronizzazione: State Transfer Client Old AP New AP Rendezvous Correspondent node Old AP is the current point of attachment Attach to a new AP Update location Teardown old attachment Lookup client Send message Forward message Come sapete, diverse tipologie di handoff possibili Handoff può avere bisogno di trasferimento di stato fra AP Utilizzo di indirection point (rendezvous) per garantire raggiungibilità Principi Mobile Middleware - Sistemi Mobili M 42 Esempi di Rendezvous & State Transfer: Mobile IP, Wireless CORBA, Mobile Web server Correspondent host Foreign agent Home agent Home link Home domain Foreign link Mobile host Home Location Agent Browser (CoA) Care-of-Address Web server 1 2 3 Operator firewall Terminal Bridge Terminal domain GIOP tunnel Internet DNS Gateway Access Bridge GI Access Bridge Visited domain OP Access Bridge Host Access Bridge Principi Mobile Middleware - Sistemi Mobili M 43 Comunicazione: Connection Factory Suggerisce disaccoppiamento fra applicazione e il sistema sottostante di comunicazione tramite introduzione di componente utilizzato per istanziare, accedere e terminare connessioni Design pattern factory è di ampio utilizzo; in questo caso, è usato per consentire gestione e riutilizzo di connessioni in modo efficiente Utilizzato ampiamente in architettura Java in generale. API per comunicazioni in Java ME adottano questo pattern Principi Mobile Middleware - Sistemi Mobili M 44 Comunicazione: Client-initiated Connection Client Edge Proxy Server Lookup service Initiate connection Update client status Lookup client Send message Forward message Associate message with connection In molti casi è impossibile raggiungere un cliente mobile a causa di firewall/NAT lungo cammino di comunicazione Questi problemi motivano l’uso di connessione clientinitiated verso un server con indirizzo pubblico che poi possa operare push di messaggi verso cliente utilizzando connessione esistente Esempi: MS DirectPush, AJAX Principi Mobile Middleware - Sistemi Mobili M 45 Comunicazione: Multiplexed Connection Connection 1 Connection 1 Connection N Connection N Multiplexer Demultiplexer Single connection Inefficiente creare molte connessioni che possono competere per consumo risorse di rete e sistema Multiplexed Connection usa una singola connessione logica e ne fa multiplexing per supportare connessioni multiple a livello di astrazione più alto Consente di dare priorità differenziate ai messaggi di cui si fa multiplexing sull’unica connessione di basso livello Esempio: Stream Control Transfer Protocol (SCTP) Principi Mobile Middleware - Sistemi Mobili M 46