序列化
串行化是在 C 數據結構中寫入值的程式(結構、陣列和基本值),做為 XML 元素。 還原串行化是反向進程。
串行化是在 C 數據結構(結構、數位和基本值)中寫入值作為 XML 元素的程式。 還原串行化是反向進程。
這兩個進程都依賴 C 數據結構和 XML 之間的對應描述。
為了串行化值,應用程式會呼叫 WsWriteElement、WsWriteAttribute 或 WsWriteType。
若要還原串行化值,應用程式會呼叫 WsReadElement、WsReadAttribute 或 WsReadType。
安全
XML 讀取器 用於還原串行化程式。 請參閱 XML 讀取器中 XML 相關安全性資訊的安全性一節。
還原串行化程式會繼續還原串行化數據,直到它完成讀取正在還原串行化的項目為止。 還原串行化進程在遇到不符合還原串行化數據描述的任何 XML 檔時失敗。 此時使用的 XML 讀取器會變成無效,並傳回錯誤。
根據預設,還原串行化是嚴格的。 導致還原串行化失敗的某些條件,包括但不限於:
- 遺漏預期的元素
- 非預期的專案欄位會出現在必要元素之間
- 必要欄位之後的額外元素內容,除非 WS_STRUCT_IGNORE_TRAILING_ELEMENT_CONTENT
- 除非指定 WS_STRUCT_IGNORE_UNHANDLED_ATTRIBUTES 旗標,否則非預期的屬性
- 超出指定範圍的未預期數據類型值
- 重複專案的計數超出指定的範圍
串行化大量數據可能會導致過多的記憶體配置,並可能導致阻斷服務攻擊。 還原串行化數據的用戶必須指定堆積物件來配置數據,而且使用者可以使用堆積配置限制來防止記憶體配置攻擊。
數據類型的範圍支援,包括字串的長度上限、陣列中的元素計數上限等,可讓使用者控制不同數據類型的大小上限。 用戶可以指定數據描述或架構中的範圍,以限制不同數據的大小上限。
線格式支援包含內嵌零的字串值(text、binary、MTOM)。 以內嵌零還原串行化字串時,用戶應該使用計數位符串 (WS_STRING),因此零不會混淆字串長度的計算。 如果包含內嵌零的字串值還原串行化為預期以零終止字元串的欄位,則會傳回錯誤,且還原串行化失敗。 如果使用 wsutil 來產生數據描述,則應該使用 /string:WS_STRING 選項,如果預期具有內嵌零的字串。
下列回呼會與串行化搭配使用:
下列列舉會與串行化搭配使用:
下列函式會與串行化搭配使用:
下列結構會與串行化搭配使用:
- WS_ATTRIBUTE_DESCRIPTION
- WS_BOOL_DESCRIPTION
- WS_BYTES_DESCRIPTION
- WS_BYTE_ARRAY_DESCRIPTION
- WS_CHAR_ARRAY_DESCRIPTION
- WS_CUSTOM_TYPE_DESCRIPTION
- WS_DATETIME_DESCRIPTION
- WS_DECIMAL_DESCRIPTION
- WS_DEFAULT_VALUE
- WS_DOUBLE_DESCRIPTION
- WS_DURATION_DESCRIPTION
- WS_ELEMENT_DESCRIPTION
- WS_ENDPOINT_ADDRESS_DESCRIPTION
- WS_ENUM_DESCRIPTION
- WS_ENUM_VALUE
- WS_FAULT_DESCRIPTION
- WS_FIELD_DESCRIPTION
- WS_FLOAT_DESCRIPTION
- WS_GUID_DESCRIPTION
- WS_INT16_DESCRIPTION
- WS_INT32_DESCRIPTION
- WS_INT64_DESCRIPTION
- WS_INT8_DESCRIPTION
- WS_ITEM_RANGE
- WS_STRING_DESCRIPTION
- WS_STRUCT_DESCRIPTION
- WS_TIMESPAN_DESCRIPTION
- WS_UINT16_DESCRIPTION
- WS_UINT32_DESCRIPTION
- WS_UINT64_DESCRIPTION
- WS_UINT8_DESCRIPTION
- WS_UNION_DESCRIPTION
- WS_UNION_FIELD_DESCRIPTION
- WS_UNIQUE_ID_DESCRIPTION
- WS_UTF8_ARRAY_DESCRIPTION
- WS_VOID_DESCRIPTION
- WS_WSZ_DESCRIPTION
- WS_XML_QNAME_DESCRIPTION
- WS_XML_STRING_DESCRIPTION