Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

ActiveX - ClassID i GUID

[es] :: C/C++ programiranje :: ActiveX - ClassID i GUID

[ Pregleda: 1787 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

itf
Zagreb

Član broj: 59794
Poruke: 993
161.53.237.*



+9 Profil

icon ActiveX - ClassID i GUID24.01.2009. u 10:14 - pre 185 meseci
U C++u sam napravio jednu ActiveForm komponentu koja se nalazi u ActiveX biblioteci i ona mi predstavlja sučelje za web aplikaciju. Pri instalaciji te komponente na web-u moram znati njen CLASSID, te me tu zbunjuju neke stvari.

1) Da li je CLASSID isto što i GUID (Global Unique Identifier)? Negdje sam našao da jest, a negdje da nije.
2) Pri kreiranju praznog ActiveX-a dobijem njegov GUID, dok npr. pri kreiranju ActiveForm/COM komponente dobijem zasebno GUID za interface i coclass. I sad.. koje od ovo troje ja mogu iskoristiti kao CLASSID (ukoliko je CLASSID isto što i GUID) za instalaciju na web-u?
3) Pošto se CLASSID/GUID očito definira pri samom kreiranju kontrole čime se osiguralo da je to baš jedinstveni identifikator, i da baš niti jedna komponenta na svijetu niti slučajno ne može imati taj isti identifikator?
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: ActiveX - ClassID i GUID24.01.2009. u 14:32 - pre 185 meseci
1. Pa pravilno bi bilo reci da je CLASSID uvek GUID, ali da GIUD nije uvek CLASSID, ali to je vise igra reci. U prevodu jedan GUID moze biti CLASSID, ali i ne mora (moze biti nesto drugo, npr ID uniquidentifier kolone u SQL bazi), dok CLASSID uvek mora biti GUID i ne moze biti nesto drugo. Zasto je ovo mozda vazno , vidi odgovor na 3. pitanje.

2. Za aktiviranje activex objekta potreban je samo CLASSID, consumer (IE npr) ce sam prepostaviti da ActiveX objekat implementira dgovarajuce dispatch interfejse (ako me secasnje sluzi minimum IOleControl i IOleControlSite), i uradice gomilu QueryInterface i TLB operacija da bi utvrdio sta sve tvoj objekat ume i moze i kako da ga iskoristi. Tako da ti efektivno i nije neophodan tvoj poseban dispatch interfejs, ali je naravno moguce imati isti, za slucaj da ga koristis iz specijalizovanog konzumera kojem taj interfejs znaci nesto. Da bi se interfejs registrovao na sistemu mora da ima svoj UUID isto kao i coclass, ali to nema nikakvog uticaja na standardne konzumere kao sto je IE.
Na osnovu toga sto si napisao (ActiveForm) pretpostavljam da koristis Borland C++ Builder; uvek napomeni koji alat koristis posto razni alati razlicito pristupaju RAD-ovanju activeX-a. Ako se dobro secam Delphi-a u OBJECT tag stavljas classid od same activeform-e.

3. GUID je Microsoftova implementacija UUID v4 standarda. Imali smo slicnu pricu ovome oko kolizije GUID poja u SQL-u:
Citat:
Za V4 koji jeste u upotrebi danas bazna verovatnoca je 1 prema 2^122 (1.9e-37) da ces generisati isti GUID globalno. U okviru istog domena, npr tabele, cak i da ista ima milijardu redova sansa za pojavljivanje jedne jedine kolizije je i dalje za prakticnu primenu [utl=http://en.wikipedia.org/wiki/Universally_Unique_Identifier#Random_UUID_probability_of_duplicates]dovoljno blizu 0%[/url]


Tako da nemoj da brines, sanse su astronomske da uopste dobijes duplikat. I pored toga smo videli da nisu SVI generisani GUIDi napravljeni u domenu CLASSID-eva (pitanje 1), tako da su sanse da natrcis na isti v4 CLASSID globalno jos i manje (tj ako i postoji kolizija izmedju tvog CLASSID-a i npr instance UUID kljuca u SQL serveru to je nevazno jer se ta dva guid-a nece nikad sukobiti).
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
*.adsl.net.t-com.hr.



+9 Profil

icon Re: ActiveX - ClassID i GUID24.01.2009. u 15:12 - pre 185 meseci
zahvaljujem
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
195.222.97.*



+2790 Profil

icon Re: ActiveX - ClassID i GUID24.01.2009. u 17:52 - pre 185 meseci
ClassID bi trebao da bude GUID generisan jednom za svagda za jednu klasu.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.adsl-3.sezampro.yu.



+395 Profil

icon Re: ActiveX - ClassID i GUID24.01.2009. u 20:25 - pre 185 meseci
U teoriji COM interfejsa svaka komponenta ima svoj CLASSID zapisan u registry-iju
Instanciranje kontrole radis preko ClassID a posle toga radis QueryInterface po IID- inerfejs ID
ili samo odredjena enkapsuklacija tj. set metoda koji te u tom trenutku interesuje .
(da li samo user-interfejs i eventi koji ide uglavnom preko IDIspatch-a
ili samo odredjene f-ije bez user-interfejsa)
Ono sto im je zajednicko je to da imaju iisto GUID samo u
razlicitoj reprezentaciji :

Code:

Registry format {5F2D8068-4D1C-4008-A5DA-5CD197139CB1}  


Code:

kao struktra u tlb ili tlh fajlu 
// {5F2D8068-4D1C-4008-A5DA-5CD197139CB1}
static const GUID <<name>> = 
{ 0x5f2d8068, 0x4d1c, 0x4008, { 0xa5, 0xda, 0x5c, 0xd1, 0x97, 0x13, 0x9c, 0xb1 } };


Code:

kao win-api :
// {5F2D8068-4D1C-4008-A5DA-5CD197139CB1}
DEFINE_GUID(<<name>>, 
0x5f2d8068, 0x4d1c, 0x4008, 0xa5, 0xda, 0x5c, 0xd1, 0x97, 0x13, 0x9c, 0xb1);


Code:

ili kao OLE makro 
// {5F2D8068-4D1C-4008-A5DA-5CD197139CB1}
IMPLEMENT_OLECREATE(<<class>>, <<external_name>>, 
0x5f2d8068, 0x4d1c, 0x4008, 0xa5, 0xda, 0x5c, 0xd1, 0x97, 0x13, 0x9c, 0xb1);





Viva lollapalooza
 
Odgovor na temu

[es] :: C/C++ programiranje :: ActiveX - ClassID i GUID

[ Pregleda: 1787 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.