Sei sulla pagina 1di 40

CORBA Component Model

Alma Mater Studiorum - Universit di Bologna


CdS Laurea Magistrale in Ingegneria Informatica
I Ciclo - A.A. 2015/2016

Corso di Sistemi Distribuiti M (8 cfu)


08 Altro Modello Container Pesante:
Cenni di CORBA Component Model (CCM)

Docente: Paolo Bellavista


paolo.bellavista@unibo.it

http://lia.disi.unibo.it/Courses/sd1516-info/
http://lia.disi.unibo.it/Staff/PaoloBellavista/

Sistemi Distribuiti M - CCM 1


CORBA
Component Model (CCM)

Giusto per rammentare che EJB3.x non unico modello a


componenti distribuiti basato sullapproccio a container
pesante

CORBA come potente container per oggetti distribuiti

Necessit di funzionalit ulteriori (evoluzione ed


estensione degli oggetti CORBA)
Verso un modello a componenti distribuiti per CORBA

Sistemi Distribuiti M - CCM 2


Verso CORBA
Component Model (CCM)

Distributed Object Computing


(DOC) middleware gi un
buon passo:
AbstractService
service
Applica pattern broker per
Client
astrarre da dettagli OS&protocol-
specific Proxy Service
1 1
service service
Crea sistemi distribuiti che sono
pi semplici da modellare e
costruire grazie alluso di tecniche
Object :
OO : Client operation() Interface X

Ad es. CORBA, Java RMI, etc.


Middleware

Sistemi Distribuiti M - CCM 3


Vi ricordate CORBA 2.x
Standard, vero?
CORBA 2.x un DOC middleware che permette alle applicazioni
di essere trasparenti ai dettagli e alle dipendenze specifiche
delle piattaforme eterogenee sottostanti
ad es. linguaggi programmazione, OS, protocolli di rete

CORBA 2.x automatizza


Object location
Connection&memory mgmt
Parameter (de)marshaling
Request demultiplexing
Error handling&fault
tolerance
Object/server activation
Concurrency&synch-
ronization

Sistemi Distribuiti M - CCM 4
Esempio di IDL CORBA 2.x
CORBA 2.x IDL permette di specificare interfacce che
contengono operazioni
Le interfacce vengono mappate su oggetti in linguaggi OO

interface Foo
{
void bar (in long arg);
};
IDL C++
class Foo : public virtual CORBA::Object
{
virtual void bar (CORBA::Long arg);
};

Le operazioni definite nelle interfacce possono


essere invocate sia su oggetti locali che remoti
Sistemi Distribuiti M - CCM 5
Punti Deboli di
DOC-based CORBA 2.x Middleware
Sviluppo di applicazioni in CORBA 2.x inutilmente error-prone
Application
Interface
Development &
Design
Deployment

IDL
Definitions Object Other
Implementations Implementations

IDL
Compiler Language
Applications
Stubs Tools
&
Skeletons

CORBA 2.x IDL non d modo di Libraries

raggruppare insieme
interfacce correlate per CORBA 2.x non specifica come fare
offrire famiglie di servizi configuration&deployment di oggetti per
creare applicazioni complete
Tale bundling deve
essere fatto manualm. Gli sviluppatori sono obbligati a preparare
dagli sviluppatori via infrastrutture proprietarie e script ad hoc
CORBA idiom&pattern
Sistemi Distribuiti M - CCM 6
Esempi di Limitazioni
della Specifica CORBA 2.x
Requisiti non-trivial di Distributed
Boiler Plate X Boiler Plate Y Runtime Environment (DRE):
C C
Obj Obj Obj o Obj Obj o
Collaborazione di oggetti&servizi
COS
Impl Impl Impl n Impl Impl n
Svc multipli
f f
i i Deployment su diverse piattaforme
ORB/POA ORB/POA
g g

Server A Server B
CORBA 2.x limiti come mancanza di
standard per:
CORBA BUS
Server/node configuration
Object/service configuration

C Application assembly
o
invoke

Obj Obj
Impl Impl
COS
n
Object/service deployment
Svc
f
i Conseguenze:
ORB/POA
g
Scarsa adattabilit e manutenibilit
Client Server C
Crescita time-to-market e costi
Boiler Plate X integrazione

Sistemi Distribuiti M - CCM 7


Funzionalit di CCM (1)
Component Component
Reference Reference
Component Server
Container Container
Component Component Un processo server generico
Home Home
per ospitare container&

E ven t R c e acl s
COMPONENT E ve nt Rec ep tacles COMPONENT

e pt e
Com po n ent Contex t

Com po nent Contex t


F ace ts
Facets

EXECUTORS EXECUTORS component/home executor


In te rf aces

I nterf aces
In t ern al

Int erna l
Component Impl.
So u rce s

Sou rces
S i nks
Eve nt

S i nk s
Eve nt

Callback Callback
Interfaces Interfaces

POA POA Framework (CIF)


ORB Automatizza

Transaction Persistent
limplementazione di molte
funzionalit a livello
Security Notification
componente
COMPONENT SERVER 1 COMPONENT SERVER 2

Container definiscono operazioni che


abilitano i component executor ad
accedere a servizi comuni di
middleware & politiche runtime
associate
Sistemi Distribuiti M - CCM 8
Funzionalit di CCM (2)

IDL
Component Impl. Framework
CIDL
IDL Compiler
(CIF)
CIDL Compiler
Automatizza limplementazione di
molte funzionalit a livello
Stub Skel
componente
Component packaging
Metteinsieme metadati di
Servants
implementation&configuration in
assembly pronti per deployment
Executors Executor

IDL Compiler
IDL Strumenti per Component
deployment
XML
Component
Automatizzano il deployment di
Impl Descriptors
component assembly verso
component server
Sistemi Distribuiti M - CCM 9
Funzionalit di CCM (3)
Component
Development
Assembly
Component Constraints
Assembler

Component
Assembly
Component packaging
Impl Impl Impl
Meta-Model

Resource Properties Mette insieme metadati di


Requirements Component Assembly
Component Component
implementation&configuration in
assembly pronti per deployment
Component Component

Component
Deployment
Strumenti per component
Component
Packager
Package
Meta-Model Package
Constraints
deployment
Automatizzano il deployment di
Component Assembly
Component Package
Component Assembly
component assembly verso
component server

Sistemi Distribuiti M - CCM 10


Funzionalit di CCM (4)
COMPONENT REPOSITORY

Domain Administrator

Get
configured
package Component packaging
Creates

Creates Planner
Get resource
Mette insieme metadati di
Domain implementation&configuration in
assembly pronti per deployment
Node
Deployment
plan

Bridge

Deploys Node Node


Strumenti per component
Executor
deployment
Automatizzano il deployment di
Node component assembly verso
Bridge component server
Node Node

Sistemi Distribuiti M - CCM 11


Implementazioni CCM
Disponibili (un po datate)
Name Provider Open Language URL
Source
Component Vanderbilt Yes C++ www.dre.vanderbilt.edu/CIAO/
Integrated ACE University &
ORB (CIAO) Washington
University
Enterprise Java Computational Yes Java www.cpi.com/ejccm/
CORBA Component Physics, Inc.
Model (EJCCM)
K2 iCMG No C++ www.icmgworld.com/
products.asp
MicoCCM FPX Yes C++ www.fpx.de/MicoCCM/
OpenCCM ObjectWeb Yes Java openccm.objectweb.org/

QoS Enabled Fokus Yes C++ www.qedo.org


Distributed Object
(Qedo)
StarCCM Source Forge Yes C++ sourceforge.net/projects/
starccm/
Sistemi Distribuiti M - CCM 12
Comparazione CCM vs.
EJB, COM, .NET
Come Enterprise Java Come Microsoft .NET
Beans (EJB): Come Microsoft Component
Framework:
Componenti CORBA
Object Model (COM):
Possono essere
creati&gestiti da Possono avere diverse
realizzati in
home interfacce input&output
diversi linguaggi
Eseguono in
per ogni componente
programmazione
container che Sia operazioni point-to-
Possono essere
gestiscono point sync/async che
packaged per
trasparentem. servizi eventi
facilitare
di sistema publish/subscribe
distribuzione
Ospitati da Capacit di component
MA possono
application navigation &
eseguire su
component server introspection
piattaforme
generici MA supporto pi
multiple (non
MA possono essere efficace e flessibile a solo Microsoft
realizzati in diversi propriet di Windows)
linguaggi di implem. distribuzione e QoS
Sistemi Distribuiti M - CCM 13
Running Example
Rate Generator
Invia
eventi Pulse periodici ai
consumatori
Rate Positioning Display Positioning Sensor (GPS)
Generator Sensor Device Riceve eventi di Refresh dai
pubs
Rinfresca le coordinate cached

RateGen GPS NavDisplay disponibili via MyLocation


Pulse Refresh Ready Refresh facet

Rate
GPSLocation Notifica subs via eventi Ready
MyLocation
events
Display Device (NavDisplay)
Riceve eventi Refresh da pubs
Component Server
Legge coordinate correnti via
GPSLocation receptacle
$CIAO_ROOT/examples/OEP/Display/
Aggiorna display

Sistemi Distribuiti M - CCM 14


Primo Passo:
Interface&Component Design
Interface Component Component Component
Design Design Implementation Packaging

Implementation
Artifact
Component Component Object
Interface IDL Descriptors
IDL CIDL Implementations Component &
Definitions (.iad)
Definitions Definitions Home Properties
Monolithic
Component
Stubs Description
Language Component
&
Tools DLLs Component
Skeletons
Packaging Implementation
IDL Tools Descriptors
Compiler (.cid)
Servants,
CIDL
Executors, Component
Compiler
Contexts Interface
Descriptors Component
(.ccd) Package
realizes
Descriptors
(.cpd)
Deployment realizes
Deployment Plan Component
Tools Descriptor realizes Assembly
uses
(.cdp) Descriptors
Component
Deployment
Package Assembly
Planning
Descriptors Tools
Tools
Running (.cpd)
Applications
Component &
Home Properties
Component Component
System Component & Domain Implementation
Deployment Home Properties Descriptor Deployment Descriptor Application
(.cdd) Planning (*.cid) Assembly

Sistemi Distribuiti M - CCM 15


Semplice Esempio di
Componente CCM
// IDL 3
Ruoli di un componente CCM
interface rate_control
{ Definire una unit di composizione,
void start (); riutilizzo e implementazione
void stop ();
}; Incapsulare un modello di interazione e
component RateGen configurazione
supports rate_control {}; Un componente CCM ha diverse opzioni
possibili
RateGen Pu ereditare da un singolo
Pulse
component type
component E : D {};
Rate

Pu supportare interfacce IDL


multiple
// Equivalent IDL 2
interface RateGen : interface A {};
::Components::CCMObject, interface B {};
rate_control {};
component D supports A, B {};
Sistemi Distribuiti M - CCM 16
Porte CCM
Un componente CCM pu specificare
porte (ovviamente diverse dalle porte di OSI
Component layer4):
Home
Facet (relazione provides)
Offrono interfacce per operazioni
Receptacle (uses)
Component
Reference Interfacce richieste, da supportare
Sorgenti per eventi (publishes &
emits)
Event Receptacles
Facets

Eventi prodotti
Offered

Required

Sink per eventi (consumes)


Ports

Ports

Eventi consumati
Sources

Attributi (attribute)
Event
Sinks

Propriet configurabili
Attributes
Ogni istanza di componente creata e
gestita da un singolo componente di
infrastruttura home
Sistemi Distribuiti M - CCM 17
Gestione Lifecycle CCM
Componenti CCM devono
essere creati dal runtime CCM
Problemi con CORBA 2.x
No modo standard per gestire
lifecycle degli oggetti
Bisognodi meccanismi standard e
strategie gestione high-level

Soluzione CCM
Integrare
servizio lifecycle nella definizione (e configurazione)
dei componenti CCM
Usare differenti home per componenti al fine di fornire diverse
strategie di lifecycle management
Soluzione basata su pattern Factory&Finder

Sistemi Distribuiti M - CCM 18


CCM Home
// IDL 3
home come nuovo meta-type
home RateGenHome manages RateGen
{ CORBA
factory create_pulser home ha riferimenti a interfacce e
(in rateHz r);
RateGenHome oggetti
};
Gestisceuna famiglia di
RateGen
Rate
Pulse componenti
// Equivalent IDL 2 Diverse tipologie di home possono
interface RateGenHomeExplicit gestire la stessa famiglia di
: Components::CCMHome { componenti
RateGen create_pulser
Una istanza di componente gestita
(in rateHz r);
}; SOLO da una istanza di home
interface RateGenHomeImplicit Operazioni standard factory & finder
: Components::KeylessCCMHome {
ad es. create()
RateGen create ();
}; home pu ospitare operazioni
interface RateGenHome : addizionali user-defined
RateGenHomeExplicit,
RateGenHomeImplicit {};
Sistemi Distribuiti M - CCM 19
Componenti CCM Possono
Mostrare Viste Differenti
Componenti possono avere bisogno di collaborare con altri tipi
di componenti, che possono essere interessati a considerare
differenti interfacce
Problemi con CORBA 2.x
Difficile estendere interfacce
Nostandard per acquisire nuove interfacce
dinamicamente
Soluzione CCM
Definizionedi facet, ovvero interfacce esposte,
che realizzano la vista di un componente e
corrispondono al ruolo con cui un cliente pu
interagire con un componente
Top of the Lego
Sistemi Distribuiti M - CCM 20
CCM Facet
// IDL 3 Caratteristiche Facet:
interface position
{ Definiscono interfacce con operazioni
long get_pos (); offerte
};
Specificate tramite keyword provides
component GPS
{ Rappresentano logicamente
provides position MyLocation;

il componente stesso, non
}; unentit separata contenuta
GPS
nel componente
Refresh Ready

Facet hanno riferimenti a


// Equivalent IDL 2 MyLocation
oggetti indipendenti ottenuti
interface GPS tramite operazione provide_*()
: Components::CCMObject da una factory
{
position Possono essere usati per
provide_MyLocation (); implementare Extension
Interface pattern
};
Sistemi Distribuiti M - CCM 21
Utilizzo di Altri Componenti
Componenti hanno bisogno di collaborare con
diversi tipi di componenti e applicazioni,
caratterizzati da diversi tipi di interfaccia
Problemi con CORBA 2.x
No standard per specificare dipendenze fra
interfacce
No standard per connettere dinamicamente una
interfaccia a un componente
Soluzione CCM
Definiscereceptacle, ovvero interfacce richieste,
che rappresentano punti diversi di named connection

Rappresenta bottom of the Lego

Sistemi Distribuiti M - CCM 22


CCM Receptacle
Caratteristiche Receptacle:
// IDL 3
Definiscono un modo per connettere una o
component NavDisplay
{ pi interfacce required a un componente
Specificati tramite keyword uses
uses position GPSLocation;
Possono essere semplici o multipli
};
NavDisplay Connessionisono configurate
Refresh staticamente durante fase di
GPSLocation
deployment
// Equivalent IDL 2 Connessioni sono gestite
interface NavDisplay dinamicamente dai container che
: Components::CCMObject supportano interazione con clienti o
{ altri componenti via callback

void connect_GPSLocation Inoltre CCM supporta connection
(in position c); establishment a runtime
position disconnect_GPSLocation();
position get_connection_GPSLocation ();

};
Sistemi Distribuiti M - CCM 23
Distribuzione di Eventi
Componenti spesso necessitano di comunicare
tramite meccanismi di message passing
pub/sub
Problemi con CORBA 2.x
CORBA Event Service dynamically typed, ovvero
non c static type-checking fra entit pub/sub
Nonbanale estensione di interfacce
request/response per supportare distribuzione di
eventi
No standard per specificare la capacit di un oggetto
di generare e processare eventi
Soluzione CCM
Standardizzazione
di eventtype & eventtype
consumer interface (basata su valuetypes)
Standard per source/sink di eventi (push mode only)
Sistemi Distribuiti M - CCM 24
Sorgenti di Eventi CCM
// IDL 3 Caratteristiche sorgenti di eventi:
component RateGen
{ Named connection per generazione
publishes tick Pulse; eventi
emits tick Trigger;
Due tipologie di sorgenti - publisher
}; & emitter
RateGen
Pulse publishes= possono esserci
consumatori multipli
Rate
// Equivalent IDL 2 emits = un solo consumatore
interface RateGen :
Components::CCMObject { Due modi per connettersi a sink di
Components::Cookie eventi
subscribe_Pulse
(in tickConsumer c); Connessione diretta consumer
tickConsumer CCM container fa da intermediario
unsubscribe_Pulse
(in Components::Cookie ck); verso canali CosNotification/

CosEvent o altro (ad es., OMG DDS)
};
Sistemi Distribuiti M - CCM 25
Sink di Eventi CCM
// IDL 3 Caratteristiche di sink di eventi:
component NavDisplay
{ Named connection verso cui
poter inviare eventi di tipologia
consumes tick Refresh; specifica
};
Event sink multipli dello stesso
NavDisplay
Refresh
tipo possono essere
subscriber della stessa
// Equivalent IDL 2
GetLocation
sorgente
interface NavDisplay : No distinzione fra emitter &
Components::CCMObject publisher
{
Connessi a sorgenti via object
tickConsumer reference ottenuta tramite
get_consumer_Refresh (); operazione get_consumer_*()

}; su factory

Sistemi Distribuiti M - CCM 26


SullUtilit della Configurazione
Dinamica di Componenti
Per rendere le implementazioni dei Ethernet
componenti pi adattabili e flessibili,
propriet dei componenti dovrebbero
essere (ri)configurabili
Problemi

Applicazioni non dovrebbero legarsi a una specifica


configurazione troppo presto
No standard per specificare parametri configurabili per
componenti in CORBA 2.x
Bisogno di meccanismi standard per
configurazione
Soluzione CCM VIDEO

Configurare componenti via attributi di


assembly/deployment, via home o nella fase di
inizializzazione
Sistemi Distribuiti M - CCM 27
Attributi di Componenti CCM
// IDL 3 Caratteristiche degli attributi
typedef unsigned long
Propriet configurabili con
rateHz;
component RateGen
nome, mirate alla configurazione
supports rate_control componenti
{
ad es. comportamenti
attribute rateHz Rate;
}; opzionali, modalit,
RateGen Possono lanciare eccezioni
Pulse
user-defined (originale per CCM)
Rate Determinati tramite vari
// Equivalent IDL 2
meccanismi di configurazione
interface RateGen :
Components::CCMObject,
possibile
rate_control ad es. file XML descriptor
{
attribute rateHz Rate;
generati da strumenti di
}; modeling

Sistemi Distribuiti M - CCM 28


Connettere Componenti CCM
Componenti hanno bisogno di essere
aggregati per formare applicazioni
complete
Problemi

Componenti possono avere porte multiple


con diversi nomi e tipi
Dispendiososcrivere manualmente il codice necessario
per collegare un insieme di componenti per una
applicazione specifica

Soluzione CCM
Interfacce
per introspezione per permettere scoperta dinamica di
capacit componenti
Generiche operazioni sulle porte per connettere componenti
tramite strumenti esterni di deployment&configuration
Rappresenta la capacit di mettere insieme i lego
Sistemi Distribuiti M - CCM 29
Navigation&Introspection in CCM
Capacit di navigation&introspection realizzate da CCMObject
Tramite interfaccia Navigation per facet, interfaccia Receptacles per
receptacle e interfaccia Events per porte per eventi
Navigation dal riferimento base di un componente a ogni sua facet via
operazioni facet-specific automaticamente generate e supportate
ad es. Components::CCMObject::get_all_facets() &
Components::CCMObject::provide()
Navigation da ogni facet al riferimento base di un componente tramite
CORBA::Object::_get_component()
Tutto il codice per
navigation&introspection
generato
_get_component()
automaticamente dal
: Client compilatore CIDL come
operation()
component servant
(lo vedremo brevem)
30
Sistemi Distribuiti M - CCM 30
Uso delle Interfacce di Navigazione
di un Componente CCM
1 int
2 main (int argc, char *argv[])
3 {
4 CORBA::ORB_var orb =
5 CORBA::ORB_init (argc, argv);
6-10 // Get the NameService reference
CORBA::Object_var o = ns->resolve_str (myHelloHome");
HelloHome_var hh = HelloHome::_narrow (o.in ());
HelloWorld_var hw = hh->create ();
// Get all facets & receptacles
Components::FacetDescriptions_var fd = hw->get_all_facets ();
Components::ReceptacleDescriptions_var rd =
hw->get_all_receptacles ();
// Get a named facet with a name Farewell
CORBA::Object_var fobj = hw->provide (Farewell);
// Can invoke sayGoodbye() operation on Farewell after
// narrowing to the Goodbye interface.
...
24 return 0;
25 }

Corso diSistemi
Componenti
Distribuiti M-Day
Distribuiti CCM 1 31
Recap:
Funzionalit Componenti CCM
Component Nella prospettiva cliente il supporto CCM:
Home
Definisce operazioni per life cycle
management (home)
Component Definisce che cosa un componente
Reference offre agli altri componenti
Definisce che cosa un componente
Event Receptacles

richiede da altri componenti


Facets

Definisce quali modalit di


Offered

Sends Required
Ports

Ports collaborazione sono usate fra


componenti
Sources
Event
Sinks

Point-to-point via operation


invocation
Recevi
es From

Attributes Publish/subscribe via event


To

notification
Definisce
quali attributi dei
componenti sono configurabili

Sistemi Distribuiti M - CCM 32


Passo di Implementazione
Componenti CCM
Interface Component Component Component
Design Design Implementation Packaging

Implementation
Artifact
Component Component Object
Interface IDL Descriptors
IDL CIDL Implementations Component &
Definitions (.iad)
Definitions Definitions Home Properties
Monolithic
Component
Stubs Description
Language Component
&
Tools DLLs Component
Skeletons
Packaging Implementation
IDL Tools Descriptors
Compiler (.cid)
Servants,
CIDL
Executors, Component
Compiler
Contexts Interface
Descriptors Component
(.ccd) Package
realizes
Descriptors
(.cpd)
Deployment realizes
Deployment Plan Component
Tools Descriptor realizes Assembly
uses
(.cdp) Descriptors
Component
Deployment
Package Assembly
Planning
Descriptors Tools
Tools
Running (.cpd)
Applications
Component &
Home Properties
Component Component
System Component & Domain Implementation
Deployment Home Properties Descriptor Deployment Descriptor Application
(.cdd) Planning (*.cid) Assembly

Sistemi Distribuiti M - CCM 33


Supporto Runtime:
Funzionalit Component Server
Client Client Principale step evolutivo di
CCM rispetto a CORBA 2.x
il focus su component server
e deployment/configurazione
di applicazioni
Container Container
Component Component
Home Home
Callback Callback
CCM estende CORBA 2.x tramite
CORBA CORBA
Interfaces Interfaces
Component Component
Astrazioni
high-level di modelli
Internal
Internal Internal
Internal
External
Interfaces
Interfaces
Interfaces External
Interfaces
Interfaces
Interfaces servant di frequente utilizzo
POA POA
Tool-basedconfiguration &
Component Server tecniche di meta-programming
Ilcontainer framework CCM gioca
ruolo centrale in questo supporto

Sistemi Distribuiti M - CCM 34


CCM Container Framework
Component Component
Reference Reference
Framework standard
Container Container
Component Component Estende Portable Object
Home Home
Adaptor (POA) con pattern
comunemente utili come

R e c e p ta c l e s
E v e n t R e c e p ta c l e s
COMPONENT COMPONENT
C o m p o n e n t C o n t ex t

C o m p o n e n t C o n te x t
F a c e ts
F a c e ts

EXECUTORS EXECUTORS

I n t e rf a c e s
I n te r f a c e s

De/activation automatica di

In t e r n a l
In t e rn a l

S o u rc e s
S o u rc e s

componenti

E ve n t
E v e nt
S i n ks

S i n ks
E v ent

Callback Callback
Interfaces Interfaces
Ottimizzazione uso risorse
POA POA

Supporta accesso
ORB
semplificato a CORBA
Transaction Persistent Common Services
Security Notification ad es. sicurezza, transazioni,
COMPONENT SERVER 1 COMPONENT SERVER 2 persistenza, eventi

Usa callback per gestire istanze di componenti


ad es. loro stato di sessione, activation/deactivation, etc.
Sistemi Distribuiti M - CCM 35
Container e
Interfacce Esterne/Interne
Container
Component Interfacce interne usate dai componenti per
Home
I nt er f aces

accedere container facility


Ext er nal

CORBA Callback

Component
Interfaces local interface CCMContext {
CCMHome get_CCM_home ();
Internal
};
Interfaces local interface SessionContext :
POA
CCMContext {
Object get_CCM_object ();
};
Interfacce di callback usate dai container per
External API come invocare il component executor
interfacce verso clienti local interface EnterpriseComponent{};
Container API come local interface SessionComponent :
EnterpriseComponent {
interfacce interne e void set_session_context
interfacce di callback usate (in SessionContext ctx)
dagli sviluppatori di void ccm_activate ();
void ccm_passivate ();
componenti nella logica void ccm_remove ();
applicativa };
Sistemi Distribuiti M - CCM 36
Strategie Container-managed
Obiettivo: disaccoppiare politiche di SSL Container

configurazione Component
Home

I nter faces
E xt er nal
(installation/deployment time) dalla CORBA Callback
Interfaces
implementazione dei componenti Component

Dichiarazioni definite per: Internal


Interfaces
Servant lifetime
POA
Transazioni
Eventi
Persistenza Transactional Container
Sicurezza Component
Home

I nt er f aces
Ext er nal
Specificate da component/composition developer
CORBA Callback
attraverso XML metadata e/o direttive CIDL Component
Interfaces

Implementate dal container, NON dai


Internal
componenti Interfaces

POA

Sistemi Distribuiti M - CCM 37


Categorie di
Component/Container in CCM
COMPONENT CONTAINER CONTAINER EXTERNAL
CATEGORY IMPL TYPE TYPE TYPE

Service Stateless Session Keyless

Session Conversational Session Keyless

Process Durable Entity Keyless

Entity Durable Entity Keyfull

In CCM queste categorie possono essere specificate


dichiarativamente tramite CIDL file piuttosto che
programmate imperativamente

Sistemi Distribuiti M - CCM 38


Executor per Componenti
e per Home
Moduli server-side che
implementano concetti di
component (business logic) e HelloHome servant
Ad opera dello
home sviluppatore

Oggetti CORBA locali con HelloHome_Exec


interfacce rispondenti a OMG
IDL mapping
Component executor possono
gestisce
essere
monolitici, se tutte le porte
sono implementate da
singola classe
HelloWorld servant
segmentati, se porte
suddivise su classi multiple
Home executor sempre
Generato da CIDL compiler HelloWorld_Exec
monolitici

Sistemi Distribuiti M - CCM 39


Executor Eseguono
dentro il Container
Container intercettano invocazioni

Interfa ce s
Container

Externa l
su executor e gestiscono activation, CORBA

sicurezza, transazioni, persistenza, Component

user
CONTAINER PESANTE
Internal
implemented Interfaces

code POA

Executor dei componenti devono


implementare interfaccia locale per
callback lifecycle ad uso del
container
Main
SessionComponent per Component Component
Executor Specific
componenti transienti Context
CCMContext
EntityComponent per Executors
Executors
Executors
componenti persistenti
CCMContext
Executor dei componenti possono EnterpriseComponent
interagire con container e Servant
componenti connessi via context POA
Container
interface
Sistemi Distribuiti M - CCM 40