Onsdag 6/11 14.00
Paul Williams, IBM Hursley
Den sista och tredje sessionen med Paul Williams blev en av de
mest spektakulära på flera olika sätt! Han skulle äntligen
visa sina teorier i praktiken; Hur ser det ut när man kör MQSeries
Three Tier live. Målet var att demonstrera en applikation som de
utvecklat i Hursley-labbet och som var byggt på den Three-Tier-produkt
de har för OS/2. Dr Williams hade också svårt att skilja
på de två OH-apparaterna där den ena visade OH-bilder och den
andra visade skärmen. Den kraftigt vita presentationen från OH-bilderna
sänkte bildskärmen vilket gav muntra kommentarer då Williams
glömde att slå av den när han demade programmet! Williams
muttrade som svar att det nu bara var barnen och djuren som
saknades för att cirkusen skulle sluta i totalt kaos :-) Trots
detta lyckades William under en timme att visa hur IBM tänkt
när det gäller MQSeries som en motor i en three-tier-miljö, vilket
var mycket intressant.
Paul Williams började sessionen med att repetera en del om
'Cooperative Processing', 'Business Event Driven Computing' och
'Asynchronus Message Handling' och hur det kräver system för
att effektivt och enkelt implementera möjligheterna i sina applikationer. En
av lösningarna för att uppnå det här är då MQSeries Three
Tier. Det är ett system som
3T Business Application Structure
3T definierar tre typer av programklasser:
Ett program startas i GUI-miljön och tar hand om användarens
aktioner. När användaren begär information som inte finns i presentationslogiken
måste PL se till att anropa en modul i BL för att få fram
datat. Det programmet som körs på en server någonstans får
ett meddelande från 3T (via MQSeries) med information om vad som
ska göras. I det här läget gäller det nu för 3T att
bibehålla kopplingen mellan det program på användarens klient
som anropade BL-programmet så att det svar som skall skickas
tillbaka vet vart det ska. När BL-programmet kontaktat ett
DL-program för att hämta rådatat, och sen behandlat det till begärt
format, skickas det tillbaka som ett svar till programmet i
klienten. Kopplingen mellan dessa två sköts av 3T helt
transparent utan att de båda inblandade processerna behöver veta
något om den underliggande logiken för meddelandehantering. I GUI-programmet
tas det emot som ett event i GUI-miljön. Det är en normal message-loop
(som bla hanterar användarens mustryckningar) som också tar
hand om de business-events som kommer via 3T.
En funktion som finns inbyggd i 3T är att ha möjligheten att
cacha information i BL-lagret. Om GUI-programmet i exemplet ovan
vill ha mer information om samma data som det nyss begärt kan
det finnas cachat redan i BL-lagret så att ett nytt anrop på
mer detaljerad information inte behöver vandra hela vägen in i
DL-lagret. För 3T gäller det att hantera den här strukturen så
att det inte ligger gammal information och skräpar, men enligt Williams
var det här en enorm fördel.
Det behöver heller inte vara GUI-delen som aktiverar systemet.
Alla delar kan se till att starta affärshändelser via meddelanden
i 3T. Det innebär att en BL-del kan starta ett PL-program för
att få något att visas på skärmen. Det kan tex vara en koll
vid en begäran av kundinformation som BL (eller DL) ser att det
finns nya villkor eller erbjudanden som gäller den kund som
information begärts för. BL kan då se till att aktivera PL
för att presentera detta för användaren.
I ett system som bygger på 3T kan servrar skalas och data
flyttas utan att applikationerna i klienter, eller andra delar
som inte berörs, behöver känna till det. Williams uttryckte
det som att ingen ville ha folk i användarledet som ska behöva
känna till vad DB2 eller MVS eller CICS eller SNA betyder. Alla
delar som har med datasystemets uppbyggnad och infrastruktur ska
vara transparent för front-end-användare.
I en 3T-miljö finns det möjligheter att prenumerera på
händelser. Likt en OO-miljö kan en process prenumerera på händelser
från en annan process.
Det finns mer problem att tänka på när man går över till 3T.
De beskrivs mer i de papper jag fick på sessionen.
How 3T applications run
Det finns en mängd hjälpmedel och verktyg för att
åstadkomma en smidig 3T-miljö, men de gick inte Williams igenom
utan lämnade det för vidare efterforskningar. Det står lite om det
i dokumentationen, men det finns mer att hämta.
MQSeries Three Tier PL-klienter finns för Windows och OS/2, och
BL-servers i OS/2 eller AIX. Som DL-server kan vilken
MQSeries-plattform som helst fungera. Det beror på hur IBM
utvecklar MQ3T vidare om det ska bli stöd för fler operativsystem.
Det känns lite som att det är på lab-stadiet ännu, och de har
ju idéer om att MQSeries ska kunna ligga till grund i Corba
eller andra ORBer, Och vad blir Asynkron-DSOM?
Demonstration
Som demonstration hade Williams ett system som de utvecklat i
Hursley. Det var ett litet banksystem som hanterade kunder. Han
körde det i sin Thinkpad och han beklagade att det inte fanns
möjligheter att köra fullskaligt med dataservrar och BL-servrar,
men det visade i alla fall på att det var möjligt att skala upp
datakraften vid behov, och möjligheten att köra på en maskin
är ovärdelig vid testbruk vid utveckling.
Williams startade demonstrationen med att starta en 'Job Viewer'.
Genom den kunde han styra alla fönster som hängde ihop med en
körning på ett enkelt sätt. Genom den startade han en
applikation som frågade efter en kund. När Williams valt kund sammanställde PL-programmet
data om kunden i fönstret genom att först anropa en BL-modul
för att sammanställa informationen. Anropet skedde via 3T-API
medans svaret anlände som ett message in i message-loopen i
GUIt. Samtidigt som informationen anlände och visades på skärmen
poppade upp ett annat fönster på sidan om. Det fönstret visade information
om något nytt lån eller så, som var möjligt att ansöka för
just den här kunden. Det var således en händelse som triggats
från BL-delen för att få PL att presentera det.
När Williams beordrade programmet att ta fram en mer detaljerad
lista på de olika lån som kunden hade i banken anropades BL
igen. Den här gången behövde dock inte BL gå ut till DL för
att hämta datat utan det fanns cachat i 'systemet' och kunde därför
serveras PL snabbare än om DL hade behövt blandas in. Det här
syntes ju inte i demon, men beskrevs på OH-bilderna som Williams
hade så svårt att synkronisera med demoskärmen.
Genom att kapa linan för en DL-modul kunde Williams simulera
problemet med att meddelanden inte kommer fram inom en rimlig
tid. Det hanterades av 3T så att PL-programmet inte blev
höngande. Det som hände var att ingen information kom tillbaka för
att fylla fönstret. Efter en stund informerades GUI-programmet
att meddelandet var försenat men att det skulle behandlas så
fort som det fick kontakt med DL/BL. När linan sedan slogs på
rasslade det till och fönstret i PL-programmet fylldes med data
och applikationen kunde fortsätta.
Williams körde inte så mycket mer, så egentligen syntes det
inte så mycket av infrastrukturen och hur egentligen 3T hanterade
de olika problemen med meddelanden och hur den sk. 'name-resolution'
mekanismen fungerar för att få 3T att kunna skicka meddelandet
till rätt applikation på rätt server och sedan få tillbaka
det rätt. Det syntes dock att dfungerade i bakgrunden, och för
att se mer får man nog ta och testa det hela.
Summary
Williams summerade genom att dra de fördelar som 'Cooperative
Processing' ger, samt hur kraven tillgodoses genom MQSeries Three
Tier. Han drog också hur en hel organisation drar fördelar av
'Commercial Messaging' osv. Samma grunder som tidigare.
Helt klart är three tier något att begrunda vid val av
datastruktur, men när man tittar in i vad det innebär är det
inga revolutionerande idéer eller teorier som ligger bakom. Asynkron körning
av program genom meddelanden, som Williams gärna pratade om under
de tre sessionerna, är i och för sig ett intressant perspektiv,
och genom MQSeries är det enkelt att komma igång utan större
problem, vilket gör att jag säker kommer att prova och se vad
det kan ge. Kanske det resulterar i ett eget middle-ware innan
det är klart?
Som en sista slutkläm hänvisade Williams till en undersökning
från Gartner Group som gick ut på att det var viktigt att se över
hur implementeringen av Three-Tier går till, för i vissa fall kan
det vara dyrare än att köra two-tier!