Použití zástupného znaku zadaného systémem
Chcete-li pro server DLL použít systémovou náhradu, zaregistrujte knihovnu DLL a zadejte prázdný řetězec nebo NULL pro hodnotu DllSurrogate v registru. Když přijde žádost o aktivaci DLL serveru, který je takto určen pro COM, COM spustí výchozí náhradní proces a požadovanou knihovnu DLL (zadáním CLSID na příkazovém řádku spuštění interně) současně, aby se předešlo samostatnému volání. (Informace o spuštění více než jednoho serveru DLL v náhradním procesu naleznete v tématu náhradní sdílení.)
Výchozí implementace náhradního procesu je pseudo-COM server založený na modelu se smíšenými vlákny. Pokud je do jednoho náhradního procesu načteno více serverů DLL, tento proces zajistí, že každý server DLL vytvoří instanci pomocí modelu threadingu zadaného v registru pro daný server. Všechny načtené servery s volnými vlákny budou žít společně v vícevláknovém apartmánu, zatímco každý server s vlákny bude umístěn v jednom vlákně apartmánu. Pokud server knihovny DLL podporuje oba modely vláken, COM zvolí vícevláknový.
Tento náhradní proces je navržen tak, aby COM zajišťoval jak uvolnění serverů DLL, tak ukončení náhradního procesu. Životnost procesu je primárně určena počtem zprostředkovaných objektů v zástupci, který funguje jako heuristické měřítko externích závislostí na procesu. Ačkoli cílem je reprezentovat externí závislosti, tento model životnosti nerozlišuje mezi zprostředkováním uvnitř a vně procesu. Dbejte na to, abyste neúmyslně nezafixovali zástupce prostřednictvím zařazování mezi apartmány nebo skrze mechanismy založené na in-proc zařazování, jako je Tabulka globálního rozhraní nebo IAgileReference.
Systémem poskytnutý náhradník bude pro většinu vývojářů velmi dobře fungovat a také se velmi snadno používá. Vývojáři, kteří mají zvláštní požadavky, se však mohou rozhodnout, že je nutné vytvořit vlastního zástupce. Další informace naleznete v tématu Psaní vlastní náhrady.