Data Types Supported by XML Web Services Created Using ASP.NET

All programming languages specify various data types in which to store different kinds of data. The simple, or primitive, data types are fairly similar across programming languages. However, there are subtle differences that prevent direct mapping between languages. These differences present a challenge to creating an XML Web service that is accessible to any client application.

To ensure the broadest reach, XML Web services support an assortment of primitive data types that can be encoded and serialized using XML.

The following table shows the primitive data types supported by XML Web services, which are the data types outlined in the second part of the XML Schema definition (XSD) language, along with the equivalent data types in C++ and the common language runtime.

XML Schema definition language C++ Common language runtime
Boolean bool Boolean
Byte char, __int8    
Double double Double
Datatype struct    
Decimal     Decimal
Enumeration enum Enum
Float float Single
Int int, long, __int32 Int32
Long __int64 Int64
Qname     XmlQualifiedName
Short short, __int16 Int16
String BSTR String
TimeInstant     DateTime
UnsignedByte unsigned __int8    
UnsignedInt unsigned __int32 UInt32
UnsignedLong unsigned __int64 UInt64
UnsignedShort unsigned __int16 UInt16
Arrays of primitives and enums Arrays of the above types

For information on converting from common language runtime data types to data types in other languages, such as C# and Visual Basic .NET, see .NET Framework Class Library.

The available data types depend on the protocol that the XML Web service uses. For example, HTTP-GET and HTTP-POST protocols are both limited to name/value pairs. However, SOAP allows for a richer use of XML to encode and serialize complex data structures such as classes.

The following table shows the supported types for HTTP-GET and HTTP-POST.

Type Description
Primitive types (limited) The following primitive types are converted into name/value pairs represented as strings: Boolean, Currency, DateTime, Decimal, Double, Int16, Int32, Int64, Single, String, UInt16, Uint32, and UInt64.
Enum types From the client's perspective, enumeration types become classes with a static constant string field for each value.
Arrays of primitives, enums Arrays of the above.

The data types supported by XML Web services when the SOAP protocol is used are directly correlated with the data types that can be serialized into XML. ASP.NET serializes and deserializes XML using the XmlSerializer class. For details on the types that are supported by XmlSerializer, see Introducing XML Serialization.

In addition to the primitive types listed in the preceding table, XML Web services using the SOAP protocol support the following additional data types.

Type Description
Classes and structs,
Arrays of classes and structs
Class and struct types with public fields or properties. The public properties and fields are serialized. Classes must have a default constructor that does not accept any parameters.
DataSet,
Arrays of DataSet
ADO.NET DataSet types. Dataset types can also appear as fields in classes or structs.
XmlNode,
Arrays of XmlNode
XmlNode is an in-memory representation of an XML fragment. XmlNodes types can be passed as parameters or return values, and they are added to the rest of the XML passed to the XML Web service in a SOAP-compliant manner. This enables you to pass or return XML even if its structure changes from call to call, or if you do not know all the types being passed. XmlNode types can also appear as fields in classes or structs.

See Also

Introducing XML Serialization | .NET Framework Class Library | Building XML Web Services Using ASP.NET | Building XML Web Service Clients