Web Distributed Data Exchange / WDDX FAQ
What is WDDX?
WDDX is an XML-based technology that enables the exchange of complex data between Web programming languages. WDDX consists of a language-independent representation of data based on an XML 1.0 DTD, and a set of modules for a wide variety of languages that use WDDX. WDDX can be used with HTTP, SMTP, POP, FTP and other Internet protocols that support transferring textual data.
Who created WDDX?
Allaire created WDDX in order to solve key problems in exchanging data between Web applications.
Is WDDX a standard, W3C or otherwise?
WDDX is not a formal standard, and it has not been submitted to the W3C or any other standards body. However, WDDX will be freely available for use and redistribution, and is based on open, standards-based technologies such as XML 1.0, a W3C standard.
How does WDDX work?
All of the standard programming environments on the Web (ColdFusion, Perl, ASP, Java, etc) include native data structures such as arrays, recordsets or value pairs. WDDX provides a component for each language that will automatically serialize or translate the native data structures into an abstract representation in XML, or deserialize WDDX XML into a native data structure. For example, you could use WDDX to take a complex array in ColdFusion, serialize it into XML, send it to an ASP server, and then deserialize from XML into a VBScript array object with all the types natively converted.
How will WDDX benefit Web developers?
WDDX solves critical problems in exchanging data between
different Web application environments, such as JavaScript,
ColdFusion, Perl, ASP/COM and Java.With WDDX,
multiple applications can easily share complex data across
language environments, systems and platforms. As a result,
developers can now more easily build systems that exchange
information between browsers and servers or between different
application servers.
Developers building distributed applications, where data and
services may reside on remote servers, even potentially on
different corporate Intranets and Extranets, will benefit from
being able to access these services without regard for the
language environment they are created with.
Also, developers building applications which heavily use client-side JavaScript for browser-based applications, or Visual Basic for desktop applications and user interface will benefit significantly, as WDDX allows these client-side languages to do databinding with Web application servers which support WDDX. This offloads processing to the client, improving an application's performance and the end-user experience.
What kinds of applications can be built using WDDX?
Any application that requires sharing data with other applications over the Web can potentially benefit from WDDX. This would include business-to-business Internet and Extranet applications, where companies are exposing data, such as product or supply-chain data, customer data, order data, and so on. Because WDDX is language-independent and HTTP-friendly, a company could build an application with ColdFusion or ASP, and expose the application data to remote applications using WDDX. These remote applications could access the data using Perl, ColdFusion, ASP or any other language that supports WDDX. This eliminates the overhead and complexity of trying to share data where different partners use different language environments.
Applications that bridge traditional Windows desktops with Web applications are also a good target for WDDX. Often, companies need applications running on Windows desktops, created with Visual Basic, C++, Delphi, PowerBuilder or other such tools to interface with the same data and services running on Web application servers. With WDDX, developers can connect their Windows client applications to Web application servers using HTTP, leveraging the same server-side code as is deployed for their Intranet and Internet applications. This could be useful for applications that involve significant, offline data input and collection, where a stand-alone Windows or Java application might be more suitable than a connected Web application. The above examples would use the WDDX through a COM interface.
Does WDDX require developers to know how to use XML?
No, one of the major benefits of using WDDX is that programmers can exchange structured data over the Web without having to use the XML natively. WDDX is what some call "XML middleware", where programming languages use it as a transport for their own native data.
What languages support WDDX? Are others planned?
Currently, WDDX modules have been created for JavaScript 1.x, ColdFusion 4.0, COM, and Perl. Note that with the COM module WDDX can be used from within Visual Basic, Delphi, Java, PowerBuilder and C++. We expect that a native Java version will be done sometime this year. Allaire does not plan to implement modules for other languages, but an SDK will be available such that any developer will be able to build a module for any language platform that can support the core WDDX data types.
What data types are supported by WDDX? Are international data formats and standards supported?
WDDX supports the following
basic data types: boolean (true/false), number, date-time, and
string. Date-time values are encoded according to the full form
of ISO8601. Timezone information will be successfully parsed and
used to convert to a local date-time value.
WDDX also supports the following complex data types: arrays,
structures, and recordsets. Arrays are integer-indexed
collections of objects of arbitrary type. Structures are
string-indexed collections of objects of arbitrary type. In many
languages they are known as associative arrays.Recordsets are
tabulardata encapsulations: a set of named fields with the same
number of rows of data. Only simple data types can be stored in
recordsets.
How much does WDDX cost?
Nothing. WDDX will be a free technology from Allaire, with open distribution for major language environments.
Is there a WDDX SDK, can it be downloaded?
A WDDX 1.0 SDK will be available from Allaire in late 1998. The SDK will include source-code, modules, sample scripts and documentation for the following language environments: ColdFusion, JavaScript 1.1, COM/ASP, Perl and Java. In the mean time, ColdFusion 4.0 will include implementations for CFML, JavaScript and COM. Also, several articles and other information is available in the Allaire DevCenter at http://www.allaire.com/developer/.
Does WDDX require ColdFusion?
No, WDDX does not require ColdFusion. WDDX was invented by Allaire, and Allaire intends to continue to support and distribute its own implementations, but others are free to create their own implementations in conformance with the WDDX DTD and based on standard usage guidelines.
Is WDDX supported in any Web browser?
The primary way developers would use WDDX with browser-based applications is using the JavaScript 1.x implementation. WDDX supports any browser compatible with JavaScript 1.1, which includes Netscape 3.x/4.x and Internet Explorer 3.x/4.x.
How is data secured when using WDDX?
Since WDDX is built on the core Internet standards of XML and HTTP, it inherits the security models used in the native Web environment. WDDX packets can be transmitted securely over HTTP using SSL, and because WDDX packets are merely strings, developers can encode and decode the packet contents using any encryption function. Developers building distributed applications where remote access to WDDX-enabled data requires authoriztion, will need to use native Web server or application server authentication and security services for additional user-oriented security.
Can WDDX be used in non-Web, or Windows applications?
Absolutely. With the COM implementation of WDDX, developers can use WDDX for distributed data access or data storage using any popular Windows application development environment, including Visual Basic, Delphi, PowerBuilder, C++ and Java. With the Java implementation, developers can create stand-alone Java applications that use WDDX. We believe it will be most common that developers would use WDDX in desktop applications to access and use data that is simultaneously used within Web-native applications.
How does WDDX differ from standard XML data access?
Standard XML data access uses the Document Object Model (DOM) API to access and manipulate XML documents. In the DOM programming model, developers have full programmatic access to any XML document's structure. With WDDX, the developer does not natively manipulate XML content, but rather uses language specific modules to access data being exchanged from other languages. In many ways, DOM-based XML data access serves a different purpose than WDDX-based data exchange.
How does WDDX compare with XML-RPC mechanisms?
RPC stands for Remote Procedure Call, a mechanism used by distributed object systems such as DCOM and CORBA. XML-RPC mechanisms, such as DataChannel's WebBroker, are focused on providing a full distributed object protocol using XML and HTTP. Alternatively, WDDX is focused on providing a simple, light-weight data exchange mechanism for Web programming languages. XML-RPC mechanisms are much better suited to applications that require a full remote object programming model, especially with applications already created using DCOM or CORBA.
How does WDDX compare with ICE from Vignette?
ICE is a Vignette invented and sponsored technology for syndicating content over the Web. ICE is built with the specific application of sharing content, on a scheduled and trusted basis, with content trading partners. ICE is not suitable as a general-purpose, cross-language data exchange protocol, and WDDX, in and of itself, is not suitable as a syndication application. However, custom Web applications could use WDDX to expose shared data interfaces to other Web applications, creating affiliate and syndication networks. Allaire supports ICE, and is a member of the ICE Advisory Group.
How does WDDX compare with WIDL from WebMethods?
The Web Interface Definition Language (WIDL) is a technology from WebMethods. WIDL is an XML-based technology for describing a programmatic interface to existing static documents, such as HTML or XML documents. WIDL itself is not a technology for exchange data between programming languages. WDDX, on the other hand, is for the live exchange of data between programming languages, and not for the extraction of data from existing Web content.
Where can one learn more about WDDX?
A page on the Allaire DevCenter website has been created with additional background information, links to articles on WDDX, third-party sites, and the WDDX DTD.