使用 ASP.NET 创建的 XML Web services 支持的数据类型

本主题专门介绍一项旧有技术。现在应通过使用以下链接来创建 XML Web 服务和 XML Web 服务客户端: Windows Communication Foundation.

所有编程语言都会指定用于存储不同类型的数据的各种数据类型。各种编程语言中的简单或基元数据类型非常相似。但是,仍存在一些细微的差异,使得无法在两种语言之间直接映射。由于存在这些差异,很难创建可供任何客户端应用程序访问的 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 支持的类型。

类型 说明

基元类型(受限)

下面的基元类型会被转换为以字符串表示的名称/值对:BooleanCurrencyDateTimeDecimalDoubleInt16Int32Int64SingleStringUInt16Uint32UInt64

枚举类型

从客户端的角度而言,枚举类型成为具有用于每个值的静态常数字符串字段的类。

基元和枚举的数组

上述类型的数组。

使用 SOAP 协议时 Web 服务支持的数据类型直接与可以序列化为 XML 的数据类型相关。ASP.NET 使用 XmlSerializer 类序列化和反序列化 XML。有关 XmlSerializer 支持的类型的详细信息,请参见 XML 序列化简介

除了上表列出的基元类型外,使用 SOAP 协议的 Web 服务还支持下列附加数据类型。

类型 说明

类和结构,类和结构的数组

带有公共字段或属性的类和结构类型。公共属性和字段被序列化。类必须具有不接受任何参数的默认构造函数。

DataSetDataSet 的数组

ADO.NET DataSet 类型。Dataset 类型也可以显示为类或结构中的字段。

XmlNodeXmlNode 数组

XmlNode 是 XML 片段的内存中表示形式。XmlNodes 类型可以作为参数或返回值来传递,它们将添加到以符合 SOAP 的方式传递给 Web 服务的 XML 的其余部分中。这样,即使不同调用的结构有所变化,或者您不知道传递的所有类型,也可以传递或返回 XML。XmlNode 类型也可以显示为类或结构中的字段。

另请参见

概念

生成 XML Web services 客户端

其他资源

Introducing XML Serialization
.NET Framework Class Library
使用 ASP.NET 的 XML Web services