COM: Komponenty na síti v akci

DEFINICE Pojem Component Object Model (COM) označuje architekturu, která umožňuje vývojářům vytvářet aplikace pomoc...


DEFINICE
Pojem Component Object Model (COM) označuje architekturu, která umožňuje
vývojářům vytvářet aplikace pomocí opětovně využitelných, binárních
softwarových komponent. Technologie COM, která je nezávislá na programovacím
jazyce, vznikla v 90. letech minulého století v dílně firmy Microsoft.
Ve světě vzájemně propojených sítí a webových služeb je výpočetní zátěž stále
častěji rozdělována mezi klienty a servery. Tito dva členové výpočetního
řetězce jsou od sebe čím dál tím vzdálenější, a to jak pokud jde o fyzickou
vzdálenost, tak i o funkčnost.
Výše uvedený fakt mimo jiné znamená, že je nezbytné, aby spolu počítače mohly
vzájemně komunikovat a bez problémů využívat jako své vstupy taková data, která
byla vytvořena odlišným a velmi vzdáleným počítačem. Nejde o nijak novou
situaci, ve skutečnosti se jedná o logické rozšíření způsobu, jímž jsou
aplikace vyvíjeny již po léta.
Ve snaze o větší interoperabilitu a efektivnost vytvořili vývojáři podrutiny a
volání procedur, objektově orientované programování a knihovny opětovně
využitelného kódu. Pokud to není zcela nevyhnutelné, pak se jsou aplikace jen
zřídkakdy vytvářeny od samotného základu. Namísto toho využívají stávající
hardwarové infrastruktury, nástrojů i softwaru a rovněž dříve vytvořených
softwarových komponent. Tím se ušetří čas i náklady na vývoj a implementaci.
I když tyto postupy lze nazývat mnoha různými názvy, v tomto článku je
označujeme jako principy modulárního softwaru. Za šířeji definovanou formu
modulárního softwaru je možné považovat i webové služby.
Jelikož operační systém Windows dominuje desktopům a jeho výrobce se snaží
tento monopol rozšířit i do světa serverů, jen stěží někoho překvapí, že
Microsoft již léta nabízí vlastní sadu produktů a standardů týkajících se
modulárního softwaru. Mezi nejstarší, a proto také nejpoužívanější a
nejznámější patří Component Object Model (COM) a jeho sítí znalý potomek
Distributed COM neboli DCOM.

Binární povaha COM
Skutečná hodnota modulárního softwaru pro vývojáře spočívá v tom, že mohou
využívat binárních modulů, nikoliv knihoven zdrojových kódů, jak tomu bývalo u
většiny vývojových prostředí.
COM definuje rozhraní aplikačních programů (API), které umožňuje vzájemnou
interakci různých komponent. Dokud jsou tyto komponenty využívány v binární
struktuře specifické pro Microsoft, je možné je vytvářet v různých jazycích,
aniž by to mělo po zkompilování negativní vliv na jejich interoperabilitu. COM
umožnil vývoj aplikačních služeb využívajících složených dokumentů, vlastních
ovládacích prvků, meziaplikačních skriptů, datových přenosů a dalších druhů
softwarových interakcí.

Vývoj
Historie modulárního softwaru Microsoftu je poměrně složitá. Tento výrobce má
totiž tendenci přístup a strukturu vždy po několika letech měnit, technologie
přejmenovávat a uvádět pod jinou značkou. Nabízíme vám zde tedy alespoň stručný
přehled vývoje modulárního softwaru.
Začneme u technologie složených dokumentů zvané OLE (Object Linking and
Embedding), která byla postavena na DDE (Dynamic Data Exchange) a ovládacích
prvcích VBX (Visual Basic Extension) z Visual Basicu 1.0. (Nadměrné množství
zkratek je bohužel nezbytným vedlejším produktem tématu tohoto článku.)
V roce 1992 Microsoft představil Windows 3.1 a technologie OLE se dostala na
každý desktop. O rok později následovalo OLE 2 a v roce 1994 byly uvedeny
řídící prvky OCX, které měly nahradit VBX. V té době Microsoft tvrdil, že OLE
je název, který bude používán pro všechny jeho modulární technologie.
Nicméně zanedlouho firma Microsoft přejmenovala některé části OLE, které se
vztahovaly k internetu, na ActiveX, a pod tento pseudonym byly postupně
zahrnuty veškeré modulární technologie. OLE poté zaujalo opět svou roli
technologie složených dokumentů, využívanou zejména v Microsoft Office.
Technologie COM byla poprvé implementována v operačním systému Windows 95.
Spolu s tím, jak rostl význam sítí a síťových aplikací, oznámil Microsoft v
roce 1996 DCOM jakožto svou vlastní alternativu k architektuře CORBA (Common
Object Request Broker Architecture). DCOM se poprvé objevuje ve Windows NT 4.0
spolu s nástroji, které pomáhají vytvářet aplikace typu klient/server,
zahrnující jak firemní sítě, tak internet. V září 1997 Microsoft opět mění
název celého modulárního rámce prostě na COM.

Lepší COM
O pár let později Microsoft představil Windows 2000 a COM přejmenoval na COM+,
čímž se zjevně rozhodl dát najevo podstatné změny. Hlavní přitažlivost COM+
spočívala v tom, že jej bylo možné využívat pro komponentové farmy řízené
pomocí Microsoft Transaction Serveru. Správně navrženou komponentu bylo možné
opětovně využít pomocí nových volání její inicializační rutiny, a to aniž by ji
bylo nutné vyjmout z paměti. Komponenty bylo možné volat rovněž z jiného
počítače, což dříve umožňovala pouze technologie DCOM, a tak došlo k tomu, že
Microsoft z větší části DCOM jakožto nezávislou koncepci odepsal.
Ale ani technologie COM+ dlouho nevydržela. Brzy poté Microsoft spustil
iniciativu .Net, podle mnohých analytiků ukvapený (a často také mlhavý) rámec,
který technologii COM v zásadě zcela nahradil. Existuje omezená zpětná
kompatibilita .Net umí využívat COM objekty pomocí takzvaného "wrapperu", ale
Microsoft dal jasně najevo, že u nových systémů .Net bude technologie COM zcela
nahrazena.
Součástí návrhu systému .Net je inteligentní klientský aplikační software a
operační systémy, chytrá zařízení, webové služby (které lze kombinovat s
dalšími webovými službami nebo využívat přímo pomocí inteligentních klientských
aplikací), serverová infrastruktura a vývojové prostředí (Visual Studio .Net),
jež přímo podporují celou řadu vývojových jazyků pomocí .Net Common Language
Runtime.

Nedávné změny
Přes to, že COM a DCOM měly být nahrazeny pomocí .Net, stále se jim vede dobře,
a to i u Microsoftu. Service Pack 2 pro Windows XP například přináší dvě
výrazné změny DCOM. Zavádějí se globální omezení, týkající se celého počítače,
která poskytují další úroveň kontroly přístupu oproti seznamu přístupových práv
pokaždé, když dojde k aktivaci, volání nebo spuštění COM serveru.
SP2 také přináší podrobnější nastavení práv týkajících se COM, takže
administrátoři mají k dispozici větší flexibilitu při nastavování příslušných
politik. V zásadě lze konstatovat, že SP2 přinesl architektuře COM především
vyšší bezpečnost.

Základy COM objekty, rozhraní a GUID
COM funguje díky využívání zapouzdřených objektů, definovaných rozhraní a
unikátních identifikátorů jednotlivých objektů. COM objekty jsou natolik dobře
zapouzdřeny, že nelze získat přístup k jejich interním prvkům, a dokonce ani
zjistit, jaké datové struktury daný objekt využívá. Jedná se o prototyp černé
skříňky.
Nicméně naše aplikace potřebují s těmito černými skříňkami komunikovat, a činí
tak prostřednictvím rozhraní. Jedná se o jakýsi zásuvný konektor a jedině s
jeho pomocí lze s daným objektem komunikovat.
Lze si to představit jako komunikaci s počítačem pomocí klávesnice. Rozhraní
definuje množinu funkcí, které můžete volat, a co je stejně důležité definuje,
co ten který objekt dělá (nikoliv však jak to dělá), pokud dojde k volání
zmíněných funkcí. Rozhraní definuje chování objektu a umožňuje daný objekt
měnit nebo vytvářet objekty nové, které implementují totéž rozhraní. Ve
skutečnosti může objekt implementovat dané rozhraní libovolným způsobem, pokud
dodržuje stanovená pravidla. Pokud v COM zveřejníte nějaké rozhraní
(prostřednictvím dodání určité komponenty), toto rozhraní nelze nikdy změnit.
Nelze do něj přidávat nové části nebo je naopak upravovat či odebírat, protože
jiné komponenty jsou závislé na původní definici tohoto rozhraní. Pokud
definice změníte, přestane další software fungovat.
Je-li nutné něco přidat nebo pokud se vaše požadavky změní, pak jediným řešením
je definice nového objektu a/nebo nového rozhraní k danému objektu, jimž
přiřadíte nový a jedinečný název. Pro běžné účely lze zvolit libovolný název,
nicméně oficiální názvy jsou speciálním způsobem definované a unikátní. Jsou
vytvářeny pomocí matematického algoritmu, který kombinuje síťovou adresu, čas
(v krocích po 100 ns) a čítač a vytváří 128bitové číslo, které představuje
unikátní identifikátor. (Je 128 bitů dost? Pomocí 128 bitů lze označit každou
nanosekundu života vesmíru od velkého třesku a stále vám 39 bitů zbude).
Open Source Foundation, která je tvůrcem zmíněného algoritmu, toto číslo nazývá
univerzálně unikátním identifikátorem (Universally Unique IDentifier, UUID).
Microsoft využívá tentýž algoritmus ve svém standardu pro pojmenování COM, ale
podle své tradice zvolil odlišný název globálně unikátní identifikátor
(Globally Unique IDentifier, GUID). GUID identifikátory jsou obvykle psány v
hexadecimálním tvaru (na použité velikosti písmen zde nezáleží), takže GUID
může vypadat například takto: "50709330-F93A-11D0-BCE4-204C4F4F5020". I když
GUID obsahuje čtyři různá pole a píše se v pěti vzájemně oddělených částech,
vždy je využíván jako celek.

Klient, který musí komunikovat s komponentou jiného procesu, nemůže tuto
komponentu volat přímo. Namísto toho musí využít určitou formu meziprocesové
komunikace, kterou umožňuje operační systém. COM tento proces umožňuje pomocí
zachycování volání klienta a jejich přesměrování na danou komponentu. Když se
klient a komponenta nacházejí na odlišných počítačích, DCOM pomocí síťového
protokolu jednoduše nahradí lokální meziprocesovou komunikaci. COM poskytuje
objektově orientované služby klientům a komponentám a využívá DCE (Distributed
Computing Environment) RPC (Remote Procedure Call, vzdálené volání procedur) a
bezpečnostních mechanismů k vytváření standardních síťových paketů, které jsou
v souladu s DCOM.









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.