Типы данных, поддерживаемые XML-веб-службами, созданными с помощью ASP.NET
Этот раздел посвящен технологии прежних версий. Веб-службы XML и клиенты веб-служб XML должны создаваться с использованием Windows Communication Foundation.
Во всех языках программирования задаются различные типы данных, в которых должны храниться данные разных типов. Простые типы данных, или типы-примитивы, в разных языках программирования довольно похожи. Однако существуют едва уловимые различия, препятствующие прямому сопоставлению в разных языках. Эти различия создают проблему при создании веб-службы, доступной любому клиентскому приложению.
Чтобы обеспечить наиболее широкую область действия, веб-службы поддерживают набор типов-примитивов, которые могут кодироваться и сериализоваться с помощью XML.
В представленной ниже таблице приведены поддерживаемые веб-службами типы-примитивы, представляющие собой типы данных, описанные во второй части языка определения схемы XML (XSD), а также эквивалентные типы данных на языке C++ и в среде CLR.
Язык определения схемы XML | C++ | Среда CLR |
---|---|---|
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 |
Массивы примитивов и перечислений |
Массивы указанных выше типов |
Сведения о преобразовании типов данных среды CLR в типы данных других языков, например C# и Visual Basic .NET, см. в разделе Библиотека классов .NET Framework.
Доступные типы данных зависят от протокола, используемого веб-службой. Например, протоколы HTTP-GET и HTTP-POST ограничены парами "имя-значение". Однако протокол SOAP поддерживает более широкие возможности использования XML для кодирования и сериализации сложных структур данных, например классов.
В следующей таблице представлены поддерживаемые типы для протоколов HTTP-GET и HTTP-POST.
Тип | Описание |
---|---|
Типы-примитивы (ограниченные) |
Следующие типы-примитивы преобразуются в пары "имя-значение", представляемые в виде строк: Boolean, Currency, DateTime, Decimal, Double, Int16, Int32, Int64, Single, String, UInt16, Uint32 и UInt64. |
Типы перечисления |
С точки зрения клиента, типы перечисления становятся классами со статическим полем константной строки для каждого значения. |
Массивы примитивов и перечислений |
Массивы указанных выше типов. |
Типы данных, поддерживаемые веб-службами при использовании протокола SOAP, непосредственно сопоставляются с типами данных, которые могут быть сериализованы в формат XML. ASP.NET сериализует и десериализует данные XML, используя класс XmlSerializer. Подробные сведения о типах, поддерживаемых классом XmlSerializer, см. в разделе Введение в XML-сериализацию.
Помимо типов-примитивов, перечисленных в приведенной выше таблице, веб-службы, использующие протокол SOAP, поддерживают следующие дополнительные типы данных.
Тип | Описание |
---|---|
Классы и структуры, массивы классов и структур |
Типы классов и структур с открытыми полями и свойствами. Открытые свойства и поля сериализуются. Классы должны иметь конструктор по умолчанию, который не принимает никаких параметров. |
DataSet, массивы типа DataSet |
Типы DataSet ADO.NET. Типы Dataset могут также отображаться в виде полей в классах или структурах. |
XmlNode, массивы типа XmlNode |
XmlNode — это представление фрагмента данных XML в памяти. Типы XmlNodes могут передаваться в качестве параметров или возвращаемых значений и добавляются в остальную часть данных XML, передаваемых в веб-службу по протоколу SOAP. Это позволяет передавать или возвращать данные XML даже в том случае, если их структура в разных вызовах изменяется или все передаваемые типы неизвестны. Типы XmlNode могут также отображаться в виде полей в классах или структурах. |
См. также
Основные понятия
Создание клиентов XML-веб-службы
Другие ресурсы
Introducing XML Serialization
.NET Framework Class Library
XML-веб-службы с использованием ASP.NET