Komponentové programování v reálném nasazení

S vývojem architektury informačních systémů, od monolitické jednopočítačové architektury přes architekturu klient/s...


S vývojem architektury informačních systémů, od monolitické jednopočítačové
architektury přes architekturu klient/server až po distribuovanou architekturu,
jsou spojeny vývojové stupně metodologie programování. Ukažme si na skutečném
realizovaném projektu, jak lze provádět tříúrovňové distribuované zpracování v
intranetové síti s použitím komponentové implementace v COM+.
V rámci vývoje metodologie programování dochází k přechodu od procedurálního
programování, používajícího standardní datové typy a strukturované volání
procedur, přes objektové programování, založené na vlastnostech objektů, až ke
komponentovému programování, založenému na softwarové komponentové
infrastruktuře definující komponenty, rámce a objektové sběrnice.
Jednoúrovňová aplikační architektura vychází z jednotného prostředí, kde
aplikace je tvořena jedním monolitickým binárním programem, provozovaným na
jednom počítači. Dvouúrovňová architektura rozděluje zpracování aplikace mezi
pracovní stanici a server. Tato architektura se stala velmi populární s
příchodem lokálních počítačových sítí. Pojem víceúrovňová architektura znamená,
že aplikace je rozdělena do několika, zpravidla tří logických částí. V rámci
tříúrovňové architektury se nabízí možnost použít webovou architekturu nebo
architekturu typu klient/server. V následujícím textu popisovaný projekt byl
realizován v tuzemsku za účelem kontroly přepravních tržeb, který pro České
dráhy zabezpečil jeho odštěpný závod Datis.
Řeč bude nejen o použití komponentové implementace v COM+ na počítačích s
operačním systémem Windows 2000, ale na konci příspěvku se zmíníme rovněž o
tom, jak lze popsané řešení implementovat v rámci technologie .Net.

Výběr prostředí
Komponenty jsou v podstatě implementované objekty, které své metody nabízejí
přes standardizované rozhraní. Proto jsme se od samého počátku zaměřili na
objektový návrh a objektovou implementaci a nešli jsme cestou technologicky
překonaného procedurálního popisu a implementace.
Na začátku řešení projektu jsme stáli před rozhodnutím, kterou ze dvou
implementačních technologií použijeme, zda distribuované volání objektů DCOM
(COM+) založené na stavovém komunikačním protokolu RPC, nebo webovou
technologii s ASP, založenou na bezstavovém protokolu HTTP. Rozhodli jsme se
pro vzdálené volání objektů DCOM (COM+), a to z těchto důvodů:

Umožňuje snadný způsob implementace objektového návrhu.
Plně podporuje tříúrovňovou architekturu (volání objektů z pracovní stanice na
vzdáleném aplikační serveru).
Používá stavový komunikační protokol RPC.
Používá bezpečný binární formát datových zpráv pro přenos dat mezi pracovní
stanicí a aplikačním serverem.
Umožňuje bezpečný přístup klienta z pracovní stanice k objektům na aplikačním
serveru. Bezpečnost komunikace přes intranet je založená na bezpečnostních
mechanismech Windows 2000 a systému COM+ (řízení aktivace a přístupu ke
komponentám). Konfiguračním programem dcomcnfg.exe se na aplikačním serveru
nastaví, který vzdálený uživatel pracovní stanice může volat objekt a
přistupovat k objektu.
Je vhodný pro propojení pracovních stanic a serverů privátní intranetovou
datovou sítí (intranet ČD).
Lze použít vývojový nástroj MSVS 6.0 (VisualModeler pro analýzu a návrh
projektu, C++ 6.0 pro tvorbu komponent a VB 6.0 pro tvorbu klientské
prezentační vrstvy pracovních stanic).
Je možno použít komponent OLEDB pro přístup k databázi (MDAC 2.5 až 2.7).

Kroky návrhu
Při procesu návrhu a implementace projektu jsme provedli tyto kroky:
Popis systému objektovým case nástrojem VisualModeler.
Vygenerování hlavičkových souborů s popisy implementace metod a tříd s kostrami
metod navržených objektů.
Implementace objektů z vygenerovaných souborů .h a .cpp ve vývojovém prostředí
MSVC ++ 6.0 s použitím ATL do COM komponent ve tvaru .dll knihoven.
Vznikla skupina out-proces komponent (vzdálených serverových komponent
umístěných do COM+ aplikací) a skupina in-proces komponent (lokálních komponent
volaných na aplikačních serverech z jiných serverových komponent lokálně).

Komponentová implementace
Tříúrovňová implementace se tedy skládá z prezentační, aplikační a databázové
vrstvy (viz schéma na předcházející stránce). Prezentační vrstva na pracovní
stanici (tenký klient) obsahuje jen program KlientKPT5.exe (vytvořený ve VB
6.0), který přistupuje přes proxy (instalované MSI soubory, exportované
aplikace z COM+ na aplikačním serveru) na serverové komponenty na aplikačním
serveru.
Data z aplikačního serveru, nutná pro zobrazení na prezentační vrstvě, jsou
předávaná objektem Recordset, který má automatickou vazbu na zobrazovací
objekty ve VB. Aplikační vrstva je realizována zcela komponentovým způsobem.
Serverové objekty existují ve tvaru aplikací řízených COM+. Klient vytváří na
potřebnou dobu instanci stavového objektu na serveru. V rámci životního cyklu
jsou volány jeho metody bez následné deaktivace objektu (při návratu z metody).
Na aplikačním serveru je množina lokálních objektů, volaných ze serverových
objektů. Část objektů je navržena pro obsluhu databázové vrstvy, pro mapování
databázových tabulek a řádků do objektů (select, update, insert, delete, find,
volání uložených procedur).
Databázová vrstva pracuje na bázi serveru Oracle 9.2. Obsahuje tabulky, uložené
procedury, trigery a linky na jiné distribuované databáze. V rámci práce celého
systému se řádově z desítek pracovních stanic ze tří vzdálených lokalit
přistupuje současně na aplikační server prostřednictvím datové intranetové sítě
ČD. Podrobněji je to znázorněno na druhém ze schématů v tomto článku.

Přichází .Net
Popsané řešení distribuovaného zpracování bylo navrženo a realizováno v době,
kdy ještě nebyla k dispozici současná technologie .Net s novými prostředky,
zejména webovými službami. Přesto provoz aplikace ukázal správnost objektového
řešení včetně rychlosti komunikace po datové síti a odezvy z aplikačního
serveru a také z hlediska bezpečného přístupu z pracovních stanic na aplikační
server. Řešení je zajímavé tím, že je navrženo čistě objektově a implementováno
výhradně komponentově. Objektové pojetí systému je také vlastní technologii
.Net. Pro objektový návrh a implementaci v .Net lze postupovat takto:
Pro návrh a popis objektů použijeme Visio (volba Software " UML Model Design "
UML Static Structure " Class) včetně generování navržených objektů s popisy pro
implementaci.
Ve Visual Studio .Net, např. v C# je třeba:
Implementovat objekty do webových služeb.
Vytvořit webové aplikace s použitím ASP .Net a Web Forms, které budou volat
požadované webové služby a nabízet formuláře pro prezentační vrstvu.
Následně klient z pracovní stanice volá přes IE webové aplikace.
Autor je pracovníkem Českých drah s. o., Datové a informační služby.









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