使用 ASP.NET 建立的 XML Web Service 所支援的資料型別
所有的程式語言都指定各種資料型別,來儲存各式各樣的資料。程式語言採用的簡單或基本資料型別其實很類似,但是還是稍有不同,使得語言間不能直接對應。所以,在建立讓任何用戶端應用程式都可以存取的 XML Web Service 時,這些差異就形成挑戰。
為了確保有最大的涵蓋面,XML Web Service 支援的各種基本資料型別能使用 XML 編碼及序列化。
下列資料表顯示 XML Web Service 支援的基本資料型別,也是 XML 結構描述定義 (XSD) 語言第二部分所列的資料型別,並加上 C++ 內對等的資料型別和 Common Language Runtime。
XML 結構描述定義語言 | 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 __int64 | |
UnsignedInt | unsigned __int64 | UInt32 |
UnsignedLong | unsigned __int64 | UInt64 |
UnsignedShort | unsigned __int64 | UInt16 |
基本型別和列舉型別的陣列 | 上述型別的陣列 |
如需將資料型別從 Common Language Runtime 轉換為其他語言如 C# 及 Visual Basic .NET,請參閱 .NET Framework 類別庫。
您可用的資料型別視 XML Web Service 使用的通訊協定而定。例如,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 Web Service 所支援的資料型別直接關聯至可序列化成 XML 的資料型別。ASP.NET 使用 XmlSerializer 類別將 XML 序列化及還原序列化。如需 XmlSerializer 支援型別的詳細資訊,請參閱 XML 序列化簡介。
除了上表所列出的基本型別外,使用 SOAP 通訊協定的 XML Web Service 還支援下列其他的資料型別。
型別 | 說明 |
---|---|
類別和結構、 類別和結構的陣列 |
類別和結構型別,具有公用的欄位或屬性。公用屬性和欄位經序列化。類別必須有不接受任何參數的預設建構函式。 |
DataSet、 DataSet 的陣列 |
ADO.NET DataSet 類兒。Dataset 型別也可以顯示為類別或結構中的欄位。 |
XmlNode、 XmlNode 的陣列 |
XmlNode 是 XML 片段的 In-Memory 表示。XmlNodes 型別可以作為參數或傳回值來傳遞,而且會以符合 SOAP 形式加入至傳遞到 XML Web Service 的 XML 其餘部份。這樣即使它的結構因為各個呼叫而變更,或是您不知道要傳遞的所有型別,您也可以傳遞或傳回 XML。XmlNode 型別也可以顯示為類別或結構中的欄位。 |
請參閱
XML 序列化簡介 | .NET Framework 類別庫 | 使用 ASP.NET 建置 XML Web Service | 建置 XML Web Service 用戶端