Jump to content

WDDX: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
m Reverted edits by 69.74.245.228 (talk) to last version by VVVBot
m Adoption: fixed typo
 
(41 intermediate revisions by 33 users not shown)
Line 1: Line 1:
{{More footnotes|date=September 2009}}
'''WDDX''' (Web Distributed Data eXchange) is a programming-language, platform and transport-neutral data interchange mechanism to pass data between different environments and different computers. It supports simple data types such as number, string, boolean, etc., and complex aggregates of these in forms such as structures, arrays and recordsets (row/column data, typically coming from database queries). There are WDDX interfaces for a wide variety of languages. [[ColdFusion|ColdFusion]], [[Ruby (programming language)|Ruby]], [[Python (programming language)|Python]], [[PHP]], [[Java (programming language)|Java]], [[C++]], [[Microsoft .NET|.NET]], [[Actionscript|Actionscript]], [[Lisp programming language|lisp]], [[Haskell (programming language)|Haskell]], [[Perl]] and various platforms support it very well.


'''WDDX''' (Web Distributed Data eXchange) is a [[programming language]]-, platform- and [[transport protocol|transport]]-neutral data interchange mechanism designed to pass data between different environments and different computers.
The data is encoded into [[XML]] using an XML 1.0 [[Document Type Definition|DTD]], producing a platform-independent but relatively bulky representation. The XML-encoded data can then be sent to another computer using [[HTTP]], [[File Transfer Protocol|FTP]], or other transmission mechanism. The receiving computer must have WDDX-aware software to translate the encoded data into the receiver's native data representation. WDDX can also be used to [[serialization|serialize data structures]] to storage (file system or database). Many applications use WDDX to pass complex data to browsers where it can be manipulated with [[JavaScript]], creating essentially a form of [[Ajax (programming)|Ajax]].


==History==
WDDX was created by Simeon Simeonov from [[JJ Allaire|Allaire Corporation]] in 1998,<ref name="sim">{{cite web
WDDX was created by Simeon Simeonov of [[Allaire Corporation]] in 1998,<ref name="sim">{{cite web | last = Simeonov
| last = Simeonov
| first = Simeon | title = WDDX: Distributed Data for the Web | url= https://www.infoloom.com/media/gcaconfs/WEB/chicago98/simeonov.HTM
| first = Simeon
| accessdate = 2007-02-05 }}</ref> initially for the [[ColdFusion]] server environment.
| title = WDDX: Distributed Data for the Web
WDDX was open-sourced later that year.<ref name=itoi>{{Cite news|last=Itoi |first=Nikki Goth |title=Syndicating the Web: Businesses are hoping that the ICE protocol will reduce the Web's content-sharing hassles |work=Red Herring |date=February 1999 |url=http://redherring.com/mag/issue63/news-syndication.html |url-status=dead |archiveurl=https://web.archive.org/web/19991013102610/http://redherring.com/mag/issue63/news-syndication.html |archivedate=October 13, 1999 }}</ref>
| url= http://www.infoloom.com/gcaconfs/WEB/chicago98/simeonov.HTM
| accessdate = 2007-02-05 }}</ref> initially for the [[ColdFusion]] server environment. WDDX was open-sourced later that year.{{Fact|date=February 2007}}


==Usage==
WDDX and [[XML-RPC]], both created in 1998, were the precursors to [[SOAP]] and [[Web services]]. SOAP borrows the envelope/header/body structure and the transport + interaction neutrality from WDDX and the HTTP and [[RPC]] bindings from XML-RPC.{{Fact|date=February 2007}}
WDDX is functionally comparable to [[XML-RPC]] and [[WIDL (Internet Standard)|WIDL]].<ref>{{Cite news|last=Udell |first=Jon |title=Exploring XML-RPC: DCOM? CORBA? RMI? Why Not Just XML-RPC? |work=Byte |accessdate=2015-11-17 |date=1999-06-07 |url=http://www.byte.com/features/1999/06/0607XML_RPC5.html |url-status=dead |archiveurl=https://web.archive.org/web/20000304171225/http://www.byte.com/features/1999/06/0607XML_RPC5.html |archivedate=March 4, 2000 }}</ref> The specification supports simple data types such as number, [[string (computing)|string]], [[boolean data type|boolean]], etc., and complex aggregates of these in forms such as [[record (computer science)|structures]], [[array data type|arrays]] and recordsets (row/column data, typically coming from database queries).


The data is encoded into [[XML]] using an XML 1.0 [[Document Type Definition|DTD]], producing a platform-independent but relatively bulky representation.<ref>{{Cite web|url=http://xml.coverpages.org/allaireWP-cfm.html|title = WDDX White Paper by Jeremy Allaire}}</ref> The XML-encoded data can then be sent to another computer using [[HTTP]], [[File Transfer Protocol|FTP]], or other transmission mechanism. The receiving computer must have WDDX-aware software to translate the encoded data into the receiver's native data representation. WDDX can also be used to [[serialization|serialize data structures]] to storage (file system or database). Many applications use WDDX to pass complex data to browsers where it can be manipulated with [[JavaScript]], as an alternative to [[JSON]].
Example: (from [http://www.php.net/wddx php.net/wddx])

<source lang="xml">
Example from [[php.net]]:<ref>{{Cite web|url=https://www.php.net/wddx|title=PHP: WDDX - Manual|website=www.php.net}}</ref>
<syntaxhighlight lang="xml">
<wddxPacket version='1.0'>
<wddxPacket version='1.0'>
<header comment='PHP'/>
<header comment='PHP'/>
Line 31: Line 33:
</data>
</data>
</wddxPacket>
</wddxPacket>
</syntaxhighlight>
</source>


==Adoption==
WDDX is mainly used by [[ColdFusion]] and, as February 2022, still supported by Adobe.

Outside ColdFusion, libraries exist to read or write this format, [[Ruby (programming language)|Ruby]],<ref>http://www.juretta.com/log/2007/01/31/rails_wddx_request/ Using WDDX with Ruby on Rails]</ref> [[Python (programming language)|Python]],<ref>[https://pypi.python.org/pypi/wddx Using WDDX with Python]</ref> [[PHP]], [[Java (programming language)|Java]], [[C++]], [[Microsoft .NET|.NET]],<ref>[https://github.com/Bilal-S/WDDX.net .NET platform WDDX project]</ref> [[Actionscript]],<ref>[http://blog.bigsource.de/index.php/2007/11/01/as3-wddx-class/ Using WDDX with Flex and AS3]</ref> [[Lisp programming language|lisp]], [[Haskell (programming language)|Haskell]], [[Perl]].

PHP used to offer a comprehensive support for WDDX, which could be used as a format to store session information<ref>Andrew Stopford, ''PHP Programming for Windows'', Landmark, New Riders, 2002.</ref> until the version 7.4. It has been removed since from the base language, but still available through PECL.<ref>{{Cite web|url=https://www.php.net/manual/en/migration74.removed-extensions.php|title = PHP: Removed Extensions - Manual}}</ref> The rationale was a lack of standardization of the format, and new formats like JSON more mainstream.<ref>{{Cite web|url=https://wiki.php.net/rfc/deprecate-and-remove-ext-wddx|title=PHP: RFC:deprecate-and-remove-ext-WDDX}}</ref> A vulnerability was fixed in 2007.<ref>{{Cite web|url=https://cve.mitre.org/cgi-bin/cvename.cgi?name=2007-0908|title = Cve - Cve-2007-0908}}</ref>


==Notes==
==Notes==
Line 37: Line 47:


==External links==
==External links==
*[https://web.archive.org/web/20060719125042/http://www.infoloom.com/gcaconfs/WEB/chicago98/simeonov.HTM GCA98 WDDX Presentation]
*[http://www.openwddx.org/ OpenWDDX website]
*[http://www.infoloom.com/gcaconfs/WEB/chicago98/simeonov.HTM GCA98 WDDX Presentation]
*[https://web.archive.org/web/20060717205519/http://www.xml.com/pub/r/1266 Using WDDX with Flash]
*[http://xml.coverpages.org/wddx.html Cover Pages on WDDX]
*[http://www.webmonkey.com/webmonkey/99/15/index3a.html Exchanging Data with WDDX]
*[http://www.xml.com/pub/r/1266 Using WDDX with Flash]


[[Category:XML-based standards]]
[[Category:XML-based standards]]
Line 47: Line 54:
[[Category:Data serialization formats]]
[[Category:Data serialization formats]]



[[es:WDDX]]
{{Compu-lang-stub}}
[[ja:WDDX]]
[[pl:WDDX]]
[[ru:WDDX]]

Latest revision as of 04:02, 25 December 2024

WDDX (Web Distributed Data eXchange) is a programming language-, platform- and transport-neutral data interchange mechanism designed to pass data between different environments and different computers.

History

[edit]

WDDX was created by Simeon Simeonov of Allaire Corporation in 1998,[1] initially for the ColdFusion server environment. WDDX was open-sourced later that year.[2]

Usage

[edit]

WDDX is functionally comparable to XML-RPC and WIDL.[3] The specification supports simple data types such as number, string, boolean, etc., and complex aggregates of these in forms such as structures, arrays and recordsets (row/column data, typically coming from database queries).

The data is encoded into XML using an XML 1.0 DTD, producing a platform-independent but relatively bulky representation.[4] The XML-encoded data can then be sent to another computer using HTTP, FTP, or other transmission mechanism. The receiving computer must have WDDX-aware software to translate the encoded data into the receiver's native data representation. WDDX can also be used to serialize data structures to storage (file system or database). Many applications use WDDX to pass complex data to browsers where it can be manipulated with JavaScript, as an alternative to JSON.

Example from php.net:[5]

<wddxPacket version='1.0'>
  <header comment='PHP'/>
  <data>
    <struct>
      <var name='pi'>
        <number>3.1415926</number>
      </var>
      <var name='cities'>
        <array length='3'>
          <string>Austin</string>
          <string>Novato</string>
          <string>Seattle</string>
        </array>
      </var>
    </struct>
  </data>
</wddxPacket>


Adoption

[edit]

WDDX is mainly used by ColdFusion and, as February 2022, still supported by Adobe.

Outside ColdFusion, libraries exist to read or write this format, Ruby,[6] Python,[7] PHP, Java, C++, .NET,[8] Actionscript,[9] lisp, Haskell, Perl.

PHP used to offer a comprehensive support for WDDX, which could be used as a format to store session information[10] until the version 7.4. It has been removed since from the base language, but still available through PECL.[11] The rationale was a lack of standardization of the format, and new formats like JSON more mainstream.[12] A vulnerability was fixed in 2007.[13]

Notes

[edit]
  1. ^ Simeonov, Simeon. "WDDX: Distributed Data for the Web". Retrieved 2007-02-05.
  2. ^ Itoi, Nikki Goth (February 1999). "Syndicating the Web: Businesses are hoping that the ICE protocol will reduce the Web's content-sharing hassles". Red Herring. Archived from the original on October 13, 1999.
  3. ^ Udell, Jon (1999-06-07). "Exploring XML-RPC: DCOM? CORBA? RMI? Why Not Just XML-RPC?". Byte. Archived from the original on March 4, 2000. Retrieved 2015-11-17.
  4. ^ "WDDX White Paper by Jeremy Allaire".
  5. ^ "PHP: WDDX - Manual". www.php.net.
  6. ^ http://www.juretta.com/log/2007/01/31/rails_wddx_request/ Using WDDX with Ruby on Rails]
  7. ^ Using WDDX with Python
  8. ^ .NET platform WDDX project
  9. ^ Using WDDX with Flex and AS3
  10. ^ Andrew Stopford, PHP Programming for Windows, Landmark, New Riders, 2002.
  11. ^ "PHP: Removed Extensions - Manual".
  12. ^ "PHP: RFC:deprecate-and-remove-ext-WDDX".
  13. ^ "Cve - Cve-2007-0908".
[edit]