Webové služby propojují Javu a .Net

Provozování smíšených aplikací složených z komponent založených na různých platformách, typicky J2EE a .Net můž...


Provozování smíšených aplikací složených z komponent založených na různých
platformách, typicky J2EE a .Net může mnohým podnikům přinést nejednu výhodu.
Za preferovaný prostředek pro zajištění komunikace javových a .Net aplikací
jsou dnes pokládány především web services. Při využití standardu SOAP coby
základního komunikačního protokolu webových služeb se nicméně mohou vyskytnout
i komplikace.
Požadavky na interoperabilitu mezi různými operačními systémy i paradigmaty
programování mívaly v minulosti zpravidla za následek nutnost pořízení
proprietárního gateway systému. Nástup SOAP tedy poprvé vedl ke společně
použitelné komunikační vrstvě, jež umožnila vývoj distribuovaných aplikací
skládajících se z .Net i J2EE komponent. Obzvláště společnost Microsoft
zdůrazňovala při představení platformy .Net výhody, které s otevřením tohoto
programátorského světa přicházejí v podobě webových služeb.

Proč smíšené aplikace?
V popředí stojí pochopitelně otázka, jež se týká smysluplnosti integrace .Net a
J2EE komponent, neboť každý z obou programovacích frameworků dává k dispozici
vlastní efektivní mechanismy pro realizaci komunikace mezi počítači.
Na straně J2EE představují RMI a CORBA možnost volby hned mezi dvěma
technologiemi, přičemž v případě druhé jmenované jsou specifikovány také služby
pro zajištění perzistence, transakcí a událostí (Persistence, Transaction a
Event Services). V případě .Net je k dispozici flexibilní, efektivní a široce
konfigurovatelný Remoting Framework. Tyto komunikační prostředky jsou
přizpůsobeny dosavadnímu programovacímu paradigmatu a optimalizovány pro vysoký
výkon i stabilitu.
Proč tedy vyvíjet smíšené aplikace, jež využívají komunikačních mechanismů,
které pocházejí ze dvou zcela odlišných světů? Možné oblasti nasazení pro
taková kombinovaná řešení představují třeba takové systémy, které se na
desktopu neobejdou bez vizuálně příjemného a funkčně komplexního plnohodnotného
klienta (tj. aplikace typu rich client), založeného na de facto monopolní
platformě Microsoftu. Často musejí být aplikace navíc přizpůsobeny pro svou
integraci s komponentami balíku MS Office pod Windows a současně přitom nabízet
služby pro webové aplikace. V oblasti webových aplikací je totiž k dispozici
velké množství vývojových prostředí i nástrojů pro nasazení, které jsou
založeny na bázi J2EE aplikačních serverů či různých frameworků (jako například
Struts, Turbine, IBM Portal Server, SAP Enterprise Portal). Ty splňují nejvyšší
požadavky na dostupnost, výkon a možnosti údržby. Stále zde hrají roli i obavy
ohledně bezpečnosti Internet Information Serveru využívaného na platformě
Windows, jež jsou ještě stále silným argumentem pro vývoj webových aplikací
založených na J2EE.

Webové služby v praxi
S nejnovějšími verzemi současných SOAP knihoven a nástrojů je zajištěna vysoká
míra interoperability webových služeb vytvořených pomocí odpovídajících
nástrojů. V případě .Net je podpora návrhu web services kompletně integrována
ve vývojovém prostředí Microsoftu Visual Studio .Net. Na straně Javy nabízí
open source knihovna Apache Axis 1.2 nástroje pro vývoj i nasazení aplikací,
jakož i runtime prostředí.
Avšak interoperabilita mezi komponentami běžícími na různých platformách je
dosud omezena jen na použití webových služeb pracujících s primitivními
datovými typy. Jako komplexní datové typy lze mezi .Net a javovými službami
vyměňovat standardně pouze pole. Jakmile je však třeba použít uživatelsky
definované kombinované datové typy, musí vývojář sám naprogramovat serializer a
deserializer pro tyto instance objektů.
Další problém spočívá v korektním použití příslušného XML writeru pro
generování SOAP zpráv, jakož i v konfiguraci vhodného XML parseru pro analýzu
přijatých zpráv. XmlTextWriter v .Net Frameworku opatřuje XML data kódovaná v
transformačních formátech Unicode UTF-8 a UTF-16 standardně značkou BOM (Byte
Order Mark, popisuje pořadí bajtů a formát kódování), která bude srozumitelná
pouze pro některé javové XML parsery. To platí i pro XML parser Crimson
zahrnutý v JDK (Java Development Kit) 1.4.
I přes rozsáhlé možnosti interoperability, které jsou k dispozici v
současnosti, oba systémy zatím nenabízejí dostatečnou podporu pro realizaci
aplikací, jež by se přibližovaly dosavadní praxi vývoje. Stále chybí na
protokolu SOAP postavená architektura pro služby, jaké nabízejí například
Common Object Services v rámci specifikace CORBA. Aktuální standard SOAP se
může, co se týká jeho funkcionality, srovnávat s TCP. Tento protokol je sice
nezbytný pro komunikaci mezi počítači, avšak běžný vývojář dnes sotva ještě
programuje na této úrovni. Namísto toho se používají komplexnější komponenty na
bázi TCP zpráv, které jsou integrovány do e-mailových programů, HTTP služeb a
bezpečnostních systémů.
Pro efektivní použití webových služeb chybí podpora session managementu,
transakčních služeb (pro napojení komponent založených na webových službách na
podnikové aplikace) a stejně tak standardizované možnosti pro použití
objektových referencí prostřednictvím komunikačního kanálu SOAP.

Přerušená komunikace
Obě zmiňované platformy sice nabízejí prostředky, aby bylo možné odpovídající
služby vyššího řádu realizovat, ovšem musí být zajištěno, že takové funkce
nepovedou k omezení interoperability. Problém session managementu může být
vyřešen relativně jednoduše prostřednictvím tvorby a správy cookies na straně
serveru, nicméně pomocí odpovídající implementace odběratelů založených na
platformě .Net je třeba vyloučit, že budou na klientské straně cookies
uchovávány.
I přes uvedená omezení webové služby už dnes představují dobrou možnost, jak
budovat mosty mezi uvedenými dvěma odlišnými světy. Aby však interakce
fungovala spolehlivě a efektivně, je vhodné pamatovat na mezivrstvu zajišťující
komunikaci komponent. Ta by měla poskytnout nezbytné základní služby, jako
například správu sessions a transakcí metodou specifickou pro danou aplikaci.
Tímto způsobem dovoluje mezivrstva integraci komponent založených na standardu
SOAP do libovolných podnikových aplikací. Přerušení vazby přímé komunikace
komponent přináší také možnost implementace systému pro caching, který se může
promítnout v lepší propustnosti dat při čtecích přístupech.
Taková mezivrstva v podobě gatewaye pro SOAP aplikace dovoluje například
využití serverových služeb založených na platformě .Net nejen v aplikacích typu
rich client, ale i ve webových aplikacích opírajících se o J2EE. Jedna nebo
více webových slu-žeb je poskytováno pro zajištění SOAP interoperability mezi
komponentami aplikací. Informace o nich jsou poskytovány v rámci celé sítě
prostřednictvím UDDI registrace a disponují přinejmenším společnou správou
sessions, bezpečnosti a eventuálně failoveru. Na straně J2EE je k dispozici
cache komponenta specializovaná na čtecí přístupy, která potřebná data přebírá
a dává je k dispozici webovým aplikacím.

To ještě stále chybí
Existující specifikace webových služeb už v současnosti nabízejí základní
mechanismy pro realizaci smíšených aplikací. Interoperabilita mezi platformami
Java a .Net s nejnovějšími verzemi odpovídajících knihoven i nástrojů
nepředstavuje žádný problém. Dosud nicméně schází definice i implementace
frameworku pro budování komplexních podnikových aplikací založených na
protokolu SOAP.
Odpovídající koncepty se však již nacházejí ve fázi příprav například v případě
společnosti IBM jde o projekt BPELWS (Business Process Execution Language for
Web-Services), u nějž se jedná o integraci a přesměrování obchodních transakcí
pomocí webových služeb.
V rámci Web Services Interoperability Organization (www.ws-i.org) navíc
spolupracují přední dodavatelé na poli webových služeb s cílem odstranit
nejdůležitější problémy, jež souvisejí s uplatněním tohoto typu aplikací.
Výsledkem jejich úsilí je Web Services Basic Profile 1.0, který specifikuje
základní požadavky na interoperabilitu pro webové služby, případy použití či
scénáře, a to včetně prostředků pro testování a příkladů aplikací.









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