Szerializációs
A szerializálás a C-adatstruktúrákban (szerkezetekben, tömbökben és primitív értékekben) lévő értékek XML-elemként történő írásának folyamata. A deszerializálás a fordított folyamat.
A szerializálás a C-adatstruktúrákban (struktúrákban, tömbökben és primitív értékekben) lévő értékek XML-elemként történő írásának folyamata. A deszerializálás a fordított folyamat.
Mindkét folyamat a C adatstruktúrák és az XML közötti leképezés leírásán alapul.
Egy érték szerializálásához az alkalmazás meghívja WsWriteElement, WsWriteAttribute vagy WsWriteType.
Egy érték deszerializálásához az alkalmazás meghívja WsReadElement, WsReadAttribute vagy WsReadType.
Biztonság
XML-olvasó a deszerializálási folyamat során használatos. Tekintse meg az XML-olvasó biztonsági szakaszát az XML-hez kapcsolódó biztonsági információkért.
A deszerializáló mindaddig deszerializálja az adatokat, amíg be nem fejeződik a deszerializálandó elem olvasása. A deszerializálási folyamat meghiúsul, ha olyan XML-dokumentumba ütközik, amely nem felel meg a deszerializált adatok leírásának. Ezen a ponton a használt XML-olvasó érvénytelenné válik, és a rendszer hibát ad vissza.
Alapértelmezés szerint a deszerializálás szigorú. A deszerializálás meghiúsulását okozó feltételek közé tartoznak többek között a következők:
- A várt elemek hiányoznak
- Váratlan elemmezők jelennek meg a szükséges elemek között
- Extra elemtartalom a szükséges mezők után, kivéve, ha a WS_STRUCT_IGNORE_TRAILING_ELEMENT_CONTENT
- Váratlan attribútumok, kivéve, ha WS_STRUCT_IGNORE_UNHANDLED_ATTRIBUTES jelző van megadva
- Nem várt adattípus-érték, amely kívül esik a megadott tartományon
- Az ismétlődő elem száma kívül esik a megadott tartományon
A nagy mennyiségű adat szerializálása túlzott memóriafoglalást okozhat, és szolgáltatásmegtagadási támadást okozhat. Az adatokat deszerializáló felhasználónak meg kell adnia egy halomobjektumot az adatok lefoglalásához, és a felhasználó a halomfoglalási korlátot használhatja a memóriafoglalási támadás megelőzésére.
Az adattípusok tartománytámogatása, beleértve a sztring maximális hosszát, a tömbök maximális elemszámát stb., lehetővé teszi a felhasználó számára a különböző adattípusok maximális méretének szabályozását. A felhasználó megadhat tartományt az adatleírásban vagy a sémában a különböző adatok maximális méretének korlátozásához.
A drótformátumokban (szöveg, bináris, MTOM) a beágyazott nullát tartalmazó sztringértékek támogatottak. Ha beágyazott nullával deszerializál egy sztringet, a felhasználónak megszámlált sztringet (WS_STRING) kell használnia, hogy a nulla ne keverje össze a sztring hosszának számítását. Ha egy beágyazott nullát tartalmazó sztringérték deszerializálva lesz egy nulla végződésű sztringet váró mezőbe, a program hibát ad vissza, és a deszerializálás sikertelen lesz. Ha a wsutil az adatleírások létrehozásához használatos, akkor a /string:WS_STRING beállítást kell használni, ha a beágyazott nullával rendelkező sztring várható.
A szerializálás a következő visszahívásokat használja:
A szerializálás a következő enumerálásokat használja:
A szerializálás a következő függvényeket használja:
A szerializálás a következő struktúrákat használja:
- 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