Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V modelu COM+ se vytvoří každý objekt COM s přidruženým kontextem. To znamená, že je nutné vytvořit a inicializovat nový kontext nebo použít příslušný existující kontext. Tento proces se označuje jako aktivační. V modelu COM+je objekt aktivován buď ve vlastním kontextu, nebo v objektu jeho tvůrce (objekt, který požadoval aktivaci objektu , například voláním CoCreateInstance).
V některých případech, jako je například sdružování objektů, je objekt aktivován bez vytvoření úplně od začátku. V tomto případě je spuštěná instance aktivována v kontextu. Během své životnosti se může opakovaně aktivovat v různých kontextech.
Základní mechanismus je v obou případech stejný – objekt je přidružen k kontextu a tento kontext je správně inicializován tak, aby představoval potřeby objektu za běhu.
Tok vlastností kontextu
Při aktivaci objektu v reakci na požadavek na vytvoření z jiného objektu musí objekt COM+ zprostředkovávat mezi nimi, aby se objekt správně aktivoval. Com+ musí porovnat kontext volajícího s konfigurací volané komponenty a pak rozhodnout, kde aktivovat podřízenou komponentu a jak inicializovat její kontextové vlastnosti.
Pokud chcete zjistit konfiguraci komponenty, com+ ji vyhledá v databázi pro registraci tříd MODELU COM+, která je optimalizovaná pro extrémně rychlé vyhledávání za běhu. (Určuje se podle toho, jak jste komponentu nakonfigurovali při instalaci do aplikace modelu COM+.) Konfigurace komponenty se pak zkoumá ve stavu vlastností kontextu volajícího.
V některých případech je konfigurace konzistentní s kontextem volajícího a komponentu lze aktivovat v kontextu volajícího. K tomu může dojít pouze v případě, že kontext volajícího splňuje všechny požadavky na běhový čas nového objektu.
Pokud podřízenou komponentu nelze aktivovat v kontextu volajícího, aktivuje se ve svém vlastním kontextu v příslušném bytě. Když k tomu dojde, mohou určité vlastnosti kontextu tokovat z volajícího do volaný. Pokud je například volající přidružen k transakci a volaný podporuje transakce, nový objekt získá svůj vlastní kontext (pro hlasování v transakci, musí mít vlastní konzistentní příznak) a dědí ID transakce volajícího a ID aktivity (které se nachází ve stejné transakci a synchronizační doméně).
Ignorované kontextové vlastnosti
V závislosti na tom, jak je komponenta nakonfigurována, nemusí některé vlastnosti kontextu hrát žádnou roli při určování, jestli je aktivována v kontextu tvůrce nebo v jeho vlastním kontextu. Například nastavení Zakázáno transakce a Synchronizace Zakázáno, označující přítomnost transakce nebo synchronizační domény, nebude hrát žádnou roli vůbec v aktivaci komponenty. Tyto vlastnosti jsou v zásadě ignorovány při toku kontextu. Nebo pokud komponenta používá pouze kontrolu přístupu na úrovni procesu, její vlastnost kontextu zabezpečení se ignoruje – konfigurace zabezpečení komponenty nebude nikdy hrát roli při aktivaci.
Vynucení aktivace v kontextu volajícího
V některých případech můžete chtít, aby byl objekt aktivován pouze v kontextu volajícího – to znamená, že nikdy nebyl aktivován ve vlastním kontextu. Můžete například chtít řídit chování objektu, když je volána přes kontextovou hranici.
Výběrem možnosti Musí být aktivován v kontextu volajících na kartě Aktivace na stránce vlastnosti komponenty Vlastnosti pomocí nástroje pro správu služby Component Services můžete zajistit, aby se objekt neaktivoval ve vlastním kontextu. (Podrobné pokyny najdete v tématu Vynucení aktivace v kontextovém volajícího.) Pokud vyberete tuto možnost, pokud objekt nelze aktivovat v kontextu volajícího, CoCreateInstance selže a vrátí CO_E_ATTEMPT_TO_CREATE_OUTSIDE_CLIENT_CONTEXT.
Výchozí kontext
Existují výchozí kontexty, které podporují nekonfigurované komponenty – to znamená, že součásti modelu COM nejsou nainstalované v aplikacích com+ a nejsou zaregistrované v databázi registrace tříd MODELU COM+. Pokud mají nekonfigurované komponenty kompatibilní model vláken, aktivují se v kontextu volajícího. V opačném případě jsou aktivovány ve výchozím kontextu v příslušném bytě. Každý apartmán má výchozí kontext pro podporu objektů MODELU COM, které nepoužívají služby MODELU COM+.
Aktivace připojení
Implementací IObjectControl::Activate a IObjectControl::D eactivate, můžete připojit aktivaci a deaktivaci dohromady a provést speciální inicializaci v novém kontextu. Tyto metody se volají pomocí modelu COM+ v určitých bodech životního cyklu objektu, pokud je objekt nakonfigurován tak, aby používal aktivaci JIT nebo sdružování objektů. Další podrobnosti najdete v tématu aktivace modelu COM+ za běhu a sdružování objektů modelu COM+.
Související témata