Distributed Object Computing Ing. Massimo Mecella mecella@iol.it
Evoluzione Architetturale Centralizzata Monolitica anni ‘60 -’70 Reti locali di PC anni ‘80 Reti Client Server anni ‘80 - ‘90 Internet “The network is the computer”
Esigenze e Nuove Esigenze Le informazioni e le organizzazioni sono distribuite Scalabilità Condivisione Efficienza Sicurezza Integrare l’esistente Trovare un modello che semplifichi il concetto di interoperabilita tra applicazioni distribuite Permettere il riuso a diversi livelli
L’approccio OO Object Orientation is a technique for system modeling...using it we model the system as a number of objects that interact [I. Jacobson] SW riutilizzabile: applicazioni preesistenti (legacy) possono essere intelligentemente recuperate (incapsulate) e riutilizzate a differenti livelli di integrazione via incapsulamento e ereditarietà SW estendibile (incrementabile): l’aggiunta di nuovi tipi di oggetti, in molti casi, non influenza minimamente gli altri via ereditarietà e polimorfismo
DC + OO Distributed Computing (DC) già risponde alla esigenza di decentralizzare l’elaborazione OO offre un modello più naturale e flessibile semplificazione del concetto di interoperabilità tra risorse distribuite
Dall’OO alla DOC Gli oggetti possono risiedere in processi o macchine diverse
Cosa manca? Comunicazione Sicurezza Localizzazione …. ?
Broker Architecture ORB (Object Request Broker): elemento chiave di comunicazione per gestire l’interoperabilità tra oggetti BROKER
Vantaggi del Broker Consente agli oggetti di fare richieste e ricevere risposte in modo trasparente in un ambiente distribuito Consente di localizzare gli oggetti remoti Gestisce la sicurezza delle comunicazioni
Broker principi (1) Interfaccia Implementazione
Broker principi (2) CLIENTE Operation() in args out args + return value
CORBA L'architettura CORBA (Common Object Request Broker Architecture) è un framework standard a livello di middleware per l'interoperabilità tra oggetti in sistemi distribuiti eterogenei Object Request Broker IDL Framework di servizi definiti
Interface Definition Language E’ un linguaggio di definizione delle interfacce specifica i servizi che un oggetto mette a disposizione è indipendente dal linguaggio di programmazione è simile al sottoinsieme del linguaggio C++ per la dichiarazione dei tipi ha il concetto di interfaccia derivata che eredita operazioni e tipi definiti nell'interfaccia base
Terminologia Il client è un applicazione che “usa” gli oggetti messi a disposizione dalle interfacce IDL Un server è un programma che mette a disposizione istanze di oggetti definiti da un interfaccia IDL
Architettura Common Object Request Broker Archtecture (CORBA) Domain Interfaces CORBAFacilities CORBAServices e.g. mail, printing, help, GUI Application Interfaces e.g. naming,transactions, security, time
ORB
COS Common Object Services Transactions Naming Security ...il supporto necessario I servizi messi a disposizione da Corba aiutano a determinare gli oggetti che sono in rete, ne permettono la creazione, il mantenimento, l’ accesso e l’invocazione dei loro metodi
L’object model di CORBA client object implementation request Viene enfatizzato il ruolo di un'entità (client) in grado di richiedere servizi a un oggetto (server) L’object implementation è l'insieme di codice e dati che effettivamente implementa, ovvero che realizza il comportamento dell'oggetto server (come specificato dalla sua interfaccia)
Server CORBA in C++
Client CORBA in C++ e Java Individuo. idl Cli i _ main . java IDL Java Compiler Java Compiler ORB Library IDL Java class st_Individuo Individuo_var Stub Java Applet Individuo. idl Cli _ main .cc IDL C++ Compiler C++ , Link ORB Library class Client IndividuoC.cc Stub Individuo.hh
Distribuited Component Object Model (1) Specifiche di interoperabilità a livello binario tra componenti software Infrastruttura software per la creazione, la comunicazione e la gestione di componenti Sviluppato da Microsoft
Distribuited Component Object Model (2) Interazione tra componenti by insiemi di funzioni denominate interfacce Rappresentazione interfacce basata su puntatori Vtable (Virtual function table): array di puntatori ai metodi Per invocare un metodo si deve avere un puntatore all’interfaccia pvtbl Una classe è una implementazione di un’insieme di interfacce Consente la location trasparency
Server DCOM Object Interfacce dell’oggetto Class IClassFactory Factory Implementazione Interfacce Object indipendente dell’oggetto dal tipo di server Class IClassFactory Factory Implementazioni diverse Meccanismi per per DLL e EXE l’esposizione di class factory Meccanismi di unloading
Il modello di comunicazione DCOM
Ereditarietà secondo DCOM - Contenimento
Ereditarietà secondo DCOM - Aggregazione Interfacce Esterne Componente Esterno A A B B Componente interno aggregato in un C C Componente Esterno