使用 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 支持的类型。
类型 | 说明 |
---|---|
基元类型(受限) |
下面的基元类型会被转换为以字符串表示的名称/值对: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 类型。Dataset 类型也可以显示为类或结构中的字段。 |
XmlNode,XmlNode 数组 |
XmlNode 是 XML 片段的内存中表示形式。XmlNodes 类型可以作为参数或返回值来传递,它们将添加到以符合 SOAP 的方式传递给 Web 服务的 XML 的其余部分中。这样,即使不同调用的结构有所变化,或者您不知道传递的所有类型,也可以传递或返回 XML。XmlNode 类型也可以显示为类或结构中的字段。 |
另请参见
概念
其他资源
Introducing XML Serialization
.NET Framework Class Library
使用 ASP.NET 的 XML Web services