The other common use of WDDX is expected to be sending complex, structured data seamlessly between different application server platforms. This will allow an application based on ColdFusion at one business to send a purchase order, for instance, to a supplier running a CGI-based system. The supplier could then extract information from the order and pass it to a shipping company running an application based on ASP. Unlike traditional client-server approaches (including distributed object systems) minimal to no prior knowledge of the source or target systems is required by any of the others.
Because producers and consumers of WDDX packets can be in geographically dispersed locations, using timezone information during the serialization and deserialization phases becomes critical for correct date-time processing.
All of Allaire's WDDX serializers (CFML, COM, and JS) have an attribute/property useTimezoneInfo
that specifies whether time zone information should be used in the serialization process. The default value is true.
In the CFML implementation, useTimezoneInfo
is a property of the CFWDDX Action=Cfml2WDDX tag. In the COM implementation, useTimezoneInfo
is a property of the IWDDXSerializer interface provided by the object WDDX.Serializer.1
. In the JS implementation useTimezoneInfo
(note the case-sensitivity of JS) is a property of the WDDXSerializer object.
Date-time values in WDDX are represented using a subset of the ISO8601 format. Timezone information is represented as an hour/minute offset from UTC, e.g., "1998-9-8T12:6:26-4:0".
During WDDX deserialization to CFML and COM time zone information is automatically taken into account and all date-time values are converted to local time. In this way, UTC is taken out of the picture entirely and developers do not need to worry about the details of time zone conversions.
However, during deserialization to JavaScript expressions, time zone information is not taken into account. Complications arise because of the difficulty of knowing the timezone of the browser. We will address this issue in an upcoming release.