Artikel - Detailansicht

Icon Aktuelles WDDX in ColdFusion - Intern

Im Einführungsartikel zu WDDX wurde bereits gezeigt wie mit Hilfe von WDDX-Packets komplexe Datenstrukturen übertragen werden können, ohne genauer auf den Aufbau dieser Datenpakete einzugehen. Das soll hier nachgeholt werden.

Dazu erzeugen wir zuerst mal ein WDDX-Packet und sehen uns einfach die Struktur an. Der folgende schon erläuterte Code erzeugt zuerst eine Datenstruktur und dann daraus ein WDDX-Packet. Das Packet wird dann ausgegeben:

  


<!----struktur erzeugen-------->
<cfset Auto=StructNew()>
<cfset Auto.Typ=
"bmw neu">
<cfset Auto.Fenster=
"sauber">
<cfset Auto.Raeder=VAL(4)>

<!----Packet erzeugen/serializieren-------->
<cfwddx action="CFML2WDDX" input="#Auto#" output="WddxAuto">

<cfoutput>
  <!---Packet ausgeben----->   
  #HTMLEditFormat (WddxAuto)#
</cfoutput>



Nach dem CFWDDX-Tag geben wir das erzeugte WDDX-Packet aus. Mit der Funktion HTMLEditFormat() werden alle Zeichen HTML-konvertiert ausgegeben, so das man die Original-Struktur sehen kann. Das Ergebnis sieht dann so aus:

  


<wddxPacket version='0.9'>
  <header></header>
  <data>
    <struct>
      <var name='FENSTER'><string>sauber</string></var>
      <var name='TYP'><string>bmw neu</string></var>
      <var name='RAEDER'><number>4</number></var>
    </struct>
  </data>
</wddxPacket>



Was man hier zu sehen bekommt, ist eine HTML-artige Datenstruktur (genaugenommen ist es XML), die vom Aufbau und Funktion einem Programmierer recht vertraut vorkommen wird. Ein WDDX-Packet besteht also aus lauter Tag-Paaren, die jeweils die Struktur der Daten und den Typ beschreiben. Dabei sind Zeilenumbrüche und Leerzeichen ausserhalb von Tags nicht von Bedeutung, man kann also auch das ganze Packet in eine Zeile schreiben.
Das ganze Packet ist in ein WDDXPacket-Tag eingeschlossen. Danach folgt ein HEADER-Tagpaar, das aber in Version 0.9 noch keine Bedeutung hat. Dann folgen die eigentlichen Daten in ein DATA-Tagpaar eingeschlossen. Innerhalb der DATA-Tags wird mit Hilfe von speziellen Tags die Struktur und Typ der konvertierten Daten dargestellt. Die Coldfusion-Variablen fenster und typ werden als Typ=String codiert, während die Variable raeder als Typ=number codiert wird. Jetzt wird bestimmt klar werden, warum die Variable Auto.Raeder in ColdFusion mit VAL(4) gefüllt wurde anstatt direkt mit 4. Durch die Funktion VAL() weis ColdFusion, dass es die Variable als Zahlenwert betrachten und serializieren soll und nicht als String (default). Würde man das WDDX-Packet wieder in ColdFusion deserializen, würde es in diesem Fall aber keine Rolle spielen, da ColdFusion die Variablen sowieso entsprechend dem Kontext wandelt. Würde man aber das Packet einer Applikation übermitteln wollen, die typisierte Variablen hat (z. B. Delphi, C++), sollte man auf sowas schon achten.

Nutzt man in ColdFusion die Möglichkeiten von WDDX, muss man sich aber mit dem Aufbau eines WDDX-Packets und dessen Tags zum Glück überhaupt nicht beschäftigen, denn das alles bleibt für den CF-Programmierer weitgehend transparent. Man erzeugt sein Packet und wandelt es zurück in eine Variable, das ist in den meisten Fällen eigentlich alles. Und genau das macht WDDX in ColdFusion so angenehm und einfach.

Serializieren
ist das Umwandeln eines Datenobjektes in ein WDDX-Packet. Dies wird in ColdFsuion mit dem CFWDDX-Tag durchgeführt.

Deserialisieren
ist das Umwandeln eines WDDX-Packet in ein Datenobjekt von ColdFusion. Dies Wird ebenfalls mit dem CFWDDX-Tag durchgeführt.

Links zum Thema:



Steffen Goldfuss steffen@goldfuss.de - 16.11.1999

Zurück


Das deutsche ColdFusion-Forum cfml.de ist das Portal für Einsteiger und Experten zum Thema ColdFusion und der ColdFusion Markup Language (CFML).

© 2017 Webdesign & Hosting: CHC ONLINE Kassel | SOLVA Content-Management-System CMS
Urlaub-Angebote.de - Urlaub mit Bestpreis-Garantie buchen