Software, který stojí na pomezí

Úvod do problematiky middlewaru V praxi se často setkáváme s pojmem middleware. Bohužel se ale ukazuje, že poměrně m


Úvod do problematiky middlewaru
V praxi se často setkáváme s pojmem middleware. Bohužel se ale ukazuje, že
poměrně málo lidí je schopno tento pojem správně chápat. Middleware se
vyskytuje téměř ve všech informačních systémech, poskytuje mnoho užitečných
služeb a může ušetřit velmi mnoho práce. Z tohoto důvodu je důležité, udělat si
o middlewaru ucelenou základní představu.
Middleware se pokusíme vymezit pomocí známého modelu třívrstvových aplikací,
který rozděluje veškerý kód aplikace na 3 části na uživatelské rozhraní, na
obchodní logiku a na systém řízení báze dat (SŘBD).
Uživatelské rozhraní je nejviditelnější částí aplikace. Obsahuje programový kód
pro zpracování vstupů od uživatele a prezentování a formátování výstupů. Obecně
lze říci, že zajišťuje činnosti, které by měly být výkonově nenáročné a pokud
možno nepodléhající častým změnám.
Obchodní logikou nazýváme veškerý kód aplikace, který zajišťuje zpracování
informací. V praxi to znamená, že do této skupiny patří veškeré výpočty,
kontrola informací, zajištění bezpečnosti a podobně. Činnosti, zajišťované
touto střední vrstvou, jsou obvykle středně až velmi náročné na výkon a mohou
podléhat častým změnám.
Systém řízení báze dat (SŘBD) zajišťuje fyzickou manipulaci s daty tedy zejména
jejich ukládání a vyhledávání. Tato vrstva je obvykle reprezentována některým z
databázových serverů, které jsou pro tuto náročnou činnost optimalizovány.
V mnoha detailech lze okolo 3vrstvového modelu vést spory. Například: Patří
validace vstupních dat (např. kontrola státní poznávací značky auta podle
jednoduché masky) do uživatelského rozhraní, nebo do obchodní logiky?
Pro účely tohoto článku nemá smysl se podobnými otázkami zabývat. Záleží totiž
na řešitelích jednotlivých projektů, kam se ve skutečnosti rozhodnou to či ono
zařadit.
Výhody 3vrstvové architektury
Pokud je aplikace skutečně rozdělena takto na 3 části, zjednodušuje se tím její
administrace a umožní se tím její použití v různých prostředích. Podle potřeby
je např. možné vyměňovat databázové servery. Ještě markantnějším příkladem ale
je používání různých uživatelských rozhraní podle toho, jaké jsou možnosti
jednotlivých koncových uživatelů.
Klienti, kteří se připojují v kanceláři, používají nativní uživatelské rozhraní
(v podobě binárního kódu pro danou platformu) s bohatými grafickými možnostmi.
Naopak cestující uživatelé, kteří se připojují po telefonní lince z nějakého
přenosného počítače, budou jako uživatelské rozhraní vidět webové formuláře.
Obě tyto skupiny uživatelů ale budou používat stejnou obchodní logiku. Pokud v
ní dojde k nějaké změně, budou tuto změnu moci používat obě skupiny uživatelů
bez nutnosti nějaké aktualizace na jejich počítačích.
V tomto schématu je middleware definován jako něco, co jednotlivé vrstvy
spojuje a zajišťuje jejich komunikaci mezi sebou. Podobně jako v případě datové
vrstvy je to něco, co se obvykle nevytváří při vývoji konkrétní aplikace, neboť
nevytváří žádnou činnost pro aplikaci charakteristickou jde jen o obslužný kód,
který umožňuje aplikaci činnost. Jako middleware je tedy obvykle použit nějaký
komerčně dostupný produkt.
Middleware bývá ale někdy mylně chápán jako "služba". Rozdílem mezi middlewarem
a službou je, že middleware se vkládá "mezi" součásti aplikace. Služba naopak
je něco, co je aplikací jednostranně využíváno. Middleware dále obvykle
realizuje "transparentnost nějakého procesu", služba nikoliv. Například
zálohování tedy není middleware zálohování je služba. Tyto kategorie jsou však
poměrně blízko a někdy je obtížné rozhodnout, co je služba a co je middleware.
Komponentový middleware
Komponentový middleware patří mezi nejpoužívanější druhy middlewaru. Typicky
zajišťuje komunikaci mezi uživatelským rozhraním a obchodní logikou ve výše
definovaném 3vrstvovém modelu.
Vrstva obchodní logiky je obvykle reprezentována řadou komponent, které
pokrývají funkcionalitu, potřebnou k zajištění obchodní logiky aplikace.
Komponentový middleware potom zajišťuje komunikaci mezi uživatelským rozhraním,
který tuto funkcionalitu vyvolává a přenáší data v obou směrech.
Je potřeba upozornit, že komponenta není pouze nositelem obchodní logiky a
potažmo část vrstvy s obchodní logikou. Komponenta je něco obecnějšího, co
zajišťuje zapouzdření jakékoliv funkcionality.
Příkladem produktů z oblasti komponentového middlewaru může být COM+ (dříve COM
a DCOM) od Microsoftu, VisiBroker od Inprise nebo Enterprise JavaBeans od firmy
Sun Microsystems.
Databázový middleware
Tvůrci informačních systémů mohou s databází komunikovat přímo, což se také
občas používá. Důvody, proč se mezi databázový server a obchodní logiku vkládá
nějaký middleware, jsou zejména dva. Tím prvním a důležitějším je, že každý
databázový server se ovládá jinak. Druhým důvodem je, že přímé ovládání
databáze bývá někdy poměrně obtížné, neboť se obvykle pracuje s nízkoúrovňovými
funkcemi.
Práce s databázemi prostřednictvím middlewaru umožňuje vytvořit aplikaci, která
je nezávislá na použití konkrétního databázového serveru je však víceméně
závislá na použitém middlewaru. To je výhodou při tvorbě menších aplikací, u
kterých nelze předpokládat, že by si kvůli jejich provozu zákazník kupoval
samostatný databázový stroj (např. aplikace pro skupinové plánování projektů).
Použití middlewareu také snadno umožní oddělit konfiguraci databázového
připojení od aplikace. To by bylo samozřejmě možné udělat i bez middlewaru, ale
znamenalo by to více práce při vývoji aplikace. Koncový zákazník tak získá
nejen volbu databázového serveru, ale bude mít možnost si spojení s databází
(síťový protokol, způsob přihlašování uživatelů, různé "timeouty" apod.)
konfigurovat podle potřeb svého provozního prostředí.
Ačkoliv tento middleware má poměrně široké uplatnění, ukazuje se, že opravdu
velké informační systémy (a aplikace) spíše inklinují k přímé komunikaci s
databází kvůli vyššímu výkonu a kvůli využití všech vlastností toho kterého
databázového serveru. A to i za cenu, že taková aplikace je obtížně
přenositelná na jiné databázové servery. Je ale možné, že s dalším rozvojem
databázového middlewaru se tato situace změní.
Jiné formy databázového middlewaru se také zabývají převodem nativních volání
jednoho databázového serveru na nativní volání jiného databázového serveru.
Tento typ midlewaru však spadá také do oblasti komunikačního middlewaru.
Příkladem produktů z oblasti databázového middlewaru může být ODBC a OLE DB od
Microsoftu, BDE společně s SQL Links od Inprise anebo JDBC od firmy Sun
Microsystems.
Middleware pro zasílání zpráv
Pro distribuované informační systémy, které pracují ve více lokalitách, které
jsou spojeny pomocí nespolehlivých komunikačních linek, je určen middleware pro
bezpečné zasílání zpráv. Ten zajišťuje přenos zprávy do cílového uzlu podle
zadaných kritérií. Těmito kritérii může být optimální vytížení různých
přenosových tras, minimalizace nákladů na doručení zprávy, případně
maximalizace rychlosti přenosu zprávy. Zprávám je také možné nastavovat různé
priority, které následně ovlivňují rychlost a způsob doručení.
Hlavní možnosti tohoto middlewaru se uplatní teprve v případě, kdy dojde k
rozpojení některých linek. V takovém případě hledá middleware jiný způsob
doručení zpráv v závislosti na jejich prioritě a nastavených parametrech
doručování. Pokud dojde k úplnému "odříznutí" nějaké lokality, jsou zasílané
zprávy ukládány do fronty, aby nedošlo k jejich ztrátě. Middleware se pokouší
zprávy nadále doručovat podle definovaných kritérií.
Uvedený middleware se uplatňuje u informačních systémů, jejichž část je
provozována na přenosných počítačích, které nejsou stále zapojeny do počítačové
sítě. Middleware zde uchovává zprávy, které bude třeba po připojení do
počítačové sítě zpracovat. Takovým příkladem může být objednávkový systém, jejž
používají prodejci, kteří objednávky vytvářejí v "terénu" u zákazníků.
Jednotlivé objednávky jsou při práci mimo kancelář ukládány do fronty a po
připojení k síti jsou automaticky přeneseny do centrální databáze ve firmě.
Příkladem produktu z oblasti služeb přenosu zpráv může být například Microsoft
Message Queue.
Transakční monitory
Další skupinou middlewaru jsou transakční monitory. Ty slouží částečně jako
rozšíření komponentového middlewaru. Transakční monitory obvykle poskytují
hostitelské prostředí pro komponenty s obchodní logikou a umožňují s nimi
provádět transakce.
Jako základní vlastnosti transakce jsou obvykle uváděny:
Atomicity Nedělitelnost transakce je patrně nejdůležitější a nejvíce viditelnou
vlastností. Transakce je nedělitelná buď je realizována celá, nebo není
realizována vůbec.
Consistency Cílový stav, do kterého bude systém transakcí převeden, bude
korektní.
Isolation Nepotvrzený výsledek transakce nesmí být viditelný pro ostatní
transakce.
Durability Potvrzený výsledek transakce musí být odolný vůči následným výpadkům
systému.
Zpracování transakcí a zajištění výše uvedených vlastností transakcí v
centralizovaných aplikacích je poměrně jednoduché. V distribuovaných
aplikacích, pracujících často s různými databázemi a obchodní logikou od více
vývojářů, je to poměrně obtížné.
Transakční monitor je middleware, který provádí veškerou "péči" o probíhající
transakce. Pokud nastane někde chyba, má programátor možnost zrušit celou
transakci.
Poměrně častou otázkou je, proč provádět transakce na úrovni vrstvy obchodní
logiky, když je možné transakce provádět na úrovni datové vrstvy. Odpověď je
jednoduchá transakční monitor, obsažený v databázovém serveru, umožňuje
zpracovat transakce pouze nad daným databázovým systémem. Pokud je potřeba
provést transakci nad více databázovými servery, je nutné použít samostatný
transakční server. Dalším důvodem je, že někdy potřebujeme provést transakci
pouze na úrovni komponent aniž by tato transakce nějak zasahovala do databází.
Transakční monitory zajišťují obvykle ještě další služby umožňují např. sdílet
připojení k databázím. Připojování k databázi je totiž typicky poměrně pomalé.
Na jednoho uživatele také často připadá i několik fyzických databázových
připojení, ale nejsou vždy potřeba všechna. Transakční monitor proto umožňuje
tato připojení k databázi sdílet mezi komponentami a případně i mezi uživateli
právě nevyužité spojení k databázi se použije jinou komponentou k jinému účelu.
Další obvyklou službou je zajištění bezpečnosti. Transakční server dokáže
identifikovat přihlášeného uživatele a případně zjistit, jaké role v dané
aplikaci uživatel zastává. Na základě těchto informací se může komponenta
rozhodnout, jak se bude k takovému uživateli chovat.
Příkladem produktů z oblasti z oblasti transakčních monitorů může být například
Microsoft Transaction Server, Oracle Application Server, Inprise Application
Server nebo Sybase Jaguar CTS.
Load balancing
Plánovací middleware slouží především pro vyrovnávání zátěže (Load Balancing)
na velkých clusterovaných systémech. Na cluster můžeme pohlížet jako na skupinu
nezávislých systémů, které se dohromady jeví jako systém jediný. Tyto systémy
(servery) jsou často nakonfigurovány tak, aby plnily tytéž služby.
Úkolem middlewaru je rozdělovat transakce mezi jednotlivé uzly v clusteru tak,
aby byl optimálně využit výkon všech uzlů. Problém je ale v tom, že každá
transakce se může skládat i z několika dílčích operací. Middleware se tedy musí
postarat o to, aby celá transakce byla prováděna stejným uzlem.
Rafinovanější implementace též umožňují pracovat s prioritami jednotlivých
uživatelů, s dedikacemi některých uzlů pro některý typ transakcí nebo skupinu
uživatelů, hlídat maximální vytížení některých uzlů apod.
Příkladem middlewaru pro "Load Balancing" může být Load Balancing Service od
Microsoftu.
Komunikační middleware
Komunikační middleware poskytuje široké spektrum různých služeb, které
zajišťují komunikaci v rozsáhlých distribuovaných a heterogenních systémech.
Do této skupiny patří typicky různé konvertory, které převádějí komunikaci mezi
různými platformami např. mezi platformou PC a různými mainframy (AS/400
apod.). Jednak může jít o konverzi fyzickou (konverzi různých síťových
protokolů), ale také může jít o sofistikovanější konverzi např. o konverzi
datových typů nebo kódování textů.
Příkladem komunikačního middlewaru může být Microsoft SNA server, Sybase
OmniConnect nebo různé produkty firmy Attachmate.
0 2240 / pen









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