Sunteți pe pagina 1din 0

Dr. ing.

Liviu PERNIU
PROCESAREA
DATELOR
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
se apeleaz la un obiect de tip special ce poate crea alte obiecte
(clasa factory - generator de clase)
se apeleaz la un obiect de tip special ce poate crea alte obiecte
(clasa factory - generator de clase)
fiecare generator de clase tie cum s creeze obiecte ale unei clase
specifice
fiecare generator de clase tie cum s creeze obiecte ale unei clase
specifice
numele de generator de clase este impropriu cci aceast clas nu
creeaz clase, ci instane ale obiectelor
numele de generator de clase este impropriu cci aceast clas nu
creeaz clase, ci instane ale obiectelor
generatorii de clase sunt obiecte COM obinuite
generatorii de clase sunt obiecte COM obinuite
difer de acestea prin faptul c sunt capabili s produc alte obiecte COM
difer de acestea prin faptul c sunt capabili s produc alte obiecte COM
n acest caz, funcia CoCreateInstance utilizeaz un generator de clase,
dar acest lucru i este transparent clientului
n acest caz, funcia CoCreateInstance utilizeaz un generator de clase,
dar acest lucru i este transparent clientului
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
pentru a fi declarat drept generator de clase, un obiect trebuie s suporte
interfaa IClassFactory, care este foarte simpl i conine dou
metode:
pentru a fi declarat drept generator de clase, un obiect trebuie s suporte
interfaa IClassFactory, care este foarte simpl i conine dou
metode:
CreateInstance, care creeaz o nou instan a clasei obiectului
pe care generatorul de clase o poate porni; clientul nu trebuie s
specifice parametrul CLSID al acestei metode, ci doar
identificatorul IID, care indic interfaa de care are nevoie cu
ajutorul unui pointer (n C++ generatorul de clase poate
implementa aceast metod prin crearea unui nou obiect,
folosind operatorul new)
LockServer care permite clientului s pstreze serverul n
memorie; obiectul produs este la fel ca orice alt obiect deoarece
el menine un contor al referinelor prin intermediul cruia se
nregistreaz clienii ce l utilizeaz, dar din diverse motive acest
contor nu este suficient pentru a pstra serverul n memorie;
pentru a fi sigur de funcionarea serverului trebuie utilizat
sintaxa IClass::LockServer
CreateInstance, care creeaz o nou instan a clasei obiectului
pe care generatorul de clase o poate porni; clientul nu trebuie s
specifice parametrul CLSID al acestei metode, ci doar
identificatorul IID, care indic interfaa de care are nevoie cu
ajutorul unui pointer (n C++ generatorul de clase poate
implementa aceast metod prin crearea unui nou obiect,
folosind operatorul new)
LockServer care permite clientului s pstreze serverul n
memorie; obiectul produs este la fel ca orice alt obiect deoarece
el menine un contor al referinelor prin intermediul cruia se
nregistreaz clienii ce l utilizeaz, dar din diverse motive acest
contor nu este suficient pentru a pstra serverul n memorie;
pentru a fi sigur de funcionarea serverului trebuie utilizat
sintaxa IClass::LockServer
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
n afar de interfaa IClassFactory a mai fost introdus, n scopuri legate
de securitate i a doua interfa IClassFactory2
n afar de interfaa IClassFactory a mai fost introdus, n scopuri legate
de securitate i a doua interfa IClassFactory2
pentru a accesa un generator de clase (adic pentru a obine un pointer la
generatorul de clase), clientul trebuie s invoce funcia
CoGetClassObject a bibliotecii COM
pentru a accesa un generator de clase (adic pentru a obine un pointer la
generatorul de clase), clientul trebuie s invoce funcia
CoGetClassObject a bibliotecii COM
n acest apel, clientul trebuie s specifice :
n acest apel, clientul trebuie s specifice :
identificatorul CLSID corespunztor clasei de obiecte pe care
generatorul o va crea (nu identificatorul CLSID al generatorului de
clase)
identificatorul IID al interfeei utilizate pentru accesul la
generatorul de clase (care este cel al interfeei IClasFactory)
tipul de server ce va fi creat
identificatorul CLSID corespunztor clasei de obiecte pe care
generatorul o va crea (nu identificatorul CLSID al generatorului de
clase)
identificatorul IID al interfeei utilizate pentru accesul la
generatorul de clase (care este cel al interfeei IClasFactory)
tipul de server ce va fi creat
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
PROCESUL DE UTILIZARE A GENERATORULUI DE CLASE
PROCESUL DE UTILIZARE A GENERATORULUI DE CLASE
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
PROCESUL DE UTILIZARE A GENERATORULUI DE CLASE
PROCESUL DE UTILIZARE A GENERATORULUI DE CLASE
clientul apeleaz CoGetClassObject
clientul apeleaz CoGetClassObject
biblioteca COM pornete generatorul de clase, returnnd un pointer
la interfaa IClassFactory
biblioteca COM pornete generatorul de clase, returnnd un pointer
la interfaa IClassFactory
Pasul 1 - n momentul n care clientul primete pointerul
poate apela metoda CreateInstance (parametrii introdui n
apel includ identificatorul IID al interfeei la care se
dorete obinerea unui pointer)
Pasul 2 - generatorul de clase rspunde prin crearea
obiectului cerut
Pasul 3 - clientul primete pointerul ctre aceast interfa
Pasul 4 - clientul folosete pointerul pentru a apela
metodele interfeei
Pasul 1 - n momentul n care clientul primete pointerul
poate apela metoda CreateInstance (parametrii introdui n
apel includ identificatorul IID al interfeei la care se
dorete obinerea unui pointer)
Pasul 2 - generatorul de clase rspunde prin crearea
obiectului cerut
Pasul 3 - clientul primete pointerul ctre aceast interfa
Pasul 4 - clientul folosete pointerul pentru a apela
metodele interfeei
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
TEHNICA EMULRII
TEHNICA EMULRII
atunci cnd se dorete nlocuirea unei clase vechi cu una nou ce
preia de la cea veche toate metodele acesteia, adugndu-i i
altele suplimentare, se spune c noua clas este polimorfic
cu cea veche (clientul folosete clasa nou ca i cum ar fi tot
cea veche)
atunci cnd se dorete nlocuirea unei clase vechi cu una nou ce
preia de la cea veche toate metodele acesteia, adugndu-i i
altele suplimentare, se spune c noua clas este polimorfic
cu cea veche (clientul folosete clasa nou ca i cum ar fi tot
cea veche)
clasa cea nou va avea ns un alt identificator CLSID i dac se
nlocuiete clasa veche cu cea nou, atunci clienii care o
foloseau pe cea veche nu mai pot funciona
clasa cea nou va avea ns un alt identificator CLSID i dac se
nlocuiete clasa veche cu cea nou, atunci clienii care o
foloseau pe cea veche nu mai pot funciona
folosind tehnica emulrii clientul apeleaz funcia CoCreateInstance
care are identificatorul CLSID al vechiului obiect, dar creeaz
de fapt o instan la noul obiect
folosind tehnica emulrii clientul apeleaz funcia CoCreateInstance
care are identificatorul CLSID al vechiului obiect, dar creeaz
de fapt o instan la noul obiect
acest lucru este posibil datorit faptului c biblioteca COM are o
funcie CoTreatAsClass, ce are doi parametri: vechiul
identificator CLSID i noul identificator CLSID
acest lucru este posibil datorit faptului c biblioteca COM are o
funcie CoTreatAsClass, ce are doi parametri: vechiul
identificator CLSID i noul identificator CLSID
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
TEHNICA EMULRII
TEHNICA EMULRII
apelul este implementat prin crearea unei asocieri a celor doi
identificatori CLSID n registrul sistemului
apelul este implementat prin crearea unei asocieri a celor doi
identificatori CLSID n registrul sistemului
o alt utilizare a tehnicii de emulare este i aceea prin care se
creeaz componente generice (dac se creeaz dou interfee
care fac acelai lucru, dar au identificatori diferii, atunci se
definete un alt identificator CLSID unic prin intermediul
cruia se poate face referire la ambii identificatori CLSID)
o alt utilizare a tehnicii de emulare este i aceea prin care se
creeaz componente generice (dac se creeaz dou interfee
care fac acelai lucru, dar au identificatori diferii, atunci se
definete un alt identificator CLSID unic prin intermediul
cruia se poate face referire la ambii identificatori CLSID)
INIIALIZAREA OBIECTELOR
INIIALIZAREA OBIECTELOR
atunci cnd clientul cere crearea unui obiect se creeaz o
instan generic a unei clase, adic metodele obiectului
devin disponibile acestuia
atunci cnd clientul cere crearea unui obiect se creeaz o
instan generic a unei clase, adic metodele obiectului
devin disponibile acestuia
un obiect nu are numai metode, el are i date care trebuie folosite
un obiect nu are numai metode, el are i date care trebuie folosite
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
INIIALIZAREA OBIECTELOR
INIIALIZAREA OBIECTELOR
pentru a folosi datele unui obiect, clientul trebuie s cear unei
instane noi a unui obiect s se iniializeze
pentru a folosi datele unui obiect, clientul trebuie s cear unei
instane noi a unui obiect s se iniializeze
datele obiectului se afl ntr-un anumit loc n care trebuie s fie
rememorate ori de cte ori obiectul este oprit din funcionare
(de obicei, se afl ntr-un fiier care se afl pe discul fix al
calculatorului)
datele obiectului se afl ntr-un anumit loc n care trebuie s fie
rememorate ori de cte ori obiectul este oprit din funcionare
(de obicei, se afl ntr-un fiier care se afl pe discul fix al
calculatorului)
primul pointer pe care l cere clientul este, de obicei, acela ctre
interfaa ce conine funcia de iniializare a obiectului
primul pointer pe care l cere clientul este, de obicei, acela ctre
interfaa ce conine funcia de iniializare a obiectului
n acest scop se definesc interfee standard, cum ar fi IPersistFile,
IPersistStorage, IPersistStream
n acest scop se definesc interfee standard, cum ar fi IPersistFile,
IPersistStorage, IPersistStream
fiecare dintre aceste interfee conin metode ce permit clientului s
cear ca un obiect s-i ncarce datele persistente, ceea ce
nseamn de fapt iniializarea sa
fiecare dintre aceste interfee conin metode ce permit clientului s
cear ca un obiect s-i ncarce datele persistente, ceea ce
nseamn de fapt iniializarea sa
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
REUTILIZAREA CODULUI
REUTILIZAREA CODULUI
se manifest prin crearea unor componente ce pot fi refolosite,
prevzute cu interfee bine definite
se manifest prin crearea unor componente ce pot fi refolosite,
prevzute cu interfee bine definite
tehnologia COM ofer reutilizare prin intermediul a dou mecanisme:
delegare i agregare
tehnologia COM ofer reutilizare prin intermediul a dou mecanisme:
delegare i agregare
Delegarea
Delegarea
prin delegare, un obiect exterior acioneaz ca un client al
unui obiect interior
prin delegare, un obiect exterior acioneaz ca un client al
unui obiect interior
un obiect exterior este acela care folosete serviciile oferite
de un obiect interior
un obiect exterior este acela care folosete serviciile oferite
de un obiect interior
obiectul exterior apeleaz metodele obiectului interior pentru
a-i folosi propriile funcii
obiectul exterior apeleaz metodele obiectului interior pentru
a-i folosi propriile funcii
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
REUTILIZAREA CODULUI
REUTILIZAREA CODULUI
Delegarea
Delegarea
interfaa obiectului exterior conine metode ce apeleaz
metodele obiectului interior (aceste metode sunt
transparente pentru client)
interfaa obiectului exterior conine metode ce apeleaz
metodele obiectului interior (aceste metode sunt
transparente pentru client)
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
REUTILIZAREA CODULUI
REUTILIZAREA CODULUI
Delegarea
Delegarea
implementarea delegrii este asemntoare cu
implementarea unui client ce utilizeaz un obiect COM
implementarea delegrii este asemntoare cu
implementarea unui client ce utilizeaz un obiect COM
pentru obiectul interior, obiectul exterior este doar un simplu
client
pentru obiectul interior, obiectul exterior este doar un simplu
client
Avantaj
Avantaj
simplitatea (delegarea reprezint unul dintre cele mai utilizate
mecanisme de refolosire n tehnologia COM)
simplitatea (delegarea reprezint unul dintre cele mai utilizate
mecanisme de refolosire n tehnologia COM)
Dezavantaj
Dezavantaj
dac este nevoie s se strbat mai multe obiecte pentru a se
ajunge la obiectul ce conine metodele cerute, atunci
delegarea nu mai este o metod eficient deoarece
trebuie scris cod suplimentar
dac este nevoie s se strbat mai multe obiecte pentru a se
ajunge la obiectul ce conine metodele cerute, atunci
delegarea nu mai este o metod eficient deoarece
trebuie scris cod suplimentar
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
REUTILIZAREA CODULUI
REUTILIZAREA CODULUI
Agregarea
Agregarea
prin acest mecanism, obiectul exterior prezint interfeele
obiectului interior ca i cum ar fi ale sale
prin acest mecanism, obiectul exterior prezint interfeele
obiectului interior ca i cum ar fi ale sale
atunci cnd clientul cere un pointer la o interfa, obiectul
exterior ntoarce un pointer la interfaa obiectului
interior, agregat
atunci cnd clientul cere un pointer la o interfa, obiectul
exterior ntoarce un pointer la interfaa obiectului
interior, agregat
metodele obiectului interior sunt adugate (agregate) la cele
ale obiectului exterior
metodele obiectului interior sunt adugate (agregate) la cele
ale obiectului exterior
procesul este complet invizibil pentru client
procesul este complet invizibil pentru client
deoarece agregarea cere suport special de la obiectul interior,
nu toate obiectele pot fi agregate
deoarece agregarea cere suport special de la obiectul interior,
nu toate obiectele pot fi agregate
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
REUTILIZAREA CODULUI
REUTILIZAREA CODULUI
Agregarea
Agregarea
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
REUTILIZAREA CODULUI
REUTILIZAREA CODULUI
Agregarea
Agregarea
Problema
Problema
dac un client apeleaz IUnknown::QueryInterface a interfeei
B, obiectul interior nu are de unde s tie dac obiectul
exterior suport interfaa A, iar dac apeleaz
IUnknown::AddRef a interfeei B, obiectul exterior nu va
afla acest lucru
dac un client apeleaz IUnknown::QueryInterface a interfeei
B, obiectul interior nu are de unde s tie dac obiectul
exterior suport interfaa A, iar dac apeleaz
IUnknown::AddRef a interfeei B, obiectul exterior nu va
afla acest lucru
Soluie
Soluie
prin introducerea unui pointer de la obiectul exterior ctre
interfaa IUnknown a obiectului interior
prin introducerea unui pointer de la obiectul exterior ctre
interfaa IUnknown a obiectului interior
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
TRANSPORT
TRANSPORT
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
este un proces necesar apelrii consistente a unui obiect COM i a
metodelor sale indiferent dac acesta este implementat n
acelai proces cu cel al clientului, sau ntr-un proces separat
(apelul este acelai)
este un proces necesar apelrii consistente a unui obiect COM i a
metodelor sale indiferent dac acesta este implementat n
acelai proces cu cel al clientului, sau ntr-un proces separat
(apelul este acelai)
Transportor (marshaler)
Transportor (marshaler)
un fragment de cod care asigur ntreaga procedur de
mpachetare/despachetare
un fragment de cod care asigur ntreaga procedur de
mpachetare/despachetare
codul din partea clientului trebuie s fie capabil s
mpacheteze parametrii fiecrei metode i s
despacheteze fiecare rezultat primit
codul din partea clientului trebuie s fie capabil s
mpacheteze parametrii fiecrei metode i s
despacheteze fiecare rezultat primit
codul din partea obiectului trebuie s fie capabil s
despacheteze parametrii fiecrei metode i s
mpacheteze rezultatele pe care le trimite
codul din partea obiectului trebuie s fie capabil s
despacheteze parametrii fiecrei metode i s
mpacheteze rezultatele pe care le trimite
poate fi static sau dinamic
poate fi static sau dinamic
n cazul celui static se genereaz obiectele proxim i extrem
n cazul celui static se genereaz obiectele proxim i extrem
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
TRANSPORT
TRANSPORT
Transportor (marshaler)
Transportor (marshaler)
pentru client operaia se desfoar la fel ca n cazul unui
server intra-proces, ceea ce este cunoscut sub
denumirea de transparen local/la distan
pentru client operaia se desfoar la fel ca n cazul unui
server intra-proces, ceea ce este cunoscut sub
denumirea de transparen local/la distan
Obiect proxim (proxy)
Obiect proxim (proxy)
obiect apropiat, adic ruleaz n acelai proces cu clientul
obiect apropiat, adic ruleaz n acelai proces cu clientul
este un obiect COM care are aceleai interfee pe care le are
i obiectul aflat pe serverul local
este un obiect COM care are aceleai interfee pe care le are
i obiectul aflat pe serverul local
atunci cnd clientul apeleaz o metod utiliznd un pointer la
o interfa, se execut de fapt codul n proxim
atunci cnd clientul apeleaz o metod utiliznd un pointer la
o interfa, se execut de fapt codul n proxim
preia parametrii de la client i i mpacheteaz, pregtindu-i
pentru transfer
preia parametrii de la client i i mpacheteaz, pregtindu-i
pentru transfer
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
TRANSPORT
TRANSPORT
Obiect proxim (proxy)
Obiect proxim (proxy)
trimite o cerere prin intermediul unui tip de comunicaie inter-
proces i transfer parametrii necesari procesului care
implementeaz obiectul real
trimite o cerere prin intermediul unui tip de comunicaie inter-
proces i transfer parametrii necesari procesului care
implementeaz obiectul real
Obiect extrem (stub)
Obiect extrem (stub)
obiect deprtat, la distan, care ruleaz n acelai proces cu
obiectul COM real
obiect deprtat, la distan, care ruleaz n acelai proces cu
obiectul COM real
atunci cnd cererea ajunge n procesul local al serverului,
aceasta este gestionat de ctre un alt obiect numit
extrem
atunci cnd cererea ajunge n procesul local al serverului,
aceasta este gestionat de ctre un alt obiect numit
extrem
preia pachetele trimise de proxim i le despacheteaz apelnd
metoda cerut
preia pachetele trimise de proxim i le despacheteaz apelnd
metoda cerut
dup executarea metodei rezultatul este trimis, pe aceeai
cale, napoi la client
dup executarea metodei rezultatul este trimis, pe aceeai
cale, napoi la client
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
TRANSPORT
TRANSPORT
Compilatorul MIDL (Microsoft IDL)
Compilatorul MIDL (Microsoft IDL)
folosit la crearea obiectelor proxim, respectiv extrem
folosit la crearea obiectelor proxim, respectiv extrem
prezint o definiie a interfeei scris n limbajul IDL (Interface
Definition Language)
prezint o definiie a interfeei scris n limbajul IDL (Interface
Definition Language)
poate citi definiia i genera automat codul de transport
necesar interfeei aflat n proxim, respectiv extrem
poate citi definiia i genera automat codul de transport
necesar interfeei aflat n proxim, respectiv extrem
mai creeaz nite fiiere care definesc elemente extrem de
importante, cum ar fi prototipurile funciilor ce
genereaz metodele interfeei ca i un fiier care conine
identificatorul interfeei IID
mai creeaz nite fiiere care definesc elemente extrem de
importante, cum ar fi prototipurile funciilor ce
genereaz metodele interfeei ca i un fiier care conine
identificatorul interfeei IID
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
TRANSPORT
TRANSPORT
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
transportul se folosete n situaiile :
transportul se folosete n situaiile :
1. Proces separat care ruleaz pe aceeai main
(server local)
1. Proces separat care ruleaz pe aceeai main
(server local)
pointerul la interfaa clientului nu se poate adresa direct
interfeei din obiect
pointerul la interfaa clientului nu se poate adresa direct
interfeei din obiect
pointerul se va adresa mai nti unei interfee a unui obiect
proxim (proxy) aflat n procesul clientului
pointerul se va adresa mai nti unei interfee a unui obiect
proxim (proxy) aflat n procesul clientului
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
TRANSPORT
TRANSPORT
2. Proces care ruleaz pe o main separat (server la
distan)
2. Proces care ruleaz pe o main separat (server la
distan)
caracteristic adugat prin introducerea tehnologiei DCOM
caracteristic adugat prin introducerea tehnologiei DCOM
este aproape identic cu procesul separat care ruleaz pe
aceeai main
este aproape identic cu procesul separat care ruleaz pe
aceeai main
sunt necesare obiectele proxim i extrem
sunt necesare obiectele proxim i extrem
n plus este necesar apelul unei proceduri de comunicare la
distan (RPC Remote Procedure Call)
n plus este necesar apelul unei proceduri de comunicare la
distan (RPC Remote Procedure Call)
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
TRANSPORT
TRANSPORT
2. Proces care ruleaz pe o main separat (server la
distan)
2. Proces care ruleaz pe o main separat (server la
distan)
Desfurarea procesului
Desfurarea procesului
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
TRANSPORT
TRANSPORT
Transportor dinamic
Transportor dinamic
obiectele proxim i extrem nu reprezint ntotdeauna cea mai
eficient cale de transport
obiectele proxim i extrem nu reprezint ntotdeauna cea mai
eficient cale de transport
n unele situaii clientul folosete interfaa pe care o dorete n
momentul execuiei codului, i nu la compilarea
acestuia
n unele situaii clientul folosete interfaa pe care o dorete n
momentul execuiei codului, i nu la compilarea
acestuia
n acest fel clientul poate apela metode ale interfeelor pe
care le ntlnete n timpul rulrii programului
n acest fel clientul poate apela metode ale interfeelor pe
care le ntlnete n timpul rulrii programului
n aceast situaie, trebuie create transportoare dinamice
n aceast situaie, trebuie create transportoare dinamice
informaiile obinute prin intermediul definiiilor IDL (folosite la
crearea interfeelor i obiectelor proxim i extrem) pot fi
folosite pentru a genera un cod necesar crerii de
transportoare dinamice
informaiile obinute prin intermediul definiiilor IDL (folosite la
crearea interfeelor i obiectelor proxim i extrem) pot fi
folosite pentru a genera un cod necesar crerii de
transportoare dinamice
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
TRANSPORT
TRANSPORT
Transportor dinamic
Transportor dinamic
clientul care se afl n execuie la un moment dat poate
accesa informaia de tip a unui obiect care descrie
interfeele sale
clientul care se afl n execuie la un moment dat poate
accesa informaia de tip a unui obiect care descrie
interfeele sale
obiectul poate memora informaia sa de tip ntr-o bibliotec
generat de ctre compilatorul MIDL
obiectul poate memora informaia sa de tip ntr-o bibliotec
generat de ctre compilatorul MIDL
biblioteca conine descrierea standardizat a interfeelor
obiectului, poate fi distribuit sub forma unor fiiere sau
streamuri i poate fi accesat de ctre clieni prin
intermediul interfeelor standard
biblioteca conine descrierea standardizat a interfeelor
obiectului, poate fi distribuit sub forma unor fiiere sau
streamuri i poate fi accesat de ctre clieni prin
intermediul interfeelor standard
n funcie de informaia existent n fiierul IDL, compilatorul
MIDL poate produce cod de transport (proxim i extrem)
pentru una sau mai multe interfee, biblioteci de tip i
altele
n funcie de informaia existent n fiierul IDL, compilatorul
MIDL poate produce cod de transport (proxim i extrem)
pentru una sau mai multe interfee, biblioteci de tip i
altele
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
TRANSPORT
TRANSPORT
Transportor dinamic
Transportor dinamic
biblioteca de tip ncepe cu un identificator GUID i un numr
de versiune al bibliotecii i nu al interfeei (care nu
posed aa ceva)
biblioteca de tip ncepe cu un identificator GUID i un numr
de versiune al bibliotecii i nu al interfeei (care nu
posed aa ceva)
definiia bibliotecii conine de fapt un singur element: clasa
componentei (component object class - coclass)
definiia bibliotecii conine de fapt un singur element: clasa
componentei (component object class - coclass)
clasa componentei afieaz toate interfeele pe care le
suport acel obiect
clasa componentei afieaz toate interfeele pe care le
suport acel obiect
coclasele au un GUID care trebuie s fie acelai cu
identificatorul CLSID al obiectului respectiv
coclasele au un GUID care trebuie s fie acelai cu
identificatorul CLSID al obiectului respectiv
clientul poate folosi (pe baza CLSID) registrul sistemului
pentru a gsi biblioteca de tip
clientul poate folosi (pe baza CLSID) registrul sistemului
pentru a gsi biblioteca de tip
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
TRANSPORT
TRANSPORT
Transportor dinamic
Transportor dinamic
biblioteca conine descrieri ale coclaselor i ale interfeelor
biblioteca conine descrieri ale coclaselor i ale interfeelor
bibliotecile sunt de obicei accesate cu ajutorul unor programe
standard ce permit vizualizarea coninuturilor acestora
de ctre obiectele COM prin intermediul interfeelor
bibliotecile sunt de obicei accesate cu ajutorul unor programe
standard ce permit vizualizarea coninuturilor acestora
de ctre obiectele COM prin intermediul interfeelor
biblioteca, ca un ntreg, poate fi accesat prin intermediul
interfeei ITypeLib
biblioteca, ca un ntreg, poate fi accesat prin intermediul
interfeei ITypeLib
obiectele din interiorul bibliotecii pot fi accesate prin
intermediul interfeei ITypeInfo
obiectele din interiorul bibliotecii pot fi accesate prin
intermediul interfeei ITypeInfo
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
TRANSPORT
TRANSPORT
Transportor dinamic
Transportor dinamic
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
TRANSPORT
TRANSPORT
Transportor dinamic
Transportor dinamic
fiecare obiect din bibliotec conine o descriere a unui aspect
al obiectului a crui definiie IDL a fost utilizat pentru
crearea bibliotecii (informaia de tip)
fiecare obiect din bibliotec conine o descriere a unui aspect
al obiectului a crui definiie IDL a fost utilizat pentru
crearea bibliotecii (informaia de tip)
pentru a accesa o bibliotec, clientul poate apela funcia
LoadRegTypeLib
pentru a accesa o bibliotec, clientul poate apela funcia
LoadRegTypeLib
funcia conine ca parametru identificatorul CLSID al
obiectului descris de bibliotec
funcia conine ca parametru identificatorul CLSID al
obiectului descris de bibliotec
funcia caut locaia bibliotecii n registrul sistemului, ncarc
coninutul bibliotecii n memoria clientului i returneaz
clientului un pointer ctre interfaa ITypeLib a bibliotecii
funcia caut locaia bibliotecii n registrul sistemului, ncarc
coninutul bibliotecii n memoria clientului i returneaz
clientului un pointer ctre interfaa ITypeLib a bibliotecii
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
CREAREA MAI MULTOR INSTANE DE
OBIECTE N ACEEAI CLAS
TRANSPORT
TRANSPORT
Transportor dinamic
Transportor dinamic
dac clientul cunoate numele fiierului bibliotec poate
apela direct funcia LoadTypeLib n locul funciei
LoadRegTypeLib
dac clientul cunoate numele fiierului bibliotec poate
apela direct funcia LoadTypeLib n locul funciei
LoadRegTypeLib
utiliznd metodele interfeei ITypeLib, clientul poate obine
pointeri la interfeele ITypeInfo ale obiectelor bibliotecii
utiliznd metodele interfeei ITypeLib, clientul poate obine
pointeri la interfeele ITypeInfo ale obiectelor bibliotecii
atunci cnd un client obine un pointer ctre o interfa
ITypeInfo, el poate avea acces la diferite informaii
despre obiectul respectiv
atunci cnd un client obine un pointer ctre o interfa
ITypeInfo, el poate avea acces la diferite informaii
despre obiectul respectiv
Dr. ing. Liviu PERNIU
Curs 10 CREAREA OBIECTELOR COM
CREAREA OBIECTELOR COM
Laborator 10 - prezentare
Laborator 10 - prezentare

S-ar putea să vă placă și

  • Prezentare PPT - PPSX
    Prezentare PPT - PPSX
    Document14 pagini
    Prezentare PPT - PPSX
    Rodica Petronela Ghiță
    Încă nu există evaluări
  • MIS Lab5
    MIS Lab5
    Document4 pagini
    MIS Lab5
    Rodica Petronela Ghiță
    Încă nu există evaluări
  • MIS Lab6
    MIS Lab6
    Document4 pagini
    MIS Lab6
    Rodica Petronela Ghiță
    Încă nu există evaluări
  • C11 SN - RNvs
    C11 SN - RNvs
    Document6 pagini
    C11 SN - RNvs
    Rodica Petronela Ghiță
    Încă nu există evaluări
  • MIS Lab7
    MIS Lab7
    Document4 pagini
    MIS Lab7
    Rodica Petronela Ghiță
    Încă nu există evaluări
  • MIS Lab4
    MIS Lab4
    Document4 pagini
    MIS Lab4
    Rodica Petronela Ghiță
    Încă nu există evaluări
  • MIS Lab2
    MIS Lab2
    Document4 pagini
    MIS Lab2
    Rodica Petronela Ghiță
    Încă nu există evaluări
  • Curs 7 BD
    Curs 7 BD
    Document8 pagini
    Curs 7 BD
    Rodica Petronela Ghiță
    Încă nu există evaluări
  • MIS Lab3
    MIS Lab3
    Document3 pagini
    MIS Lab3
    Rodica Petronela Ghiță
    Încă nu există evaluări
  • MIS Lab1
    MIS Lab1
    Document5 pagini
    MIS Lab1
    Rodica Petronela Ghiță
    Încă nu există evaluări
  • Curs 9-10 BD
    Curs 9-10 BD
    Document8 pagini
    Curs 9-10 BD
    Rodica Petronela Ghiță
    Încă nu există evaluări
  • Curs 8 BD
    Curs 8 BD
    Document9 pagini
    Curs 8 BD
    Rodica Petronela Ghiță
    Încă nu există evaluări
  • Curs 11-12 BD
    Curs 11-12 BD
    Document10 pagini
    Curs 11-12 BD
    Rodica Petronela Ghiță
    Încă nu există evaluări
  • Curs 6 Rom
    Curs 6 Rom
    Document7 pagini
    Curs 6 Rom
    Rodica Petronela Ghiță
    Încă nu există evaluări
  • Curs 5 BD
    Curs 5 BD
    Document8 pagini
    Curs 5 BD
    Rodica Petronela Ghiță
    Încă nu există evaluări
  • C19 Estim Stare1
    C19 Estim Stare1
    Document7 pagini
    C19 Estim Stare1
    Rodica Petronela Ghiță
    Încă nu există evaluări
  • Curs 3 BD
    Curs 3 BD
    Document4 pagini
    Curs 3 BD
    Rodica Petronela Ghiță
    Încă nu există evaluări
  • Baze de Date - Subiecte-examen-2013-Propuse 1
    Baze de Date - Subiecte-examen-2013-Propuse 1
    Document1 pagină
    Baze de Date - Subiecte-examen-2013-Propuse 1
    Rodica Petronela Ghiță
    Încă nu există evaluări
  • Curs 4 BD
    Curs 4 BD
    Document10 pagini
    Curs 4 BD
    Rodica Petronela Ghiță
    Încă nu există evaluări
  • Curs 1 BD
    Curs 1 BD
    Document4 pagini
    Curs 1 BD
    c_caltea
    Încă nu există evaluări
  • Curs 2 BD
    Curs 2 BD
    Document5 pagini
    Curs 2 BD
    Rodica Petronela Ghiță
    Încă nu există evaluări
  • C20 Estim Stare2
    C20 Estim Stare2
    Document9 pagini
    C20 Estim Stare2
    Rodica Petronela Ghiță
    Încă nu există evaluări
  • C15 PrSistRegMI - Regl Predictie
    C15 PrSistRegMI - Regl Predictie
    Document10 pagini
    C15 PrSistRegMI - Regl Predictie
    Rodica Petronela Ghiță
    Încă nu există evaluări
  • C18 Reg Stare - Estim Stare
    C18 Reg Stare - Estim Stare
    Document9 pagini
    C18 Reg Stare - Estim Stare
    Rodica Petronela Ghiță
    Încă nu există evaluări
  • C17 Reg Stare2
    C17 Reg Stare2
    Document9 pagini
    C17 Reg Stare2
    Rodica Petronela Ghiță
    Încă nu există evaluări
  • C16 Reg Stare1
    C16 Reg Stare1
    Document8 pagini
    C16 Reg Stare1
    Rodica Petronela Ghiță
    Încă nu există evaluări
  • c12 Icsn Sint RN Pi - Pid
    c12 Icsn Sint RN Pi - Pid
    Document10 pagini
    c12 Icsn Sint RN Pi - Pid
    Rodica Petronela Ghiță
    Încă nu există evaluări
  • C13 PrSistNumMetRaspImpus
    C13 PrSistNumMetRaspImpus
    Document10 pagini
    C13 PrSistNumMetRaspImpus
    Rodica Petronela Ghiță
    Încă nu există evaluări
  • C14 PrSistRegMI1
    C14 PrSistRegMI1
    Document10 pagini
    C14 PrSistRegMI1
    Rodica Petronela Ghiță
    Încă nu există evaluări
  • Comentarii Privind Modelele Discrete Ale Elementelor de Ordinul 1 (T1) Şi 2 (T2)
    Comentarii Privind Modelele Discrete Ale Elementelor de Ordinul 1 (T1) Şi 2 (T2)
    Document11 pagini
    Comentarii Privind Modelele Discrete Ale Elementelor de Ordinul 1 (T1) Şi 2 (T2)
    Rodica Petronela Ghiță
    Încă nu există evaluări