所有编程语言都指定了各种数据类型来存储不同类型的数据。各种编程语言的简单数据类型(即基元数据类型)都非常相似。但是,也存在细微的差别,这些差别使语言间无法直接映射。这些差别为创建任何客户端应用程序都可以访问的 Web 服务提出了挑战。
为确保最广泛的影响范围,Web 服务支持基元数据类型分类,可以使用 XML 对这些数据类型进行编码和序列化。
下表显示了 Web 服务支持的基元数据类型(这些数据类型是 XML 架构定义 (XSD) 语言第二部分中概述的数据类型)以及 C++ 和公共语言运行库中的等效数据类型。
XML 架构定义语言 C++ 公共语言运行库
base64Binary Byte[]
boolean bool Boolean
byte char、__int8 SByte
double double Double
dateTime DateTime
decimal Decimal
float float Single
int int、long、__int32 Int32
long __int64 Int64
QName
XmlQualifiedName
short short、__int16 Int16
string BSTR String
time DateTime
unsignedByte unsigned __int8 Byte
unsignedInt unsigned __int32 UInt32
unsignedLong unsigned __int64 UInt64
unsignedShort unsigned __int16 UInt16
基元和枚举的数组
以上类型的数组
有关从公共语言运行库数据类型转换到其他语言(如 C# 和 Visual Basic .NET)数据类型的信息,请参见 .NET Framework 类库。
可用的数据类型取决于 Web 服务所使用的协议。例如,HTTP-GET 和 HTTP-POST 协议都限于名称/值对。但是,SOAP 允许更丰富地使用 XML,以对复杂数据结构(例如类)进行编码和序列化。
下表显示了 HTTP-GET 和 HTTP-POST 支持的类型。
类型 说明 基元类型(有限)
以下基元类型已转换为字符串表示形式的名称/值对:Boolean、Currency、DateTime、Decimal、Double、Int16、Int32、Int64、Single、String、UInt16、Uint32 和 UInt64。
枚举类型
从客户端的角度来看,枚举类型变为每个值都有一个静态常量字符串字段的类。
基元和枚举的数组
以上类型的数组。
当使用 SOAP 协议时,Web 服务支持的数据类型与可以序列化为 XML 的数据类型直接相关。ASP.NET 使用 XmlSerializer 类进行 XML 序列化和反序列化。有关 XmlSerializer 所支持类型的详细信息,请参见介绍 XML 序列化。
除上表中列出的基元类型外,使用 SOAP 协议的 Web 服务还支持下列附加的数据类型。
类型 说明 类和结构、类数组和结构
带有公共字段或属性的类和结构类型。公共属性和字段已序列化。类必须具有不接受任何参数的默认构造函数。
DataSet、DataSet 数组
ADO.NET DataSet 类型。数据集类型也可以以字段形式出现在类或结构中。
XmlNode、XmlNode 数组
XmlNode 是 XML 片断在内存中的表示形式。XmlNode 类型可作为参数或返回值传递,添加到 XML 中以符合 SOAP 的形式传递给 Web 服务的其余部分。这使您可以传递或返回 XML(即使其结构在不同的调用中发生更改,或您不知道传递的所有类型)。XmlNode 类型也可以以字段的形式出现在类或结构中。