 |
Flash Remoting is de laatste en meest actuele toevoeging aan Flash
en Macromedia's Studio 2004.
Met het verschijnen van Flash MX, Flash MX 2004 (september 2003) en ColdFusion
MX zorgt Flash Remoting voor een conceptuele doorbraak in bestaande client/server
webapplicaties. |
| |
|
Anders dan de gehanteerde standaard in webapplicaties
zorgt Remoting voor een technologie waarmee u webapplicaties kunt ontwikkelen
die - qua verwerkingssnelheid - sterker lijken op desktop applicaties dan de 'klik-en-wacht' HTML pagina's tot nu toe…
(In 'Leer je zelf Professioneel Macromedia
ColdFusion MX' hebben we een apart hoofdstuk gewijd aan
de integratie tussen ColdFusion MX en Flash Remoting. Tegelijk worden
daarin twee Flash voorbeelden gegeven, waarmee u direct met Remoting
aan de slag kunt...
Hier alvast een eerste 'verkenning'...)
Wat is Flash Remoting?
Flash Remoting MX maakt op een gerafineerde manier gegevensuitwisseling
mogelijk tussen server en client, zonder de snelheidsbeperking en handmatige
serialisatie/deserialisatie die kenmerkend was (en nog steeds is) in XML,
Active-X en de oudere versies van Flash.
In een 'traditionele' HTML applicatie is een typische gebruikerservaring
de 'klik-en-wacht' procedure. Het zal u bekend voor komen:
- U komt op een site. U wilt iets opzoeken en voert in een zoekveld
een zoekwoord in. U klikt op de 'Submit' knop om de zoekactie te starten.
- U wacht op een respons van de server… tot het resultaat van de zoekopdracht
door uw browser is verwerkt ('gerenderd') en op uw scherm verschijnt.
- Wilt u de zoekopdracht verfijnen of bestaat het resultaat uit meerdere
pagina's dan geeft u een verfijning van de zoekopdracht - of klikt op
een link voor de vervolgpagina.
- U wacht opnieuw…... tot de pagina - compleet met lay-out en images
- in uw browser is ingeladen en gerenderd.
Deze procedure is op dit moment de gehanteerde (en hoe traag het ook
gaat: geaccepteerde) standaard binnen client/server webapplicaties (zie
figuur 1).
In tegenstelling tot het 'klik-en-wacht' proces is Flash Remoting gebaseerd
op één enkele interface, die één keer ingeladen wordt voor
de applicatie. Uitwisseling van gegevens heeft enkel nog betrekking op
uitwisseling van data en niet meer op GUI-elementen (zie figuur 2).

Figuur 1 'Blok' met GUI, lay-out, HTML en gegevens
wordt 'over de volle breedte'
steeds opnieuw teruggestuurd naar de aanvragende browser

Figuur 2 Flash Remoting:
Uitsluitend data (gegevens) - en dan ook nog gecomprimeerd tot 'smalle
breedte' (AMF) -
wordt uitgewisseld. GUI en lay-out op de Client wordt hergebruikt.
Daarmee komt werkelijke Client/Server communicatie via Internet binnen
handbereik. En verdwijnt de 'klik-en-wacht' HTML. Flash MX dient als 'front-end'
voor uw webapplicatie. De enige uitwisseling die nog tussen Client en
Server plaats vindt, heeft betrekking op de subset van gegevens.
Geeft u een zoekopdracht in een Flash applicatie die gebruik maakt van
Remoting, dan wordt dit verzoek gecomprimeerd in een ActionScriptpakket
(ActionScript Message Format - AMF), naar de server gestuurd, verwerkt,
als AMF weer teruggestuurd en in de Flash applicatie verwerkt.
Weg ook met het (gecachede) her-renderen en opnieuw opbouwen van het beeldscherm.
Bovendien is het mogelijk met Flash MX gegevens op de achtergrond te laden,
zodat het direct beschikbaar is wanneer u dit nodig heeft.
Waaruit bestaat Flash Remoting?
Flash Remoting bestaat uit een gebruikersinterface - applicatie GUI -
gebouwd in Flash, waarin via ActionScript contact gelegd wordt met een
applicatieserver. Flash Remoting software, geïnstalleerd op de applicatieserver,
wekt als 'gateway' en interface tussen enerzijds de Flash Player - waarin
uw applicatie draait - en anderzijds de server, die commando's van de
gebruiker uitvoert. Flash Remoting kunt u dus min of meer beschouwen als toegangspoort tot de applicatieserver die verzoeken vanuit uw Flash
applicaties vertaalt naar instructies die de server kan interpreteren.
Om met Flash Remoting te beginnen heeft u de Flash Remoting Components nodig. ColdFusion MX 6.1 beschikt standaard over deze functionaliteit,
net zoals JRun. En wanneer u gebruik maakt van andere webservers: Remoting
is er voor ASP.Net (IIS), J2EE servers, PHP(Apache)
en Perl. Daarmee kunnen Flash Remoting applicaties ontwikkeld worden
op zowel ColdFusion, ASP.Net, J2EE als PHP platforms, samen met de databases
die deze ondersteunen: Microsoft SQL, Oracle, DB2, Access, PostgreSQL en MySQL.
Flash Remoting Components kunt u downloaden vanaf http://www.macromedia.com/software/flashremoting/downloads/components/
Hoe werkt Flash Remoting?
De Remoting gateway, geïnstalleerd op uw applicatieserver (CFMX 6.1 beschikt
al standaard over deze service) dient als interface tussen de Flash Player
en de applicatieserver.
Remoting gateway heeft 3 hoofdtaken:
- afhandelen van verzoeken van de Flash Player
- vertalen van verzoeken en data (vanuit AMF) naar serverside commando's
- vertalen van serverresponses terug naar AMF
De communicatie tussen de Flash Player en Flash Remoting gateway verloopt
via HTTP. Die communicatie wordt normaal gesproken steeds aan clientside
geïnitieerd vanuit de Flash Player - i.c. aan de hand van de opdrachten
die de gebruiker, via de GUI, aan de Flash Player doorgeeft.
Omdat HTTP een statusloos protocol is, onderhoud de Flash Remoting gateway
automatisch de status van verzoeken door middel van cookies en headers.
Op deze manier ontstaat een 'virtuele', 'vaste' verbinding tussen server
en client.
Omdat uitwisseling gebaseerd is op HTTP-protocol werkt Flash Remoting
ook met encrypted code zoals HTTPS en SSL.
Uitwisseling van gegevens
De uitwisseling van gegevens, tussen client en server, vindt plaats in
AMF-formaat.
AMF (ActionScript Message Format) is een binair formaat, ontwikkeld door
Macromedia, om een lichtgewicht, efficiënt medium in handen te krijgen
waarmee gegevens snel versleuteld, getransporteerd en weer ontsleutelt
kunnen worden.
Om met Flash Remoting te werken is het niet noodzakelijk AMF te 'kennen'.
Versleuteling gebeurt grotendeels op de achtergrond van de Flash applicatie
en de applicatieserver, zonder dat u daar als programmeur enige kennis
voor hoeft te bezitten. Praktisch wordt dit AMF-pakketje vanuit de Flash
applicatie verzonden met het al-oude POST commando.
Waarom AMF en niet XML of SOAP?
Een terechte vraag omdat SOAP juist speciaal ontwikkeld is om als
'lichtgewicht' protocol te dienen. Bovendien werkt SOAP met HTTP en HTTPS!
Dat Macromedia toch voor een eigen formaat gekozen heeft ligt aan het
feit dat SOAP in wezen geïmplementeerd wordt als XML - en daarom nogal
wollig en omvangrijk is in vergelijking met het binaire AMF formaat. Zelfs
als SOAP-berichten gecomprimeerd worden, zijn deze nog steeds omvangrijker
dan AMF-bestanden!
En waarom geen XML?
Omdat XML veronderstelt dat u een aparte codelaag schrijft, waarin
verzoeken of data ge(de)serialiseerd kunnen worden. Een codelaag voor zowel aan de client- als aan de server-zijde van
uw applicatie.
AMF daarentegen vraagt geen (extra!) handmatige (de)serialisatie en maakt
mogelijk dat data zonder tussenliggende lagen tussen server en
Flash verzonden en verwerkt worden.
Session Management
Omdat HTTP een statusloos protocol is en elk verzoek aan de server beschouwd
wordt als afkomstig van een 'nieuwe' gebruiker, hebben webprogrammeurs
nogal eens de handen vol aan het creëren en vasthouden van sessies om
gegevensoverdracht te personaliseren. Session management is, naast webprogrammeren,
in dit opzicht vaak een kunst apart omdat er geen standaard oplossingen
voor handen zijn.
Session management wordt bij Flash Remoting echter min of meer onzichtbaar
voor de programmeur afgehandeld. Sessie-informatie wordt met ieder AMF-pakket
verzonden, zonder dat u als programmeur handmatige code voor sessionmanagement
hoeft te schrijven.
Hoe ziet een Flash Remoting applicatie er dan uit?
In het algemeen volgen Flash applicaties een n-tiered architectuur:
De Flash Player vormt daarbij aan clientside de presentatielaag:
de gebruikersinterface met knoppen, buttons etc., zoals u die kent uit
andere 'desktop' applicaties.
De Flash Remoting gateway, die bovenop de applicatieserver
loopt, vormt de middel(verwerkings)laag.
De Applicatieserver tenslotte vormt de datalaag: de toegang
tot databases (SQL Server, DB2, MySQL, Oracle etc.), XML bestanden, kommagescheiden
bestanden etc.).
De uitwisseling gebeurt via AMF.
Is Flash Remoting moeilijk?
Flash is traditioneel een omgeving voor webontwerpers met functionaliteit
voor tekenen, programmeren, animatie, geluid, images en video. Voor Flash
Remoting is met name kennis van ActionScript nodig (hoewel Flash MX aanzienlijk
minder 'hersengymnastiek' vraagt dan de vroegere versies van Flash (Flash
4/5)).
Flash Remoting is niet complex, maar het helpt wanneer u uw weg
in Flash al kent. Bent u bekend met andere ontwikkelomgevingen (Delphi,
Visual Basic), dan zal Flash vertrouwd overkomen. Flash MX heeft dezelfde
'Form-gebaseerde' visuele 'klik-en-sleep' benadering als Delphi/Visual
Basic en bevat (herbruikbare) standaard componenten (a la Delphi) die
u zonder enige programmeerkennis direct in uw Flash applicatie kunt inzetten.
Bent u onbekend met ActionScript: het maakt gebruik van dezelfde programmeerconcepten
- lusjes, variabelen en if-else statements - die u ook in CFML tegenkomt.
Verandert ActionScript inhoudelijk, wanneer u gebruik maakt van een
andere applicatieserver?
Nee. Flash ActionScript is grotendeels onafhankelijk van de serverarchitectuur
waarop het draait: of dit nu ColdFusion Server, ASP.Net/IIS, J2EE, JRun
of PHP/Apache is.
Nieuwsgierig geworden naar Flash Remoting?
In 'Leer je zelf Professioneel Macromedia ColdFusion
MX' is een apart hoofdstuk gewijd aan de integratie tussen ColdFusion
MX en Flash Remoting. Tegelijk worden daarin twee voorbeelden meegegeven
waarmee u direct met Flash Remoting aan de slag kunt...
Voor het overige is op dit moment alleen nog engelstalig referentiemateriaal
beschikbaar. Een overzicht daarvan treft u hier.
|