Architetture Distribuite, Middleware, Distributed Object Computing e

Architetture Distribuite,
Middleware,
Distributed Object Computing e
Legacy System
Giuseppe Santucci &...
[email protected]
Argomenti
l
l
l
l
l
l
Concetti di base
Applicazioni Client/Server
Middleware “tradizionale”
Middleware WWW
Distributed Object Computing
Legacy System
2
Concetti di base
applicazioni distribuite
sistemi client/server
architetture a n livelli
middleware
3
Definizione di applicazione distribuita
l
Una semplice definizione di applicazione distribuita (che non
implica necessariamente semplici conseguenze) e’:
“Una applicazione è distribuita se le funzioni coinvolte nella sua
esecuzione sono distribuite tra 2 o più computer”
implica comunicazione
presuppone supporto per eterogeneita’
4
La distribuzione delle applicazioni
l
l
Fino a qualche tempo fa la maggior parte delle applicazioni
giravano all’interno di un singolo sistema
Con il diminuire delle dimensioni e dei costi della macchine, è
diventato vantaggioso distribuire le applicazioni su due o più
sistemi, con i seguenti benefici
» utilizzo di due o più macchine economiche in luogo di una
macchina costosa
» migliore sfruttamento di PC e workstation esistenti
» crescita facilitata dell’ambiente di calcolo
5
Esempio di applicazioni tradizionali
T
T
Applicazione
T
Applicazione
T
T
Database
Applicazione
T
T
6
Esempio di applicazioni distribuite
Applicazione
WS
WS
WS
WS
Database
WS
Applicazione
WS
WS
Applicazione
WS
7
Le “market forces” che guidano l’evoluzione dei
sistemi distribuiti
l
l
In generale le grandi trasformazioni sono guidate da una
combinazione di:
» nuove tecnologie
» nuove necessita’
L’affermarsi dei sistemi distribuiti e dei sistemi Client/Server
(C/S) viene influenzata da tre fenomeni:
» downsizing
» upsizing
» rightsizing
8
Downsizing
l
l
l
l
Migrazione verso il basso delle applicazioni di business da super
mini e mainframe verso PC e workstation
Il processo di Downsizing partiziona le grandi applicazioni pensate
per i mainframe in moduli che vengono fatti operare su uno o piu’
server connessi in rete
Le funzioni di interfaccia utente si spostano verso workstation
client. Vengono rimpiazzati i vecchi terminali a carattere con
moderne interfacce grafiche
Soluzioni C/S basate su hardware standard e low-cost sono gli
impulsi principali che governano il processo di downsizing.
9
Upsizing
l
l
Il processo di Upsizing rappresenta il processo bottom-up che
porta reti isolate di PC ad assumere le caratteristiche di sistemi
dipartimentali
Connessione dei PC in LAN
» In origine le LAN venivano usate per condividere costose
periferiche
» Poi si e’ passati a sistemi di e-mail, di file system distribuiti e
database condivisi
» Applicazioni distribuite C/S
10
Rightsizing
l
l
l
l
l
Il rightsizing rappresenta il processo attraverso il quale le
applicazioni vengono collocate nella più appropriata piattaforma
I client richiedono servizi sulla rete e tali servizi vengono forniti
dai “migliori server” che li offrono
In questo modello un server puo’ essere un PC un supermini o
anche un mainframe
Server differenti possono coesistere: la rete e’ il sistema
Il rightsizing fa in modo che la domanda e l’offerta di servizi
possano incontrarsi nel modo migliore
11
Evoluzione dei modelli architetturali
l
l
l
l
Anni ’60-’70: architettura centralizzata, monolitica
» host (mainframe, mini) a cui vengono collegati terminali
“stupidi”
» a tutt’oggi è l’architettura dominante
Anni ’80: reti locali di PC
» terminali dotati di intelligenza propria, che condividono risorse
“pregiate”, come stampanti, dischi, etc.
Fine anni ’80 - Inizio anni ’90: applicazioni pienamente
distribuite, modello client-server
» reti locali di PC e server, connesse su collegamenti geografici
Metà-fine anni ’90: Internet, WWW, Distributed Object
Computing
» sistemi network-centrici (“the network is the computer”)
12
Il middleware
Interfaccia
Utente
Applicazione
Software
di
Base
Hardware
Interfaccia
Utente
zione
Interfaccia
Utente
Interfaccia
Utente
Applicazione
Applicazione
Middleware e
servizi distribuiti
Software
di
Base
Software
di
Base
Hardware
Hardware
Interfaccia
Utente
plicazione
RETE
13
Il modello Client-Server
l
Una semplice definizione (che non implica ... ) è:
» “La divisione di un’applicazione in compiti eseguiti su due
computer diversi, uno dei quali è una stazione di lavoro
programmabile”
14
Caratteristiche delle applicazioni client-server
l
l
l
l
l
l
l
Il concetto di servizio
Condivisione delle risorse
Protocolli di comunicazione asimmetrici
Trasparenza della posizione fisica (location)
Indipendenza dalle piattaforme hardware/software (“mix and match”)
Scambi di informazioni basati su messaggi
“Incapsulamento” dei servizi
15
Architetture a più livelli
l
l
l
Diversi concetti di livelli architetturali
» livelli hardware
» livelli software fisici
» livelli software logici
» livelli applicativi
Il concetto sul quale ci concentriamo principalmente è quello di
livello applicativo
» vale a dire di quali moduli fondamentali si compone una
applicazione
Vedremo che esistono applicazioni a 2, 3, ed in generale n livelli
» il salto concettuale avviene tuttavia tra le architetture a 2 livelli
e quelle a 3 livelli
16
Modelli architetturali distribuiti
l
Identificazione preliminare di componenti dell’applicazione
» Frammentazione delle applicazioni in livelli (o strati)
applicativi
» Gli strati costitutivi di una applicazione sono 3
– Gestione Dati
– Applicazione
– Presentazione
l
Localizzazione dei componenti secondo la classificazione sopra
riportata
17
La classificazione del Gartner Group
Gestione Dati
Gestione Dati
Gestione Dati
Applicazione
Applicazione
Applicazione
Presentazione
R
Gestione Dati
Gestione Dati
Gestione Dati
ete
Applicazione
Applicazione
Applicazione
Presentazione
Presentazione
•
•
Presentazione
Presentazione
Presentazione
Œ
•
Ž
Fonte : Gartner Group, 1991
1 - Distributed Presentation
2 - Remote Presentation
3 - Distributed Function
4 - Remote Data Management
5 - Distributed Database
18
Gestione Dati
Distributed Presentation
Applicazione
Presentazione
Presentazione
Server
Centrale o
Sistema
Preesistente
Gestione Dati
Funzione Aziendale Automatizzata
“L’Applicazione”
Logica di controllo
Presentazione
Sito X
Rete
Locale o Geografica
Sito Y
Sistemi
Client
Terminale
Personal Computer
Workstation
19
Gestione Dati
Applicazione
Remote Presentation
Server
Centrale o
Sistema
Preesistente
Presentazione
Sito X
Logica di controllo
e Presentazione
all’interno dei
Gestione Dati
Funzione Aziendale
Automatizzata
“L’Applicazione”
Rete
Locale o Geografica
Sito Y
Sistemi
Client
Terminale
l
Personal Computer
Workstation
“Ultra-Thin” Client: la collaborazione del client
nell’elaborazione dell’applicazione è ridotta a funzioni minime
20
Gestione Dati
Applicazione
Distributed Function
Applicazione
Presentazione
Gestione Dati
Funzioni Aziendali
Automatizzate
Comuni
“L’Applicazione
Server”
Server
Centrale o
Sistema
Preesistente
Sito X
Rete
Locale o Geografica
Funzioni Aziendali Automatizzate
Specifiche per l’utente
“L’Applicazione Client”
Sistemi
Client
Personal Computer
l
Sito Y
Logica di controllo
Presentazione
“Thin” Client: la collaborazione del client nell’elaborazione
dell’applicazione è limitata alle funzioni di pertinenza dell’utente
del client
21
Gestione Dati
Remote Data Management
Applicazione
Presentazione
Server
di Gestione
dei Dati
Aziendali
Sito X
Base Dati Aziendale
Sistema di
Gestione delle
Informazioni
Memorizzate
Rete
Locale o Geografica
Funzioni Aziendali
Automatizzate
Specifiche per l’utente
“L’Applicazione Client”
Sistemi
Client
Personal Computer
l
Sito Y
Logica di controllo
Presentazione
“Fat” Client: il client non si limita a servire le specificità del
proprio utente, ma contiene la logica applicativa relativa
all’intera applicazione
22
Gestione Dati
Distributed Data Management
Gestione Dati
Applicazione
Presentazione
Base Dati Aziendale
Server di Gestione
dei Dati Aziendali
Centrale
Sito X
Sistema di Gestione delle
Informazioni Memorizzate
Rete
Locale o Geografica
Sistemi
Client
PC
Funzioni Aziendali
Automatizzate
Specifiche per l’utente
“L’Applicazione Client”
Logica di controllo
Presentazione
Sito Y
Server
di Gestione
dei Dati
Aziendali
Locale
Base Dati Aziendale
Sistema di Gestione delle
Informazioni
Memorizzate
23
L’evoluzione da due a tre livelli
2-Livelli con Scambio Dati
Monolitico
Host
Server
DBMS
DBMS
Dati
Programma Utente con Gestione dell’I/O su
Schermo
Data Stream verso il terminale ”stupido”
Server
DBMS
con “stored procedure”
Dati
Programma Utente con Gestione dell’I/O su
Schermo
Client
Server
Dati
Programma Utente
Messaggi
Programma Utente con Gestione dell’I/O su
Schermo
Messaggi
Gestione dell’I/O su Schermo
Client
2-Livelli con Scambio Msg
DBMS
Client
Client/Server a 3-Livelli
24
Il passaggio a n livelli
Server
Server
DBMS
Dati
Programma Utente
DBMS, eventualmente
con stored procedure
Dati/Messaggi
Programma Utente
Messaggi
Gestione dell’I/O su Schermo
Client
Client/Server a 3 Livelli
Messaggi
Programma Utente (eventuale) con Gestione
dell’I/O su Schermo
Client
Client/Server a n Livelli
25
Requisiti e problemi di un ambiente
distribuito: il ruolo del middleware
l
Classi di requisiti cui deve soddisfare un ambiente distribuito
»
»
»
»
»
»
comunicazione
parallelismo
localizzazione dei servizi
security
sincronizzazione dei clock
Supporto per client di tipo diverso
26
Middleware
l
l
l
Il termine middleware e’ usato per indicare tutto il software necessario
per supportare l’interazione tra Client e Server
E’ la “/” tra client e Server, cioe’ l’insieme delle funzioni software che
vengono utilizzate per consentire al cient di ottenere un servizio dal
server
Dove inizia e dove finisce il campo d’azione del middlware?
» inizia sulle API del lato Client usate per invocare i servizi
» copre la trasmissione della richiesta e della risposta sulla rete
» non include il software che produce il servizio
» non include l’interfaccia utente
27
Middleware
l
l
Una prima classificazione del middleware puo’ essere la seguente:
General middleware: il substrato piu’ comune per C/S.
»
»
»
»
»
l
directory distribuite,
servizi di autenticazione,
servizi di timing,
remote procedure call,
servizi per la gestione delle code di messaggi
Service specific middleware: necessario per particolari tipi di servizi.
»
»
»
»
»
Database (ODBC)
Transazioni (Tuxedo, Enchina...)
Groupware (workflow)
Object specific (ORB)
WWW middleware !!!
28
Un esempio famoso (storico ?) di middleware: OSF
DCE
Diskless Support
Service
Other Distributed
Services (Future)
OSF=Open Software Foundation (oggi
Open Group)
DCE = Distributed Computing Environment
Time
Service
y
Service
Other Fundamental
Services (Future)
t
Remote Procedure Calls
Threads
OPERATING SYSTEM AND TRANSPORT SERVICES
Modello architetturale indotto da DCE
PCs
Server
HOST
29
OSF/DCE struttura cellulare
Cellula A
LAN
Cellula C
LAN
WAN
Cellula B
LAN
30
Applicazioni Client/Server
(& general middleware)
Caratteristiche di un sistema C/S
l
Cosa rende i sistemi C/S differenti da altre forme di software
distribuito?
l
Relazione di Servizio: la relazione di C/S e’ una relazione tra
processi che possono essere localizzati su macchine differenti.
» Il processo server e’ un fornitore di servizi
» il processo client e’ un consumatore di servizi
32
Caratteristiche di un sistema C/S
l
l
l
l
Risorse condivise: un server puo’ servire piu’ client alla volta e
regolare il loro accesso a risorse condivise
Protocolli asimmetrici: Esiste una relazione molti ad uno tra client e
server. I client avviano il dialogo richiedendo un servizio. I server
attendono passivamente le richieste.
Trasparenza rispetto alla locazione: Un server e’ un processo che
puo’ risiedere sulla stessa macchina del client o su una macchina
diversa connessa in rete. Il software C/S tipicamente maschera la
locazione del server rispetto al client redirigendo l’invocazione del
servizio.
Comunicazione basata su messaggi: Client e server sono sistemi
accoppiati lascamente che interagiscono attraverso messaggi.
33
Caratteristiche di un sistema C/S
l
l
l
Incapsulamento del servizio: la definizione di un server e’ fatta
rispettando il principio dell’incapsulamento. Un messaggio comunica
al server quale servizio e’ richiesto. Sara’ poi il server a stabilire
come eseguire il compito. I server possono essere modificati
internamente senza comportare una modifica dei client che ne
utilizzano i servizi.
Scalabilita’: I sistemi C/S possono essere scalati orizzontalmente o
verticalmente.
» scalare orizzontalmente significa aggiungere o rimuovere client
con implicazioni esclusivamente a livello prestazionale
» scalare verticalmente significa migrare verso una macchina server
piu’ grande e piu’ veloce
Integrita’: Il codice e i dati del server vengono mantenuti
centralmente, con benefici economici e di sicurezza. Il client,
viceversa, rimane personale e indipendente
34
Architetture e sistemi C/S
l
Molti sistemi con architetture molto differenti tra loro sono stati
definiti sistemi Client/Server
» File servers
» Database servers
» Transaction servers
» Object servers
» Lan servers
» Windows servers
» Authentication servers
35
Fat server o Fat client?
l
l
l
l
l
Le applicazioni C/S possono essere differenziate sulla base di come
l’applicazione e’ suddivisa tra client e server.
Il modello fat server colloca piu’ funzionalita’ sul server
» groupware, transactions, object servers
Il modello fat client assegna maggiore responsabilita’ al client
» database e file server
Fat clients sono la forma piu’ tradizionale di C/S. Il cuore dell’applicazione
gira sulla parte client, i client sono a conoscenza di tutta la logica
dell’applicazione e dei dati.
Applicazioni di tipo fat server sono piu’ facili da manutenere su grandi
installazioni in quanto gran parte del software gira sul server.
» I fat server tendono a minimizzare i messaggi scambiati sulla rete
fornendo servizi a maggior livello di astrazione. Incapsulamento. Invece
di esportare solo dati vengono esportate anche procedure e/o metodi che
operano sui dati.
36
Anatomia di un programma server
l
l
Il ruolo di un programma server e’ quello di servire piu’ client
che hanno interesse ad accedere a risorse condivise
Un tipico programma server fa le seguenti cose:
» attende che i client effettuino delle richieste
» esegue piu’ richieste contemporaneamente
» si occupa di gestire priorita’ nello svolgere il servizio
» puo’ iniziare attivita’ in background
» si mantiene operativo anche in condizioni estreme
» cresce e puo’ richiedere piu’ risorse
37
Threads in ambiente Client/Server
l
l
Sfruttando l’inerente parallelismo dei sistemi distribuiti
» i server possono servire simultaneamente più client
» i client possono effettuare simultaneamente più richieste di
servizio
Flussi di elaborazione in parallelo si definiscono threads
Servers
Clients
38
C /S e sistema operativo
(general middleware)
l
l
l
Un sistema operativo deve fornire dei servizi utili per le tipiche
funzionalita’ richieste da un sistema C/S
Di particolare importanza i concetti di :
» Thread (programma concorrente guidato dagli eventi)
» IPC Interprocess communication (pipe, soket, ecc.)
In un ambiente distribuito, le funzioni del sistema operativo
possono essere:
» funzioni di base
» funzioni estese
39
Servizi di base del SO per il server
l
l
l
l
l
Elevato livello di concorrenza, sia come possibilita’ di gestire piu’
processi (piu’ indipendenza), sia come possibilita’ di gestire piu’ threads
nel singolo processo (piu’ efficienza, meno overhead)
Task Priority. Possibilita’ di differenziare il livello di servizio.
Task Preemption. Molto piu’ potente del multitasking cooperativo
Semafori. Per consentire la sincronizzazione.
Interprocess comunication. Per consentire la comunicazione tra processi.
» local
» remote
40
Servizi di base del SO per il server
l
l
l
l
Threads Per creare efficienti programmi con elevato grado di
parallelismo
Intertask protection Protezione dalle interferenze con le
altre risorse. Un task non deve essere in grado di mandare
giu’ il sistema
Multiuser High Performance file system Elevato numero di
file aperti, locks.
Gestione efficiente della memoria Gestione di
grandi/numerosi programmi, memoria virtuale
41
Servizi estesi del SO per il server
l
I servizi estesi devono consentire un accesso piu’ flessibile alle
informazioni condivise.
» Varieta’ di protocolli di rete
» Estensioni del Network Operating System per consentire un
accesso trasparente alle risorse
» Global directories e Yellow Pages
» Servizi di autorizzazione ed autenticazione
» Network time
» Database e Transaction services
» Servizi di object brokering
42
Anatomia di un programma Client
l
l
l
Il lato client fornisce il “look and feel” dei servizi che il sistema
fornisce
Tutti i client hanno in comune il fatto che richiedono servizi al
server, i programmi client si differenziano su cosa innesca la
richiesta e sul tipo di GUI necessaria.
Sulla base di queste caratteristiche una possibile classificazione
delle applicazioni client e’ la seguente:
» non GUI clients
» GUI client
» OOUI clients
43
Classificazione dei client
l
l
l
Non GUI client. Generano richieste al server con una
interazione umana minima o nulla . Due categorie:
» non richiedono multitasking (bancomat, lettore di codice a
barre)
» necessitano multitasking. Programmi demoni, Robots
GUI. Semplici GUI client sono applicazioni dove l’intervento
umano e’ occasionale. Dialoghi di tipo seriale, presentazione di
grafici.
OOUI client. Interfacce iconiche dove ogni oggetto sullo
schermo e’ un client. Molte sessioni parallele. Alta interazione.
44
Sistemi operativi
l
l
l
l
l
l
l
l
MS-DOS. praticamente non offre nessun servizio tra quelli utili
per una applicazione C/S
UNIX. Molti servizi di base, molte versioni
OS/2. Sistema completo, ma poco affermato
MAC OS. Buono, ma in via di estinzione.
Windows 3.1. Solo GUI, multitasking cooperativo.
Windows ‘95/98. Forma ancora non soddisfacente di
multitasking
Windows NT. Sistema abbastanza completo (task preemption)
ma ancora instabile.
Windows 2000 ?
45
C/S & middleware
API
(Application
Programming
Processo client
Middleware client
7
Processo server
Protocollo
middleware
API
Middleware server
5,6
Interface)
Servizi
Locali
Servizi
di rete
Servizi
Locali
Servizi
di rete
4,3
Sistema operativo
Sistema operativo
2
Hardware
Hardware
1
ISO/OSI
46
Middleware “tradizionale”
47
Livelli del middleware (1)
l
l
Servizi di rete a basso livello ? (soket, SNA logical unit,
NetBios)
servizi primitivi
– emulatore di terminale (location sensitive)
– file transfer (location sensitive)
– posta elettronica
l
servizi di base: permettono la comunicazione tra processi remoti usando il
paradigma C/S e l'accesso distribuito al file system e a risorse condivise
» Meccanismi per la comunicazione
– RPC remote procedure call
– RDA remote data access
– MOM message oriented middleware
48
Livelli del middleware (2)
l
WWW middleware
– WEB server - WEB browser
– HTML / HTTP
– Java
l
Middleware per dati distribuiti: permette l'accesso a piu' basi di dati
remote e gestite da differenti DBMS relazionali (e.g., Informix, Oracle) in modo
trasparente
– remote SQL gateway
l
Middleware per la gestione distribuita di transazioni: permette la
completa gestione di transazioni, garantendo:
– aggiornamenti trasparenti (gestione automatica della replicazione)
– transazioni trasparenti (decomposizione trans. automatica su piu' siti)
– trasparenza rispetto ai guasti (accesso ai dati replicati su siti alternativi)
» TP-heavy / TP-lite
49
Livelli del middleware (3)
l
Middleware per oggetti distribuiti: permette ad oggetti remoti di scambiarsi
messaggi. Componenti essenziali sono:
l
l
» ORB: Object Request Broker che trasferisce le richieste e le
risposte tra l'oggetto client e l'oggetto server
» Repository: descrizione di tutti gli oggetti disponibili utilizzato
dall'ORB per trovare gli oggetti di interesse sulla rete
» E.g., Corba, OLE/ActiveX, OpenDoc, Oracle WRB
Middleware specializzato
» Mobile computing
» Multimedia
» Legacy access/integration
» Groupware
Distributed operating system (DISOS) ??
50
Portabilita' ed interoperabilita' (1)
l
l
l
Le API influenzano la portabilita' delle applicazioni C/S. Ad
esempio, un client che usa le API di Informix deve essere
riscritto per utilizzare le API di Oracle.
Il protocollo di interazione tra il middleware client e quello
server influenza la interoperabilita' delle applicazioni C/S. Ad
esempio un middleware client Informix non riesce a scambiare
dati con un middleware server Oracle. Occorre prevedere un
eventuale "gateway".
E' quindi importante considerare i livelli di standardizzazione
possibili
51
Portabilita' ed interoperabilita' (2)
Totally
open
Open API
API
Protocollo
Open
Open
Open
Esempi
DCE RPC
Corba
Proprietary ODBC
Open
Proprietary Open
DRDA
protocol
ISO RDA
Proprietary Proprietary Proprietary OLE/ActiveX
52
Middleware di base ~= Network Operating
Systems (NOS)
l
l
l
l
Scopo del middleware NOS: fornire una singola immagine di
sistema per tutti i servizi di rete.
Il middleware NOS fornisce l’infrastruttura logica
indispensabile per sviluppare sistemi informativi distribuiti.
Senza il NOS lo sviluppo di applicazioni C/S sarebbe
enormemente difficoltoso e costoso.
Spesso i middleware commerciali si appoggiano sui servizi
forniti dal NOS. (e.g., un middleware per basi di dati si
appoggia su Netware di NT)
53
Servizi offerti dal NOS
l
l
Il NOS nasce con le LAN (essenzialmente : file server/ print
server). Successivamente introduce servizi utili per C/S:
» Comunicazione remota
» Servizio di directory
» Sicurezza
» Gestione dei guasti
» Scheduling dei task
» Time service
E' importante notare che il NOS offre servizi all'interno di una
LAN ! Occorrono quindi dei "gateway" per far colloquiare due
NOS distinti
54
RPC - Remote Procedure Call
l
l
l
l
l
l
Il middleware RPC fa in modo che l’invio di una richiesta da un
client verso un server avvenga come se fosse una normale chiamata
locale di procedura
Meccanismo che facilita la programmazione
L'interazione e' sincrona: il processo client viene sospeso finche’ la
procedura chiamata non termina.
I parametri vengono passati come una procedura ordinaria.
Il software run time raccoglie i parametri, li impacchetta
(Marshalling), forma un messaggio e lo invia verso il server remoto
Il server riceve la richiesta, spacchetta i parametri (Unmarshalling),
e manda la risposta al client.
55
Il meccanismo di Remote Procedure Call
Server
Client
ProcA
Proc A
Main
1
Main
Server
Proc B
Proc B
Server
Client
ProcA
2
Main
Client
Stub
Server
Stub
Server
Proc B
Una copia prototipo della procedura da chiamare viene inserita nel codice del client :
client stub. Il client stub riceve i parametri e si preoccupa di inoltrarli sulla rete fino
al server che implementa la procedura. Un server stub si occupa di ricevere tali
parametri ed inviare indietro il risultato.
(Gli stub sono il middleware!)
56
IDL - Interface Definition Language
l
l
l
l
l
l
Gli stub del client e del server vengono generati tramite un
opportuno linguaggio di specifica : IDL
IDL permette di specificare in modo dichiarativo la struttura
dell'interfaccia, ovvero:
» operazioni disponibili
» parametri necessari
Le specifiche della interfaccia vengono "compilate" nei
linguaggi del client e del server, ottenendo il server stub ed il
client stub
Il client ed il server vengono compilati ed eseguiti
Approccio tipico C/S
Ovviamente non esiste uno standard per IDL
57
Sviluppo di applicazioni con RPC
Interface
Definition
File (IDL)
Client
Source
Server
Source
IDL
Compiler
Client
Stub
Source
X
Compiler
Client
Executable
Header
File
RPC
Runtime
Library
Server
Stub
Source
Y
Compiler
Server
Executable
58
Riassumendo
l
l
l
l
l
Il client effettua una chiamata locale ad una procedura stub che la
trasforma in un messaggio di rete nel formato previsto (tipicamente
TCP/IP soket) e "scopre" l'indirizzo del server (bind) utilizzando, ad
esempio, una diretory distribuita
Il messaggio viaggia sulla rete e viene ricevuto dallo strato di trasporto
della rete del server (gateway?)
Il server stub riceve il messaggio, lo converte in una chiamata locale e
lo invia al server
Il server esegue la chiamata e restituisce al server stub il risultato
Il server stub ...
59
Caratteristiche del NOS per supportare
meccanismi RPC
l
l
l
l
l
l
Localizzazione delle funzioni del server ed avvio del server
Definizione dei parametri (NIDL) Network Interface Definition
Language. NIDL compiler, header stub e skeleton.
Gestione dei malfunzionamenti Automatic retry, only once semantics.
Connection-Oriented vs. Connectionless RPC
Sicurezza Specifica del livello di sicurezza richiesto.
Funzioni di ricerca del server. Binding = Associazione C/S. Hardcoded binding Vs. binding con ricerca su direttorio, dynamic binding.
Nel caso di dynamic necessità di “pubblicizzare” un server.
Rappresentazione dei dati Necessità di utilizzare una forma canonica di
rappresentazione per i dati.
60
Risoluzione delle differenze tra le
rappresentazioni dei dati
l
l
l
RPC risolve automaticamente le differenze di rappresentazione dei
dati tra sistemi eterogenei (ISO-OSI 6 presentazione)
Ciò avviene per mezzo di opportuno codice associato agli stub per
mezzo dell’IDL compiler
Esistono diversi approcci a questo problema:
» Rappresentazione canonica comune
– a volte inutile
» DCE impiega lo schema “receiver makes it right”
» Altri sistemi impiegano lo schema “sender makes it right”
– implicano la conoscenza di tutti i formati dei client e dei server
61
Workflow di una
comunicazione sincrona
client
1
client
si attiva
directory
riceve il
messaggio
Selezione
del servizio
Preparazione
del messaggio
Chiamata
sincrona
Il server
si attiva
server
3
Decodifica
messaggio
2
Esegue
il servizio
Middleware
62
RPC: ulteriori considerazioni
l
l
l
Generazione degli stub : manuale / automatica (IDL)
Nel caso di binding dinamico occorre trovare la coppia <host,server>
appropriata. Directory centralizzata/distribuita.
Semantica della chiamata in caso di malfunzionamenti server:
– Exactly once
– At most once
– At least once
l
Gestione degli errori
– timeout
– chiusura del server (automatica / da parte del client)
l
l
l
l
Passaggio dei parametri: valore, variabile ?
Interazioni asincrone ?
Dimensione del risultato non nota? (e.g., query SQL)
Estensioni : RPC + transazioni
63
Message Oriented Middleware (MOM)
l
l
l
l
l
l
l
MOM consente a client e server di scambiare generici messaggi utilizzando code di
messaggi gestiti in modo asincrono.
Le applicazioni comunicano in rete semplicemente mettendo messaggi in code e
prendendo messaggi dalle code.
MOM elimina tutti i dettagli della comunicazione fornendo un API molto semplice.
MOM consente la comunicazione senza la necessità di avere una connessione attiva
Client e server possono essere operativi in tempi differenti.
Grande disaccoppiamento ed indipendenza. Un programma può decidere quando
prelevare i messaggi dalla coda.
Possibilità di comunicazione one-to-many many-to-one.
64
Prodotti di middleware MOM
l
l
l
l
MOM è un componente chiave del middleware assolutamente
essenziale per una certa classe di sistemi distribuiti
Se l’applicazione può tollerare un certo livello di indipendenza dai
tempi di risposta, i meccanismi MOM forniscono il modo più
semplice per realizzare sistemi distribuiti
MOM risulta particolarmente indicato nel caso di mobile
computing
Standard IBM: MQI Messaging and Queuing Interface
65
MQI API
• L’API MQI consiste di un insieme di nove semplici chiamate
• L’API MQI definisce un interfaccia tra il programma applicativo ed il
gestore locale delle code.
• Il gestore delle code fornisce trasparenza sulla locazione dei soggetti
coinvolti e gestisce la consegna dei messaggi
• Anatomia di un programma MQI:
– stabilisci la connessione con il gestore locale delle code MQCONN
– apri una coda per lo scambio messaggi MQOPEN
– inserisci o prendi messaggi MQPUT MQGET oppure interroga lo stato della
coda MQINQ
– chiudi la coda MQCLOSE
– disconnetti MQDISC
66
Problemi con il middleware MQseries
• E’ una tecnologia sviluppata per risolvere problemi di
comunicazione relativi a piattaforme eterogenee
• Di vecchio stile
• Non sono previsti meccanismi di interoperabilità con altri MOM
• Usa un sistema proprietario di directory
• Non supporta lo scambio di messaggi di grandi dimensioni
come BLOB (Binary Large Object)
67
Confronto tra MOM ed RPC
Caratteristica
MOM
RPC
Metafora
Ufficio Postale
Telefono
Relazione tra
client e server
Asincrona
Sincrona
Sequenza di
attivazione
Nessuna
Il Server deve essere
attivo prima che il Client
possa comunicarci
Stile
Accodamento
Call-Return
Dati persistenti
Sì
No
No
Necessità di
disponibilità del
partner
Sì
Bilanciamento
del carico
Impiego di coda singola in
modalità FIFO o prioritybased
Per mezzo di servizi
aggiuntivi (TP Monitor)
Supporto di
transazioni
Sì (in alcuni prodotti)
No
Filtraggio di
messaggi
Sì
No
Prestazioni
Lente (c’è un passaggio in Veloci
più)
Elaborazione
asincrona
Sì
Limitata (per mezzo di
threads)
Fonte: Essential Client-Server Guide, 1994
68
Remote Data Access (RDA)
l
l
Permette ad un client di accedere, tramite uno statement SQL
(tipicamente una interrogazione), ad una o piu' basi di dati remote
La differenza essenziale rispetto a RPC e' la dimensione del risultato:
» RDA prevede, dopo la prima comnnessione, un dialogo tra client e server per il
reperimento di una tupla alla volta (SQL FETCH)
» dialogo sincrono
l
Tipi di API:
» Embedded SQL: il programmatore puo' aggiungere comandi SQL all'interno del codice
distinguendoli tramite indicatori speciali (e.g., $)
» Call level interface (CLI) : il comando SQL e' passato come stringa al server (chiamate
addizionali permettono di specificare il server, chiudere la connessione, ecc.) Il piu' noto
esempio e' Open Database Connect (ODBC)
» Non e’ necessario un IDL
l
Comandi SQL statici e dinamici
» dinamici : permettono di formulare query estemporanee
» statici : permettono di individuare piani esecutivi a tempo di compilazione
69
Stored Database Procedure
l
Procedure scritte in una estensione dell'SQL con istruzioni
condizionali e di ciclo (spesso linguaggio proprietario del DBMS).
Vengono compilate e memorizzate presso il server per poter essere
eseguite tramite una chiamata speciale. Vantaggi principali:
» efficienza
» migliore gestione della integrita' dei dati (e.g., tutte le funzionalita'
di update possono essere realizzate tramite stored procedure)
» introducono una sorta di "object orientation" per i server di basi di
dati
70
Dove e’ il server ?
l
l
l
l
RPC, MOM, RDA gestiscono la comunicazione tra il client ed il
server secondo differenti paradigmi di interazione
A monte della instaurazione della connessione, sincrona o
asincrona che sia, occorre localizzare il server
Un binding puramente statico, oltre ad implicare la conoscenza a
tempo di compilazione della locazione del server presenta
l’ulteriore difetto di non seguire l’evoluzione del sistema, in cui gli
utenti entrano ed escono continuamente dalla rete
Il middleware deve prevede, quindi, l’utilizzo di vari meccanismi
per registrare dinamicamente i client presenti nel sistema
71
Global Directory service
l
Idealmente un servizio di directory dovrebbe fornire una
immagine unica delle risorse che puo’ essere usata da tutte le
applicazioni
l
Il servizio viene implementato tipicamente come una base dati a
oggetti replicata e distribuita
» Distribuita per consentire agli amministratori dei vari
domini di controllare direttamente le proprie risorse
» Replicata per fornire una alta disponibilita’
» ad oggetti in quanto tutto puo’ essere visto come istanza di
una classe
72
Che cos’è un servizio di directory?
l
l
l
E’ un servizio che prende il nome simbolico di un oggetto e
restituisce informazioni sul conto dell’oggetto richiesto
Esempi:
» nome di una persona ð numero di telefono di quella persona
» indirizzo simbolico IP ð indirizzo numerico IP
» nome di un host ð informazioni circa quell’host
» nome di un server RPC ð informazioni per collegarsi a quel
server
Un servizio di directory efficace è critico per un ambiente
distribuito
73
Global Directory service
l
l
l
l
I direttori offerti dai moderni NOS presentano delle API ed
interfacce utente che consentono di localizzare entita’ sulla rete
attraverso l’interrogazione sul nome o su attributi
Tipicamente i servizi di directory sono organizzati in modo
gerarchico
In ogni nome c’e’ una componente locale ed una globale.
A livello globale esiste una federazione di sistemi lascamente
accoppiati
74
Lo standard X.500
l
l
l
l
X/Open Directory Service (XDS) API
L’API XDS consente di:
» leggere,
» comparare,
» aggiornare,
» aggiungere,
» e rimuovere directory entries
Ogni oggetto in una directory X.500 appartiene ad una classe, una
classe puo’ essere derivata da un’altra classe
Il protocollo definito e’ il DAP (Directory Access Protocol)
75
Sicurezza nell’elaborazione distribuita
l
Le reti di computer sono soggette a brecce nei meccanismi di security,
spesso definite security threats (minacce), quali:
» Masquerade
» Modifica dei dati
» Intercettazione dei dati
l
I servizi chiave richiesti da sistemi distribuiti protetti da accessi
indesiderati sono i seguenti:
»
»
»
»
»
»
l
Autenticazione: verificare che l'utente e' chi dichiara di essere
Autorizzazione : verificare che l'utente puo' accedere al servizio richiesto
Integrità : garantire l'esecuzione solo dei messaggi corretti
Confidenzialita’ : nascondere il contenuto dei messaggi
Non ripudiabilita’ : certezza di possedere informazioni che provano l’origine dei dati
Monitor : tenere traccia degli accessi
Tali servizi devono essere progettati in modo da consentire il giusto
compromesso tra livello di sicurezza e prestazioni
76
Kerberos
l
l
MIT Kerberos: sistema a tre livelli: client, server e security server
Il middleware centralizza in un solo posto (security server) tutte le
informazioni relative alla autenticazione ed autorizzazione.
» l'utente da’ una password al client
» la password viene cifrata e mandata al server Kerberos
» il server Kerberos crea un "biglietto" e lo manda al client
» il client manda il "biglietto" al server
» il server controlla il "biglietto" ed attiva la comunicazione
(1) password
Client
(2) ticket
Kerberos
Security server
(3) ticket
Server
77
Gestione dei guasti
l
l
l
l
l
l
Problema notevolmente complesso (client e server possono
"guastarsi" indipendentemente)
Gestione "proactive" dei guasti
Fault detection
Fault isolation
Fault resolution
Nel caso di piu' server che collaborano tra di loro per fornire un
servizio si adoperano protocolli tipo two-phase commit
78
Gestione del clock
l
l
l
l
Le applicazioni distribuite hanno esigenza di un singolo riferimento
orario:
» Per lo scheduling, la sequenzializzazione, la misura ed il reporting
di eventi di sistema
In caso contrario, le applicazioni distribuite non possono operare
correttamente
Un servizio di sincronizzazione regola i clock dei sistemi distribuiti per:
» Sincronizzarli l’uno con l’altro
» Aggiustarli ad un orario standardizzato
Tali servizi si basano normalmente sul protocollo Internet Network
Time Protocol (NTP)
79
NOS middleware: conclusioni
l
l
l
l
I NOS middleware sono fondamentali per sviluppare sistemi
distribuiti
Se non si dispone di tali servizi è necessario ricrearli a costi
elevati e con risultati di dubbia qualità
MOM, RDA e RPC come meccanismi di base per la
comunicazione e sincronizzazione
Servizi di sicurezza, naming e directory sono fondamentali per
una progettazione di sistemi distribuiti di qualità
80
Un esempio di NOS: Distributed Computing
Environment (DCE)
l
l
l
l
La proposta OSF DCE è un NOS aperto a più piattaforme
DCE fornisce un insieme di soluzioni NOS per integrare piu'
server in un ambiente eterogeneo
DCE consente ai client di interoperare con uno o più processi
server attivi su piattaforme differenti su differenti sistemi
operativi
DCE fornisce un approccio integrato per:
» sicurezza
» naming
» interprocess comunication
81
Caratteristiche di DCE
l
l
l
Le tecnologie chiave usate da DCE includono
» RPC
» Naming service
» time syncro service
» distributed file system
» network security service (Kerberos)
» threads
Incorporate da IBM, DEC, HP,Siemens, Cray
E' una implementazione, non una specifica !
82
DCE RPC
l
l
l
l
l
l
DCE fornisce un Interface Definition Language (IDL) ed un compilatore che facilita la
creazione di RPC. Il compilatore IDL crea codice C portabile per gli stub del client e
del server
Gli stub sono compilati e collegati alla RPC run-time library, responsabile della
localizzazione del server, dello scambio di messaggi, nonche' del packing e unpacking
degli stessi
Caratteristica fondamentale: integrazione con i servizi di sicurezza e di naming. Ogni
richiesta può essere autenticata ed il server può essere localizzato a run-time
(Kerberos)
DCE RPC fornisce indipendenza dai protocolli di trasporto
Non supporta transazioni
Rappresenta l'attuale standard di fatto
83
DCE distributed naming service
l
l
l
l
l
l
l
Il naming service di DCE consente a risorse come programmi, server, files, dischi,
code di stampa, di essere identificati da nomi user-oriented contenuti in una base di
dati specializzata che descrive gli oggetti d’interesse
I nomi degli oggetti sono indipendenti dalla locazione sulla rete
DCE divide l’ambiente distribuito in unità amministrative chiamate celle
Una cella DCE è una combinazione di workstation client e server
Il dominio della cella può essere definito dall’utente
Per ogni cella deve esserci almeno un cell directory server ed un security server
Il servizio di directory DCE consiste di due elementi:
» cell directoty service
» global directory service
84
DCE distributed naming service
l
l
l
l
Architettura a due livelli che consente di ottenere
» autonomia locale
» interoperabilità a livello globale
L’accesso globale è fornito utilizzando X.500 o il DNS di internet
Meccanismi di caching per migliorare l’efficienza
Il servizio di directory DCE può essere interrogato specificando
diversi attributi:
» yellow pages da attributi a nomi
» white pages da nomi ad attributi
» aliases
da nomi a nomi
» groups
da nomi a gruppi di nomi
85
DCE distributed Time service
l
l
l
l
l
Il servizio di timing fornisce un meccanismo per sincronizzare
ogni computer sulla rete
Il DCE timing service fornisce delle API per manipolare
timestamp e per ottenere il tempo universale da sorgenti
affidabili
Il time server è un nodo che è progettato per rispondere ad
interrogazioni sul timing delle risorse locali e remote
External time provider
Meccanismo di aggiustamento periodico
86
Lo schema di sincronizzazione usato da DCE
UTC Time Provider
Server
Time
Clerk
LAN
Global Server
Time Provider Server
LAN
Courier
Local
Server
87
DCE distributed security service e file system
l
l
I servizi di sicurezza di DCE sono ottenuti adottando il sistema
di autenticazione Kerberos del MIT
File system basato sul protocollo AFS (Andrew File System)
Carnegie Mellon University
» DCE DFS fornisce uno spazio dei nomi uniforme,
trasparenza sulla locazione dei files, elevata disponibilità
» Files e directories possono essere replicati trasparentemente
» Gestione della cache con propagazione automatica dei
cambiamenti
88
Alcune considerazioni su DCE
l
l
l
l
l
l
Tecnologia primi anni ‘90
L’insieme dei servizi risulta offerto in modo “piatto”, senza un
meccanismo efficace di aggregazione
Non sono previsti meccanismi di ereditarietà
In altre parole non è un sistema che offre in modo nativo
funzionalità di tipo object-oriented per la gestione di sistemi
distribuiti
Non prevede meccanismi espliciti per l’interazione con basi di dati
E’ una implementazione
89
Middleware WWW
Internet
l
Da ARPANET (1969) ---> "The Internet" basata su TCP/IP (1989).
Prime forme di middleware:
»
»
»
»
»
l
Email : posta elettronica (MOM middleware)
Telnet : collegamento remoto ad un sistema
FTP
: (File Transfer Protocol) semplice trasferimento di file
Gopher : prima interfaccia grafica per internet (icone x file, ecc.)
WAIS : (Wide Area Information Servers) primo motore di ricerca
1989 .... Nasce WWW: un insieme di prodotti middleware basato su
TCP/IP.
Applicazione Internet
WWW Middleware
HTTP, HTML, Web browser, Web Server
Protocolli TCP/IP
Soket, FTP, Telnet, TCP, UDP...
91
WWW middleware
l
l
Componenti essenziali:
» HTTP : Hypertext Transfer Protocol
» HTML : Hypertext Markup Language
» XML ?
» URL : Uniform Resource Locator
» Web server
» Web browser
» Gateways verso dati non WWW
» Java ?
» Corba ?
Per costruire applicazioni Internet / Intranet / Extranet
92
Architettura di base C/S
Web Browser
(Netscape, Internet Explorer...)
HTTP
Web site (e.g., www.dis.uniroma1.it)
Web server (applicazione)
File system
Pagine
HTML
93
HTTP / URL
l
Protocollo C/S basato su 4 fasi
Web
Client
(browser)
l
l
Connect
Request
Response
Close
Web
Server
Privo di stati: ogni singola connessione avviene in una sessione isolata
URL protocol://host:port/path
–
–
–
–
protocol indica il protocollo che si vuole utilizzare (il default e' http)
host e' l'indirizzo IP (simbolico/numerico) della macchina su cui risiede il server
port (opzionale) e' la porta su cui risponde il server (il default e' 80)
path e' un cammino nel file system dell'host
94
Object client
Architettura avanzata C/S
Object Server
TELNET Server
telnet
Telnet client
Corba
Web Browser
Ftp
FTP Server
Ftp client
HTTP
Web Server
Web
gateway
pagine
HTML
non web
stuff
95
Web Gateway
l
l
l
l
CGI (Common Gateway Interface ): e' un programma (script) che risiede sul server ed
e' attivato da un collegamento presente all'interno di una pagina HTML. Tipicamente
interagisce con il file system dell'host (o con un DBMS) e produce pagine HTML
dinamiche.
SSI (Server Side Include): comandi immersi all'interno di un documento HTML e
processati dal server. Non standard.
– accesso a basi di dati tramite ODBC
– controllo di flusso e cicli
Standalone server : e' un (database) server che, tra le altre cose, gestisce pagine
HTML. Ad esempio risponde ad una chiamata SQL eseguendola e generando una (o
piu') pagine html che contengono il risultato. (e.g., Interdev della Microsoft + Internet
Information Server o Oracle Web Server). Totalmente proprietario
Mobile code :
» applet: un applet java viene eseguito sul browser, attivando un dialogo con
un'altro server usando JDBC.
» servlet: il server attiva speciali processi java che diventano parte integrante del
server
96
Servlet java
l
l
l
l
l
Il client invia una richiesta HTTP al WEB server che supporta le servlet.
Sul server è presente un modulo chiamato “dispatcher” che si fa carico di assegnare
thread per servire le richieste in arrivo. Il dispatcher analizza la richiesta e controlla se
la servlet necessaria è o meno disponibile all’interno del Web server stesso.
Se la servlet non è disponibile viene scaricata dal server-deposito.
La servlet va in esecuzione, opportunamente inizializzata, e si connette, ad esempio,
ad un database tramite JDBC.
I risultati vengono opportunamente formattati in pagine HTML ed inviati al client.
97
Uno scenario piu' complesso
Traditional Server
Data Store
Traditional Client
Extensions
CGI
HTML
Java
applet
&
servlet
Server APIs
Web Server
HTTP
RPC, MSG,
OO, ...
TCP/IP
Internet/Intranet Server
Internet/Intranet Client
Browser (HTML)
Plug-Ins
Java VM
RPC, MSG,
HTTP
OO, ...
TCP/IP
Downloaded
Applets
98
Intranets, Extranets and the Internet
The Internet
Content Server
Web
Browser
Web
Server
CGI
Content
Legacy
Interfaces
API
Plug-ins
State Server
Extranets
Intranets
Content Server
Web
Browser
Web
Server
CGI
Content
Legacy
Interfaces
Global Internet
• Public applications
• Ubiquitous access
• Variable security
Extranet
• Trusted external partners
• Limited external access
• Bilateral Security
security
• Virtual private networks
Intranet
• Private applications
• No external access
• Content
Bilateral
security or
Content
Server Server
Disconnected
networks
disconnected
networks
CGI
Web
Web
Server
Browser
API
Content
Legacy
Interfaces
API
Plug-ins
Plug-ins
State Server
Intranets
State Server
Extranets
Content Server
Web
Browser
Web
Server
CGI
Content
Legacy
Interfaces
API
Plug-ins
State Server
= Security Mechanism (e.g., firewalls)
Intranets
99
Distributed Object Computing
100
Evoluzione verso il DOC
(Distributed Object Computing)
l
Crisi del mercato software. Parole d’ordine:
–
–
l
l
RIUSO
COMPONENTI
Necessità di sistemi distribuiti ma anche
INTEROPERABILI
Problemi con il middleware classico RPC/MOM
–
debolezza del modello di rappresentazione:
l
–
la funzione, un nome, parametri di input parametri di output
mancanza di uno standard e quindi di trasparenza tra linguaggi,
piattaforme, Sist. Op.
101
Distributed Object Computing
l
l
l
Paradigma “ideale” per sistemi informativi distribuiti
Un insieme di oggetti (nel senso Object Oriented) che comunicano
trasparentemente tra loro attraverso scambio messaggi.
Un oggetto puo’:
» identificare altri oggetti sulla rete,
» scoprire dinamicamente cosa un altro oggetto e’ abilitato a fare
» inviare un messaggio ad un altro oggetto e ricevere la risposta
in modo sincrono o asincrono
» utilizzare servizi generali, anche molto sofisticati, disponibili
in rete partecipando alla realizzazione di un sistema complesso
102
Caratteristiche tecniche ed organizzative del
DOC
l
l
l
Non c’e’ piu’ una chiara e netta distinzione tra Client e Server, un
oggetto puo’ essere client e server contemporaneamente
La granularita’ degli oggetti sulla rete puo’ essere molto piu’ fine
rispetto a qella implicitamente considerata nel C/S tradizionale
Attraverso l’incapsulamento di dati e servizi, un oggetto distribuito
si presta in modo naturale a modellare un Oggetto di Business per
una organizzazione: una risorsa che puo' essere acceduta
trasparentemente e che svolge un ruolo specifico nei processi
aziendali e interaziendali (e.g., fattura, cliente, ordine)
103
Interoperabilita’
l
Per realizzare questo concetto cosi’ evoluto di sistema distribuito e
per renderlo realmente attuabile risulta fondamentale non porre
vincoli:
» sulle piattaforme hardware
» sui sistemi operativi utilizzati
» sui protocolli di comunicazione
» sui linguaggi di programmazione utilizzati (anche non OO)
» sull’esistenza di sistemi chiusi ereditati dal passato (legacy)
104
Middleware per realizzare il paradigma
DOC: Object Request Brocker (ORB)
l
l
l
l
L’ORB e’ il middleware che stabilisce la relazione C/S tra oggetti
Usando un ORB un oggetto client puo’ trasparentemente invocare un
metodo su un oggetto server che puo’ risiedere sulla stessa macchina o
sulla rete
L’ORB intercetta la chiamata ed e’ chiamato in causa per identificare un
oggetto in grado di implementare il servizio richiesto, passargli i
parametri, invocare il suo metodo e restituire il risultato
Il client non deve essere a conoscenza della locazione dell’oggetto, il suo
linguaggio di programmazione, SO e tutto cio’ che non e’ parte della sua
INTERFACCIA
ORB
105
Consenso
l
Per realizzare un sistema in grado di offrire tali caratteristiche e
mantenere tutti i livelli di indipendenza necessari, risulta essenziale
stabilire un consenso tra i soggetti coinvolti nella definizione e
realizzazione dei sistemi informativi distribuiti. Ci dovra’ essere
consenso su:
» un modello a oggetti
» su un protocollo di comunicazione (tra ORB e oggetti)
» sul modo di specificare l’interfaccia esterna degli oggetti
106
OMG
(Object Management Group)
Organizzazione senza fini di lucro fondata negli Stati Uniti, con
sedi in Inghilterra, Giappone e Germania.
l
Nasce nell’aprile del 1989.
l
Circa 20 persone.
l
Obbiettivo principale: creazione e diffusione di standard OO
basati sull’utilizzo di tecnologie esistenti.
l
www.omg.org
107
Obbiettivi della proposta OMG
l
Sviluppare un’architettura distribuita OO garantendo:
• riusabilita’ dei componenti;
• interoperabilita’ e portabilita’;
• utilizzando software commercialmente disponibile
l
Per mezzo di
• Unica terminologia per il mondo OO
• Un quadro di riferimento comune
• Un modello di riferimento comune
• Interfacce e protocolli comuni
108
Worldwide Scope
Andersen
CI Labs
ICL
Sun Microsystems
Novell
APM
Data Access
Informix
Sybase
Object Design
Apple
Digital
Intel
Symantec
ASCII
EDS
IntelliCorp
Taligent
Object Tech.
Int’l.
AT&T
Expersoft
IBM
Telefonica I+D
Oracle
Bell Northern
Fujitsu
Micro Focus
Tivoli
OSF
Borland
Genesis
Microsoft
TRW
ParcPlace
Bull
HP
MITRE
Unisys
POSC
CA
HyperDesk
NeXT
Xerox
Siemens Nixdorf
Software AG
109
OMA: Object Management Architetcture
Documento di riferimento:
Motivazioni dell'approccio OO.
Obbiettivi di OMG.
Modello OO di riferimento.
Architettura di riferimento.
Glossario.
110
CORE Object Model
l
Oggetti: ogni tipo di entita' o concetto caratterizzato da una
propria identita'
l
Operazioni: Le operazioni sono servizi forniti dagli oggetti.
l
Ogni operazione ha una signature: nome, parametri e risultati
l
Richieste: invocazioni di operazioni.
l
Non oggetti: interi, boolean.....
l
Interfacce: Una collezione di operation signatures
l
Tipi: Ereditarieta' e sottotipi
111
CORBA
l L'architettura CORBA (Common Object Request Broker
Architectur) è un ambiente standard a livello di middleware
che permette l'interoperabilità tra oggetti in sistemi
distribuiti eterogenei. Il cuore di Corba e’ l’ORB
112
ORB+STUB&IDL
C,C++
Smalltalk
Cobol
C,C++
Smalltalk
Cobol
IDL
IDL
IDL
IDL
IDL
IDL
Client
Server
Object Request Broker (ORB)
113
Implementazioni di ORB
Client-and implementation-resident
ORB e' implementato come una libreria
(routines) e quindi risiede nel codice del
client e della applicazione
Server-based
ORB e' implementato come server
System-based
ORB e' parte del sistema operativo
114
OMG IDL
OMG IDL e' OO:
• ereditarieta' multipla, fortemente tipato;
• è molto simile al sottoinsieme del linguaggio C++ per la
dichiarazione dei tipi
• indipendente dal linguaggio/compilatore usato;
• compilatore IDL disponibile per vari linguaggi/compilatori;
• binding statico
• binding dinamico.
• trovare l'oggetto;
• trovare l'interfaccia dell'oggetto;
• creare la richiesta;
• inviare la richiesta;
• ricevere la risposta.
115
Decomposizione della chiamata
Caller
Stub
Interconnection Network
Skeleton
Callee
•Stub e skeleton vengono generati
compilando la loro definizione (IDL)
•Stub
= DCE client stub
•Skeleton = DCE server stub
116
OMA Overview
Le applicazioni non
sono standardizzate
da OMG
Application
Objects
Business Objects
Compound Docs
Object Linking
Help Facilities
Desktop Mgmt
Common Facilities
Object Request Broker
Lifecycle
Events
Naming
Persistence
Transactions
Common Services
Middleware
Concurrency
Security
Time
Properties
Query
117
Interfacce
Implementation
Installation
IDL Interface
Definitions
Interface
Repository
Accesses
Client
Stubs
Includes
Client
Implementation
Skeletons
Includes
Implementation
Repository
Describes
Object Implementation
» Ogni oggetto ha la sua interfaccia definita tramite IDL.
» Tali definizioni (oggetti a loro volta) sono memorizzati nell'
Interface Repository
» L'Implementation Repository contiene la descrizione della
implementazione degli oggetti.
118
Componenti CORBA
Object Implementation
Client
Dynamic
Invocation
Client
Stubs
ORB
Interface
Implementation
Skeletons
Object
Adapter
ORB Core
One interface
One interface per object adaptor
One interface per object operation
Proprietary interface
Normal call interface
Up call interface
119
Client stubs
Object Implementation
Client
Dynamic
Invocation
Client
Stubs
ORB
Interface
ORB Core
Skeletons
Object
Adapter
•Sono le interfacce ai servizi degli oggetti. Questi stubs precompilati
definiscono come i clients invocano i servizi corrispondenti sui servers.
•Un client deve avere uno stub IDL per ogni interfaccia che usa sul
server. Lo stub include: codice per effettuare “marshaling” che consiste
nel codificare l’operazione e i suoi parametri nel formato del messaggio
che deve essere inoltrato al server; file di header che consentono di
invocare il metodo sul server da un linguaggio di alto livello.
120
Dynamic Invocation Interface
Object Implementation
Client
Dynamic
Invocation
Client
Stubs
ORB
Interface
ORB Core
Skeletons
Object
Adapter
Consente di scoprire il metodo da invocare a run time.
Corba prevede delle Api che permettono di cercare i
metadati che definiscono l’interfaccia del server , di
effettuare una chiamata remota ed ottenere i risultati a
tempo di esecuzione.
121
Orb Interface
Object Implementation
Client
Dynamic
Invocation
Client
Stubs
ORB
Interface
ORB Core
Skeletons
Object
Adapter
Consiste di poche Api a servizi locali che possono
essere di interesse per un’applicazione. Ad esempio
fornisce Api per convertire un Object Reference
(identificatore dell’oggetto) in una stringa e viceversa.
122
Server IDL stubs
Object Implementation
Client
Dynamic
Invocation
Client
Stubs
ORB
Interface
ORB Core
Skeletons
Object
Adapter
Sono chiamati skeleton secondo la specifica OMG. Forniscono le
interfacce per ogni servizio esportato dal server. Questi stubs, come
quelli del client, sono creati usando un precompilatore IDL.
Non distinguono una chiamata statica da una dinamica
123
Object Adapter
Object Implementation
Client
Dynamic
Invocation
Client
Stubs
ORB
Interface
ORB Core
Skeletons
Object
Adapter
Accetta le richieste di servizi per conto degli oggetti server. I servizi principali forniti
dall’OA sono:
•istanziare gli oggetti server, ovvero creare delle istanze di oggetti a partire dalle classi
•passare loro le richieste dei clients
•assegnare agli oggetti degli IOR(Identifier’s Object Reference)
•registrare le classi implementate e le loro istanze a tempo di esecuzione(cioè gli oggetti)
nell’Implementation Repository.
•Ogni orb deve supportare un adapter standard chiamato Basic Object Adpter (BOA).
124
Implementazioni di CORBA
l
l
l
l
l
l
l
l
l
IONA Technologies ORBIX
IBM SOM/DSOM
ExpertSoft PowerBroker
Digital Object Broker
Sun NEO
ICL DAIS
Visigenic VisiBroker
HP ORB Plus
SNI Orblet
125
ORB to ORB Interoperability
Client
IDL
Obj Impl
IDL
ORB
ORB
Client
Obj Impl
IDL
IDL
ORB
ORB
IDL
IDL
Client
Obj Impl
126
Interoperabilita' di CORBA 2.0
l
l
l
l
l
Architettura globale per comunicazioni CORBA-CORBA;
Un API per aggiungere bridge;
Un formato generale per il trasporto di messaggi (GIOP:
General Inter-ORB Protocol);
Un Internet Inter-Orb protocol (IIOP) che specifica come
messaggi GIOP vadano scambiati su TCP/IP
Un API per gateways basato su ESIOPs: Environment-Specific
Inter-ORB Protocols (in alternativa a GIOP)
127
CORBA / DCE
l
l
l
Caratteristiche comuni
» funzionalita' ad alto livello simili
» basati su IDL
Differenze significative:
» Corba e' una specifica, DCE una implementazione
» DCE e' procedurale, Corba e' OO
» Corba prevede il binding dinamico
Efficienza
» DCE RPC prevede un insieme di funzioni aggiuntive che
appesantiscono il tutto
» ORB puo' effettuare collegamenti diretti
» La tendenza e' di implementare ORB tramite DCE RPC quindi...
128
Compound Document Middleware: OLE
(Object Linking and Embedding)
l
l
Introdotto da Microsoft nel 90 (OLE 1)
Viene aggiornato nel 93 (OLE 2) con utilizzando la tecnologia oo
COM (Component Object Model) simile a corba, in quanto prevede un
IDL, e poi (96) conosciuto come DCOM (Distributed COM) base per
ActiveX
Structured
Storage
Uniform
Data
Transfer
Compound
Document
Management
Automation
and
Scripting
Distributed Component Object Model (DCOM)
129
CORBA / DCOM
l
l
CORBA
» Pro: architettura matura (1990)
» Pro: modello ben definito
» Pro: multi fornitore
» Con: poco diffusa e non molte implementazioni grandi
DCOM
» Pro: architettura molto vicina alla user interface
» Pro: possibilita’ di grande diffusione
» Con: molto giovane (1996), modello ancora non maturo
» Con: attualmente mono-fornitore
130
OpenDoc
l
Progettato da Apple, alternativa a OLE, ora promosso anche da
Component Integration Laboratories (CI Lab) fondato da Apple,IBM,
Oracle, Novell, Sunsoft, Xerox e Word Perfect:
–
–
–
–
implemantazioni per Windows, OS/2, Unix e Macintosh
IBM System Model (SOM), Corba compatibile per object linking
Apple Open Scripting Architecture (OSA)
Futura compatibilita' con OLE
Bento
Storage
Uniform
Data
Transfer
Compound
Document
Management
Open
Scripting
Architecture
System Object Model (SOM)
131
OLE / OpenDoc
l
l
l
l
Simili obbiettivi e funzionalita'
OLE non prevede ereditarieta', polimorfismo, documenti su
piattaforme differenti, OpenDoc si'.
OLE e' legato a Microsoft ed e' molto piu' usato
OpenDoc e' Corba compatibile
132
ActiveX
Introdotto da Microsoft nel 96 con l'obbiettivo di integrare il desktop
con il WWW utilizzando DCOM come tecnologia di base (broker)
per i collegamenti remoti. Esempi:
– Un applet java puo' chiamare un documento word remoto
– Un web browser puo' contenere documenti word, excel, ecc..
– E' possibile collegarsi ad un SQL server da qualunque oggetto
Other
components
Transaction
Scripting
Java Applets
ActiveX
Documents
OLE
Compound
Documents
OLE2.0
l
Distributed Component Object Model (DCOM)
133
OCX: ActiveX controls
l
l
l
l
l
Simili ad un applet java
Possono essere scritti in altri linguaggi (C, C++)
Sono scaricati in binario (quindi il client DEVE essere
Microsoft)
Sono piu' efficienti
Possono essere immerse in altri contenitori (e.g., un programma
Visual Basic)
134
Oracle Network Computing Architecture NCA
l
l
l
l
Architettura C/S tre livelli:
Universal data server: Oracle DBMS
Application server: Oracle Web Application Server, ovvero un
server HTML + …
Universal client: apertura ad ogni possibile client:
» applicazione java
» client corba
» browser
135
NCA: architettura di massima
l
l
l
Cartridge: componenti software riusabili ed estendibili
Inter-Cartridge Exchange (ICX) : software che consente la
comunicazione tra cartridges mediante protocolli aperti e
interfacce standardizzate (e.g., IIOP, HTTP e POP3/IMAP4)
Client, Web Application Server, Universal Data Server
136
Cartridge
l
Possono essere scritti in Java, PL/SQL, Perl, e C :
» I client cartridge contengono logica di visualizzazione per estendere
ed aumentare i servizi di presentazione sul solo livello client (e.g,
Java UI applet).
» Gli application server cartridge contengono logica applicativa. I
servizi di load balancing, di sicurezza, di gestione delle transazioni
sono forniti dal Web Application Server 3.0 (!)
» I data cartridge contengono la logica di manipolazione dei dati e
possono essere scritti in PL/SQL, C/C++ o Java con IDL mapping e
plug nel database server.
137
Web Application Server
l
Supporta gli application cartridges per programmi basati su
HTTP/HTML. Fornisce i servizi di un ORB Corba-compliant ai
“web” cartidges, consentendo un’integrazione tra applicazioni
web-based e object-based.
Web Request Broker
E’ un gestore di richieste
asincrono
e
fornisce
un’architettura che permette
ad applicazioni Web serverside (cartridge) di girare sotto
un qualsiasi server http su cui
il WRB è trasportato. Il WRB
offre capacità simili ai CGI
offrendo, pero’, prestazioni
migliori grazie alla sua
architettura multi-processo
138
Struttura dell’interazione
1) Il client effettua una richiesta ad un cartridge WRB
2) Il Listener riceve la richiesta e la passa al Dispatcher, il cui compito
è di instradare la richiesta all’istanza del cartridge
3) Il Dispatcher fa una delle due cose seguenti:
» Se esiste un’istanza di cartridge libera, le invia la richiesta;
» altrimenti chiede al WRB di creare una nuova istanza di
cartridge che notifica al al Dispatcher, tramite WRB, la sua
esistenza. Il Dispatcher, poi, invia la richiesta alla nuova istanza
4) L’istanza del cartridge tratta la richiesta ed invia la risposta, diretta
al client, al Dispatcher
5) Il Dispatcher passa la risposta al listener e questo al client.
139
Cartrige supportati da WRB
l
l
l
l
l
PL/SQL cartridges: eseguono comandi PL/SQL memorizzati in un
database. Sono migliori dei Java cartridges per l’accesso ai databases
ma non hanno le stesse funzionalità
Java cartridges: consentono di eseguire java sul server per generare
pagine HTML dinamiche si può anche eseguire PL/SQL embedded
Live HTML cartridges: sono un’implementazione di Oracle e
consentono di includere in pagine HTML l’output di ogni
programma eseguibile dal corrente sistema operativo
Cartridges “dello sviluppatore”: Poiché il WRB utilizza API aperte,
si possono scrivere dei cartridges “propri”che le usino. Per ora e’
previsto solo il C.
Third Party Cartridges: poiché il WRB usa API aperte, diversi
vendors indipendenti stanno scrivendo cartridges per esso.
140
Legacy Systems
141
Legacy Systems
l
l
Un legacy information system (LIS) è un sistema che resiste ad evoluzioni e modifiche
necessarie per supportare i nuovi e mutevoli requisiti di una organizzazione
Caratteristiche fondamentali:
» e’ fondamentale per l’organizzazione
» risiede su mainframe (tipicamente IBM)
» è enorme (milioni di linee di codice)
» è vecchio (almeno 10 anni) e di vecchia concezione
» è scritto in un linguaggio di vecchia generazione (come il COBOL, PL1, assembler)
» è supportato da un DBMS anch’esso antiquato, sempre che esista un DBMS e non
si faccia ricorso al file system (e.g., VSAM)
» è autonomo, ovvero non è interfacciato con altre applicazioni e opera per lo più
indipendentemente
» Mission critical:deve rimanere operativo al 100% e spesso 24 ore su 24
» Non e’ ben documentato o non e’ documentato per nulla
» offre, a volte, elevati livelli di prestazioni e di affidabilita’
142
Strategie per il cambiamento
l
Problemi
– Manutenzione lenta e costosa
– Totale mancanza di flessibilita’
– Assenza di competenze
Tre macrostrategie per il cambiamento
– Taglio netto col passato
– Migrazione graduale
– Integrazione (leverage legacy)
l il DOC puo’ avere un ruolo essenziale
l
Attivita’
–
–
–
–
–
reverse engineering
forward engineering
reengineering
wrapping
revamping
143
Taglio netto (cold turkey)
l
l
Si tratta di riscrivere il LIS, utilizzando tecnologie moderne.
Questo approccio comporta dei rischi sostanziali:
» si deve fornire un sistema migliore. E’ probabile che il nuovo IS
richieda anche nuove funzionalità, il che comporta rischi aggiuntivi.
» le esigenze dell’organizzazione non stanno ad aspettare. Lo
sviluppo di un IS richiede anni, nel frattempo il LIS viene (nuove esigenze,
manutenzione,ecc) il che comporta che deve modificarsi di pari passo anche
il Target IS. Il rischio è in questa continua modifica durante lo sviluppo
dell’IS
» esistono raramente delle specifiche. La sola documentazione per il
LIS è tipicamente il codice stesso
» esistono spesso dipendenze non documentate. Inevitabilmente nel
corso degli anni varie applicazioni, non documentate, si sono appoggiate ai
LIS per informazioni o servizi.
144
Taglio netto: rischi
» il LIS può essere troppo grande per interrompere il suo accesso ai dati. Molti LIS
devono essere operativi per il 100% del tempo, mentre la migrazione dei dati richiede
settimane
» la gestione di grandi progetti è rischiosa. E’ un aspetto molto sottostimato che
comprende la complessità di ripartizione del lavoro, di formazione di nuovo
personale di sviluppo e di gestione delle interazioni
» i ritardi non sono sempre tollerati. Grandi progetti comportano quasi inevitabilmente
dei ritardi
» grandi progetti tendono a gonfiarsi. E’ tipico che una organizzazione che intenda
affrontare un progetto così ampio decida di arricchirlo di studi sull’introduzione di
nuove tecniche e tecnologie, ecc.
» timori. Le paure e incertezze legate a questo approccio spesso irrigidiscono le
organizzazioni, facendo loro preferire un inefficace ma tranquillo LIS
» l’analisi paralizza il processo di produzione del LIS. L’approccio con taglio netto non
può iniziare se prima non si è capita ogni cosa del LIS e delle nuove specifiche,
cosicché la fase di analisi cresce a dismisura senza vedere una linea di codice
145
L’approccio graduale
l
L’obiettivo di questo approccio è quello di mantenere costantemente in
attività l’IS ed al tempo stesso di venire incontro alle necessità del
committente
» L’approccio graduale comporta la migrazione del LIS in loco, con
piccoli passi incrementali fino a che l’obiettivo a lungo termine
pianificato non viene raggiunto.
» Ogni passo richiede un impiego di risorse relativamente basso (pochi
anni-uomo) e poco tempo. Si produce così un piccolo risultato nella
direzione dell’obiettivo (un incremento) , motivo per il quale si parla
di metodologia di migrazione incrementale.
» Questo approccio permette ai pianificatori di controllare il rischio
passo per passo, scegliendo opportunamente la dimensione
dell’incremento
146
Il ruolo dei gateway
TARGET GUI
LEGACY USER
INTERFACE
Gateway
LEGACY IS
TARGET IS
147
Travaso delle funzioni nel tempo
Target
funzioni
Legacy
tempo
148
Integrazione parziale
l
l
Processo di migrazione parziale che utilizza tecnologie DOC e basata sul
wrapping
WRAPPER: strato software che nasconde la sottostante implementazione
delle funzionalita’ disponibili, presentandole attraverso una interfaccia ben
definita
•Migrazione interfaccia utente
•Migrazione dei dati
•Costruzione insieme di oggetti DOC tramite wrapping sul LIS che rimane
intoccato
149
Strategie di trattamento
Legacy System
utilizza
trattamento
reverse e/o
reengineering
sostituzione
sostituzione a
taglio netto
integrazione
migrazione
(sostituzione
incrementale)
utilizza
wrapping
150
Decomposizione dell’IS ai fini della migrazione
l
Si può pensare di considerare tre componenti fondamentali per
un IS:
» le interfacce utente
» le applicazioni
» il servizio database
l
l
Piu’ le componenti sono distinte tra loro piu’ facile risulta il
processo di migrazione
Si individuano quattro casi, caratterizzati da un livello crescente
di difficolta’
151
Architetture
decomponibili
Progettati utilizzando tecniche strutturate
tradizionali (e.g., SADT) rappresentano il
caso migliore; le interfacce, le applicazioni, i
servizi di accesso ai dati sono componenti
distinte con interfacce precise.
I LIS decomponibili sono costituiti da un
insieme di moduli indipendenti, ovvero
senza struttura gerarchica e interagenti
ognuno con un servizio di accesso ai dati e,
potenzialmente, ognuno con la sua
interfaccia utente e di sistema con uno o più
IS, ma non tra di loro.
Presentazione
Logica
Applicativa
Accesso
ai Dati
152
Architetture semidecomponibili
I LIS semidecomponibili hanno la logica applicativa fusa con lo strato di
presentazione (data decomponibile) o con le procedure di accesso ai dati
(program decomponibile) o perche’ la sua struttura è complessa, o non
adeguatamente supportata da tecnologie standard, o ancora perché mal
progettata.
Tutto ciò rende la migrazione più complicata e suscettibile di errore.
Presentazione
Presentazione
Logica
Applicativa
Accesso
ai Dati
Data decomponibile
Logica
Applicativa
Accesso ai Dati
Program decomponibile
153
Architetture non decomponibili
I LIS non decomponibili sono scatole
nere attraverso le quali non è possibile
distinguere nessun componente
funzionale: gli utenti finali e gli IS
interagiscono attraverso un modulo o
componente del tutto non strutturato.
Evidentemente è il caso peggiore da
affrontare durante una migrazione
Presentazione
Logica
Applicativa
Accesso ai
Dati
154
Migrazione totale incrementale
l
l
l
l
Il metodo consta in un certo numero di passi che comportano piccole
migrazioni locali. Più indipendenti sono questi passi, maggiore è la
flessibilità del metodo rispetto alle particolari esigenze informative e
tecnologiche
Risulta evidente come siano i gateway uno degli strumenti fondamentali
della migrazione
La riduzione dei rischi è uno degli obiettivi fondamentali di questa
strategia, fornendo un punto di ritorno sicuro per ogni passo, che non
metta in pericolo tutto il progetto.
I passi possono essere riarrangiati per meglio aderire alle problematiche
e, se realizzati con effettiva indipendenza reciproca, possono anche
procedere in parallelo
155
Inizio della migrazione
I passi dell’approccio graduale
1 Analisi incrementale del LIS.
2 Decomposizione incrementale dell’architettura del
LIS.
3 Disegno incrementale delle interfacce del TIS.
4 Disegno incrementale delle applicazioni del TIS.
5 Disegno incrementale del database del TIS.
6 Installazione incrementale dell’ambiente del TIS.
7 Creazione e installazione incrementale dei gateway
necessari.
8 Migrazione incrementale del database del LIS.
9 Migrazione incrementale delle applicazioni del LIS.
10 Migrazione incrementale delle interfacce del LIS.
11 Distacco incrementale verso il TIS.
1
3
4
5
6
8
9
10
7
2
11
Fine della migrazione
156
Inizio della migrazione
Analisi incrementale del LIS
è importante che si comprenda il LIS in
un giusto livello di dettaglio e si
compiano progressi
nell’approfondimento dei requisiti lungo
una specifica direzione prestabilita:
procedere senza un obiettivo preciso può
paralizzare l’analisi. Spesso i requisiti
iniziali del LIS sono ormai inesistenti o
non attuali, ed è necessario il più delle
volte operare un reverse engineering per
ricostruirli,
in realtà si finisce per sviluppare le
specifiche del vecchio e del nuovo IS.
1
3
4
5
6
8
9
10
7
2
11
Fine della migrazione
157
Decomposizione incrementale dell’
architettura del LIS
si effettuano modifiche al sistema per
assicurarsi che sia decomponibile,
vengono quindi rimosse le chiamate di
procedura e si ispeziona l’esistenza di
interfacce ben definite tra moduli e
servizi database.
Il costo di questo passo dipende dalla
struttura del LIS, e se non è possibile
ristrutturarlo possono comunque essere
adottate e studiate varianti del metodo.
Inizio della migrazione
1
3
4
5
6
8
9
10
7
2
11
Fine della migrazione
158
Disegno incrementale delle
interfacce utente del TIS
si effettua il disegno e la specifica delle
interfacce del TIS con una effettiva
pianificazione della migrazione a questo
livello, che comprende anche la decisione
di utilizzare o meno un IS gateway.
Se non vengono aggiunte funzionalità
significative nella migrazione, i moduli delle
applicazioni legacy e target saranno
necessariamente simili
Inizio della migrazione
1
3
4
5
6
8
9
10
7
2
11
Fine della migrazione
159
Disegno incrementale delle
applicazioni del TIS
Inizio della migrazione
1
le applicazioni che vanno sviluppate per il
TIS vanno progettate in base ai processi e
alle norme dell’organizzazione e a volte
tagliate sulle vecchie applicazioni dopo una
fase di reengineering.
reengineering
Le decisioni vanno prese, in questo caso,
sulla base dell’analisi iniziale e su quella
dei rischi
Possibilità di realizzare oggetti di business
piuttosto che semplici applicazioni
3
4
5
6
8
9
10
7
2
11
Fine della migrazione
160
Disegno incrementale del
database del TIS
si disegna lo schema relazionale del TIS
basandosi sui risultati delle fasi precedenti e sulla
comprensione del target e legacy IS.
A meno che non si tratti di requisiti insoliti, è bene
utilizzare un DBMS relazionale basato sull’SQL.
Questo passo può essere anche molto complesso
per via del codice legacy o dei requisiti delle
applicazioni: può essere difficile derivare la
struttura dei dati, tipicamente distribuita su tutta
l’applicazione.
Parte dello schema relazionale può essere
dedicato alla implementazione dello stato
persistente degli Oggetti di Business
Inizio della migrazione
1
3
4
5
6
8
9
10
7
2
11
Fine della migrazione
161
Installazione incrementale
dell’ambiente del TIS
si identificano i requisiti dell’ambiente del
TIS sulla base dei requisiti globali, quindi si
seleziona l’ambiente stesso ed lo si testa in
modo approssimativo per ricavarne
informazioni sulle performance ed altro.
Dopodiché viene installato possibilmente in
un ambiente distribuito, passando da dumb
computer a PC o workstation connesse in
LAN, il che dovrebbe facilitare la
costruzione di programmi GUI e
l’alleggerimento del codice distribuendolo
opportunamente tra server e client, dove il
costo dei MIPS è praticamente nullo
Inizio della migrazione
1
3
4
5
6
8
9
10
7
2
11
Fine della migrazione
162
Creazione e installazione
incrementale dei gateway
necessari
vengono sviluppati e installati i
gateway in base alle esigenze delle
applicazioni (è probabile che si renda
necessaria la costruzione di più
gateway) e tenendo conto delle
funzionalità, della posizione
architetturale e dei requisiti non
funzionali. A questo punto si presenta
l’alternativa del make or buy dato che
esistono diversi prodotti commerciali
che offrono alcune di queste
funzionalità.
Possibilità di scelta di CORBA
Inizio della migrazione
1
3
4
5
6
8
9
10
7
2
11
Fine della migrazione
163
Migrazione incrementale del
database del LIS
Inizio della migrazione
1
viene implementato lo schema
disegnato al passo 5 ed effettuata la
migrazione del legacy database con
l’ausilio del gateway per supportare le
chiamate delle applicazioni del LIS.
Questa operazione comporta una
notevole quantità di lavoro, che può
essere affrontato anch’esso
incrementalmente, complicando le
funzionalità del gateway
3
4
5
6
8
9
10
7
2
11
Fine della migrazione
164
Inizio della migrazione
Migrazione incrementale delle
applicazioni del LIS
1
vengono selezionati e fatti migrare uno o
più moduli, con criteri tecnici ed
organizzativi (semplicità, costi, priorità),
sviluppandoli in modo tale che possano
interagire direttamente con il nuovo DBMS.
3
4
5
6
8
9
10
7
2
11
Fine della migrazione
165
Inizio della migrazione
Migrazione incrementale delle
interfacce del LIS
1
vengono selezionate e fatte migrare uno o
più interfacce. Se viene utilizzato un 4GL
per supportare lo sviluppo di interfacce ed
applicazioni, la relativa migrazione può
essere coordinata e le interfacce del TIS
gireranno direttamente su un ambiente
4GL/GUI, mentre le rimanenti interfacce
continuano ad convivere con esse. Può
essere utilizzato un IS gateway per
supportare la migrazione
3
4
5
6
8
9
10
7
2
11
Fine della migrazione
166
Distacco incrementale verso il
TIS
il distacco consiste nello switch dalle
componenti del LIS alle corrispondenti del
TIS, spesso accompagnato da problemi di
gestione della configurazione e controllo
della versione.
Inizio della migrazione
1
3
4
5
6
8
9
10
7
2
11
Fine della migrazione
167
Migrazione delle interfacce utente
l
l
l
l
l
Spesso cio’ che serve e’ solo “mettere il sistema su Internet” e dotarlo di una
interfaccia grafica.
Middleware ad hoc: screen scraper e linguaggi di scripting. Non richiedono alcun
intervento sul Legacy System (e quindi sono applicabili a tutti i tipi di sistemi, anche
quelli monolitici), ma soffrono di problemi di prestazioni.
Una scelta migliore è quella di sostituire l’interfaccia utente, riscrivendola, ma questo
è possibile solo nel caso di sistemi altamente decomponibili o program
decomponibili. Esistono comunque dei tool che, partendo dal codice sorgente della
vecchia interfaccia, aiutano nel processo di Reverse Engineering e di riscrittura della
nuova GUI.
Nella pratica, si adotta un approccio misto, per cui inizialmente, con lo screen
scraping, si offre subito la nuova interfaccia (verificandone anche l’accettabilità da
parte dell’utente – si fa cioè un prototipo) e nel contempo si comincia la riscrittura.
Alla fine del processo la vecchia interfaccia e lo screen scraper (che quindi si
configura come software “usa e getta” per il periodo della migrazione) verranno
ritirate.
168
Migrazione dei dati
l
l
l
l
l
l
conversione (ad esempio da database non relazionale a relazionale)
trasformazione (ad esempio creazione di viste o dati di sommario)
spostamento (ad esempio da database su mainframe ad uno su UNIX)
allocazione (ad esempio da un database centralizzato a più database
distribuiti)
e’ generalmente piu’ semplice della migrazione dell’applicazione e quindi
spesso avviene che il vecchio LIS diventi client di un DBMS basato su nuove
tecnologie (su cui, spesso, insistono anche applicazioni di DataWarehousing)
Sono disponibili, anche in questo caso, strumenti automatici di supporto, sia
per lo scaricamento dei dati in formati intermedi comprensibili che per la
traduzione automatica tra coppie prefissate di ambienti (e.g., il sistema
gerarchicoInformation Management System e DB2)
169
Integrazione tramite DOC
l
l
Si costruiscono sul LIS dei wrapper che presentano al mondo
esterno (OO) dei servizi ben definiti
Ad esempio, tramite screen scraper si puo’ pensare di costruire
il metodo dammi_targhe(Codice_Fiscale) sulla base di dati
legacy dell’ ACI che restituisce l’elenco delle targhe delle
macchine possedute dall’utente in questione, registrare tale
metodo come un metodo di un oggetto CORBA ed invocarlo
tramite ORB
» tramite un browser Corb compliant
» tramite una servlet java attivata su un Web Server
» tramite un client “tradizionale” usando IIOP
» ....
170
Riferimenti
• A. Umar - Object-Oriented, Client-Server, Internet Environments Prentice Hall, 1997
• A. Umar - Application (Re)engineering: Building Web-Based
Applications and Dealing with Legacies - Prentice Hall, 1997 OMG - The
Common Object Request Broker: Architecture and Specification OMG, 1991
• M.L.Brodie, M. Stonebraker - Migrating Legacy Systems Gateways,
Interfaces & The Incremental approach- Morgan Kaufmann Oublisher,
Inc, 1995Oracle 8 and Java- An Oracle Technical White Paper, 1997
• Sun Microsystems - The Java Language Environment: a White Paper 1995
• Oracle 8 Universal Data Server Release 8
http://www.oracle.com/support/products/o8s/sco/html/xo8wgds4.html
171