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.
Objektový model COM se liší od objektového modelu modulu runtime .NET několika důležitými způsoby:
Klienti objektů MODELU COM musí spravovat životnost těchto objektů; modul CLR (Common Language Runtime) spravuje životnost objektů v jeho prostředí.
Klienti objektů MODELU COM zjistí, zda je služba k dispozici vyžádáním rozhraní, které tuto službu poskytuje, a získáním ukazatele rozhraní, nebo ne. Klienti objektů .NET mohou získat popis funkce objektu pomocí reflexe.
Objekty NET se nacházejí v paměti spravované spouštěcím prostředím modulu runtime .NET. Spouštěcí prostředí může přesouvat objekty v paměti z důvodů výkonu a aktualizovat všechny odkazy na objekty, které přesune. Nespravovaní klienti, kteří získali ukazatel na objekt, spoléhají na to, že objekt zůstane na stejném místě. Tito klienti nemají žádný mechanismus pro práci s objektem, jehož umístění není opraveno.
Aby se překonaly tyto rozdíly, modul runtime poskytuje třídy obálky, díky kterým to vypadá, že jak spravovaní, tak nespravovaní klienti volají objekty v příslušném prostředí. Pokaždé, když spravovaný klient volá metodu na objektu COM, runtime vytvoří vyvolatelnou obálku modulu runtime (RCW). RcWs mimo jiné abstrahují rozdíly mezi spravovanými a nespravovanými referenčními mechanismy. Modul runtime také vytvoří volatelnou obálku COM (CCW) pro zvrácení procesu, což klientovi COM umožní bezproblémové volání metody na objektu .NET. Jak ukazuje následující obrázek, perspektiva volajícího kódu určuje, kterou třídu obálky modul runtime vytvoří.
Ve většině případů standardní RCW nebo CCW, které generuje runtime, poskytují adekvátní maršálování pro volání přesahující hranice mezi COM a .NET runtime. Pomocí vlastních atributů můžete volitelně upravit způsob, jakým modul runtime představuje spravovaný a nespravovaný kód.