1.1 Úvod Vážení
přátelé, dostává se vám do rukou kniha, která by měla usnadnit vaší orientaci na
poli nových technologií, jež se přímo dračí silou valí na nás - programátory.
Dávno pryč jsou časy, kdy každá aplikace byla určena právě pro jednu věc a
prakticky nevyužívala možností jiných aplikací, nemohla, vždyť přece jiná
aplikace ani zároveň "běžet" nemohla. V dnešní době, kdy operační
systém Windows dosahuje takových kvalit, že splňuje představy i nejnáročnějších
uživatelů a je zároveň nerozšířenějším operačním systémem, již takové
aplikace nemají místo ani uplatnění. Kdo chce jít s dobou, musí se učit.
Naštěstí nových technologií je dostatek. Nejnovější způsob vytváření
aplikací, který je dnes zároveň standardem, je založený na komponentách.

1.2 Historie
Ti starší a zkušenější z nás si
jistě vzpomenou na staré dobré časy, kdy každý programátor vytvářel program
prakticky od nuly a za pomoci znalostí o strukturovaném programování přidával jednu
proceduru za druhou. V lepším případě použil nějakou knihovnu funkcí, kterou vytvořil kolega "z vedlejší kanceláře".
Jistě, existovaly firmy, které dodávaly již hotové knihovny funkcí. Pokud byly jen
trochu použitelné, určitě tu mravenčí práci trochu zjednodušily.
Zvrat v programování určitě přinesla
objektově orientovaná technologie. Programátor již nevytváří program, který se
vykonává "od začátku až do konce", ale prostředí, do kterého umisťuje
jednotlivé objekty, které spolu komunikují pomocí zpráv. Takový objektově
orientovaný systém pak reaguje na podněty zvenčí, od uži vatele a vykonává tak zcela automaticky požadované příkazy. S
trochou nadsázky lze říci, že takový systém "žije" a napodobuje tak
reálné prostředí. Objektově orientované technologie se s různými odchylkami
používají až do dnes. Každý jen trochu zkušenější analytik ví, že zkrátka bez objektů už to dnes nejde. Co tedy
lze ještě chtít ?
Od začátku vzniku objektů již uplynulo
mnoho času a vzniklo mnoho OO jazyků. Ne každý se však hodí na daný problém.
Sehnat tým programátorů, kteří bravurně ovládají jeden jazyk je někdy nad rámec
možností. Což takhle sestavit výsledný produkt z jednotlivých částí, jako hrad z
kostek a ještě ke všemu naprogramovat každou kostku pomocí jiného jazyka? Řešení
je snadné, vytvořme obecnou kostku a popišme její způsob komunikace s ostatními
kostkami. Tak vznikly komponenty a jejich rozhraní.

1.3 Komponenty
Programování pomocí komponent je
vskutku dobrý nápad. Každá aplikace se skládá z mnoha komponent, které mohou být
naprogramovány v různých programovacích jazycích a tyto komponenty pak spolu
komunikují pomocí společného protokolu. Taková aplikace lze jednoduchým způsobem
rozšiřovat tím, že přidáváme nové komponenty. Ani údržba není tak složitá,
stačí vyměnit starou komponentu za novou (bez nutnosti kompilace ostatních).
Aplikace již není jediný nerozdělitelný balík, ale je složena z komponent, se
kterými můžeme libovolně manipulovat.
1.4. Knihovny komponent
Pozorného čtenáře jistě napadlo, že
z hotových komponent lze sestavovat celé knihovny, které pak používáme pro tvorbu
aplikací. Komponenty v takové knihovně mohou být neustále aktualizovány a měněny v
závislosti na nových požadavcích, čímž zároveň aktualizujeme aplikace, které
jsou z těchto komponent vytvořeny. Vývoj jednotlivých aplikací pak spočívá v
jednoduchém sestavování z připrav ených komponent,
čímž se práce mnohonásobně urychluje.
Umístění komponent je nezávislé
vzhledem k běhu programu. To znamená, že s komponentou, která se nachází v jiném
procesu se manipuluje stejně, jako kdyby byla vytvořena ve stejném procesu jako klient.
Lze dokonce vytvářet takové komponenty, které jsou v době běhu programu umístěny
na jiném počítači.
1.6. Zapouzdření komponent
Komponenty jsou z hlediska uživatelů
zcela zapouzdřeny a komunikace s nimi probíhá skrze její rozhraní. Je velice důležité, aby toto rozhraní bylo neměnné, tzn.
každá nová verze komponenty musí obsahovat stejné rozhraní. Tato podmínka
zaručuje, že nové komponenty zapadnou bez problémů do stávajícího systému.
Zároveň je zachována kompatibilita mezi starými a novými komponentami.
Další důležitou vlastností komponent
je jejich jednotnost. Na komponentě nikdy není poznat v jakém, programovacím jazyce
byla vytvořena, právě tato vlastnost přináší nezávislost na programovacím jazyce.
Jestliže chceme vytvářet takové
komponenty, které spolu umějí komunikovat, musíme používat jednotnou technologii,
tato technologie se jmenuje COM - Component Object Model.

1.6. COM
Component Object Model je popis,
který říká jak mají komponenty vypadat a jakým způsobem spolu mají komunikovat.
Tento popis zveřejnila firma Microsoft zhruba před čtyřmi roky a vytvořila z něj
standard. Díky tomu je používání komponent nezávislé na jazyce, protože komponenta
je distribuována vždy přeložená v binárním tvaru, který odpovídá tomuto
standardu. COM též definuje jak má vypadat
rozhraní komponenty a jak se má používat.
Pozor, COM není počítačový jazyk, je to pouze návod jak
vytvářet tyto objekty tak, aby splňovaly podmínky standardu. Tato kniha bude popisovat
vytváření COM-ů pomocí jazyka C++ a prostředí Visual C++.
Operační systém Windows poskytuje
programátorům, kteří vyvíjejí COM objekty, celou řadu API funkcí, které tuto
práci zjednodušují. Jak se dozvíme později tyto funkce jsou velice jednoduché a
jejich implementaci může každý provést sám. Tato knihovna obsahuje kód, který
zajišťuje správné vytváření COM-ů a komunikaci mezi nimi. V knihovně je dál
implementována komunikace mezi distribuovanými COM-y (DCOM), což jsou objekty, které
spolu komunikují pomocí počítačové sítě. |