3. COM vs .NET komponenty

V předchozích dvou kapitolách jsme psali o použití COM komponenty a její začlenění do našeho .NET projektu. V prostředí .NET existuje nový typ komponent rozšiřující vlastnosti COM a odstraňující jejich nedostatky.

V COM technologii se používá metoda GUID - nutnost generování jedinečného kódu pro každou komponentu, její metody. .NET komponenty oproti tomu samy obsahují svůj vlastní popis obsažený v segmentech označených jako manifest. Metadata oproti tomu se starají o volání patřičných metod, řeší problém s verzováním DLL, umísťují do paměti instance tříd. Také se nemusejí starat o dobu života objektu. Většinu potřebných operací zajistí CLR.

Následující tabulka poukazuje na rozdíly mezi COM komponentami a .NET komponentami

Tabulka 10.1. COM Vs. .NET komponenty

COM.NET komponenty
globální přístup ke komponentám na počítačižádný globální přístup
nutná registrace DLLžádná potřeba registrace
informace registru a DLL jsou na dvou různých místech (DLL peklo)Kompletní informace nezbytné pro rozpoznání verze a ostatních jsou na jednom místě (DLL ráj)
spouštěno neřízeném prostředíspouštěno v řízeném prostředí
pro ASP aplikace je nezbytný pro začlenění COM restart serverunení třeba restart

Technologie .NET komponent určitě přináší zlepšení pro práci s komponentami, nicméně mnoho firem vložilo nemalé finanční prostředky do technologie COM. Navíc tato technologie se vyskytuje ve světě informačních technologií více než sedm let. Je tedy přinejmenším zdlouhavé přepsat všechny COM komponenty na komponenty .NET.

3.1. Tvorba .NET komponenty

Vytváření .NET komponenty je triviální.

[ukázka kódu]
class MaPrvniKomponenta {
  public int ReturnTen() {
    return 2*5;
  }
}

- prakticky v každém případě, když jsme vytvořili nějakou třídu, jsme mohli vytvořit i komponentu. Stačí pouze ve třídě, ze které chceme komponentu vytvořit, nevložit metodu Main a uložit ji jako knihovnu (DLL), pomocí příkazové řádky takto:

csc /t:library /out:nazevCSsouboru.dll nazevCSsouboru.cs

V prostředí Visual Studia vytvoříme nový projekt s názvem Class Library, vložíme do ní kód komponenty a běžným způsobem kompilujeme.

Pokud budeme tuto komponentu někdy v budoucnu chtít používat, postupujeme podobně jako při výběru COM komponenty, pouze s tím rozdílem, že vybereme klikneme na tlačítko Procházet (Browse) a umístíme ji.