Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A szerializálás egy objektum bájtos adatfolyammá alakításának folyamata az objektum tárolásához vagy a memóriába, adatbázisba vagy fájlba való továbbításához. Fő célja egy objektum állapotának mentése annak érdekében, hogy szükség esetén újra létre lehessen hozni. A fordított folyamatot deszerializálásnak nevezzük.
A szerializálás működése
Ez az ábra a szerializálás általános folyamatát mutatja be.
Az objektum egy adatfolyamra van szerializálva, amely nem csak az adatokat, hanem az objektum típusára vonatkozó információkat is tartalmaz, például annak verzióját, kultúráját és szerelvénynevét. Az adatfolyam adatbázisban, fájlban vagy memóriában tárolható.
Szerializálási felhasználások
A szerializálás lehetővé teszi, hogy a fejlesztő mentse az objektum állapotát, és szükség szerint hozza létre újra, biztosítva az objektumok tárolását és az adatcserét. A szerializálással a fejlesztő olyan műveleteket hajthat végre, mint például az objektum távoli alkalmazásba való küldése webszolgáltatással, objektum átadása egyik tartományból a másikba, objektum továbbítása egy tűzfalon XML-sztringként, vagy biztonsági vagy felhasználóspecifikus információk fenntartása az alkalmazások között.
JSON-szerializálás
A System.Text.Json névtér osztályokat tartalmaz a JavaScript Object Notation (JSON) szerializálásához és deszerializálásához. A JSON egy nyílt szabvány, amelyet gyakran használnak az adatok webes megosztásához.
A JSON-szerializálás egy objektum nyilvános tulajdonságait sztring, bájttömb vagy stream formájában szerializálja, amely megfelel az RFC 8259 JSON-specifikációnak. Az osztály egy példányának szerializálásának vagy deszerializálásának szabályozásához JsonSerializer használhatja az alábbi módszerek egyikét:
- JsonSerializerOptions Objektum használata
- Az attribútumokat a System.Text.Json.Serialization névtérből alkalmazza osztályokra vagy tulajdonságokra.
- A szerződés testreszabása
- Egyéni konverterek implementálása
Bináris és XML-szerializálás
A System.Runtime.Serialization névtér bináris és XML-szerializálási és deszerializálási osztályokat tartalmaz.
Bináris szerializálás során minden tag, beleértve az írásvédett tagokat is, szerializálódik, és javul a teljesítmény. Az XML-szerializálás olvashatóbb kódot, valamint nagyobb rugalmasságot biztosít az objektumok megosztásához és az együttműködési célokhoz való használathoz.
Figyelmeztetés
A bináris szerializálás BinaryFormatter
veszélyes lehet. További információt a BinaryFormatter biztonsági útmutatójában és a BinaryFormatter migrálási útmutatójában talál.
Objektum szerializálhatóvá tétele
Ha bináris vagy XML-szerializálással szeretne szerializálni egy objektumot, szerializálnia kell az objektumot, egy adatfolyamot, amely tartalmazza a szerializált objektumot, és egy Formatter. System.Runtime.Serialization az objektumok szerializálásához és deszerializálásához szükséges osztályokat tartalmazza.
Alkalmazza az SerializableAttribute attribútumot egy típusra, hogy jelezze, hogy az ilyen típusú példányok szerializálhatók. SerializationException kivételt dob, ha szerializálni próbálkozik, de a típus nem rendelkezik az SerializableAttribute attribútummal.
Ha nem szeretné, hogy az osztály egyik mezője szerializálható legyen, alkalmazza az NonSerializedAttribute attribútumot. Ha egy szerializálható típusú mező tartalmaz egy mutatót, egy leírót vagy más, egy adott környezetre jellemző adatstruktúrát, és a mező nem állítható össze értelmesen egy másik környezetben, akkor érdemes lehet nem szerializálhatóvá tenni.
Ha egy szerializált osztály más, megjelölt SerializableAttributeosztályok objektumaira mutató hivatkozásokat tartalmaz, akkor ezek az objektumok is szerializálva lesznek.
Bináris szerializálás
A bináris szerializálás bináris kódolással hoz létre kompakt szerializálást olyan alkalmazásokhoz, mint a tároló- vagy szoftvercsatorna-alapú hálózati streamek.
XML-szerializálás
Az XML-szerializálás szerializálja egy objektum nyilvános mezőit és tulajdonságait, illetve a paramétereket, és visszaadja a metódusok értékeit egy adott XML-sémadefiníciós nyelvnek (XSD) megfelelő XML-adatfolyamba. Az XML-szerializálás olyan erősen beírt osztályokat eredményez, amelyek nyilvános tulajdonságokkal és xml-fájllá konvertált mezőkkel rendelkeznek. System.Xml.Serialization Az XML szerializálásához és deszerializálásához szükséges osztályokat tartalmazza.
Attribútumokat alkalmazhat az osztályokra és az osztálytagokra annak szabályozása érdekében, hogy a XmlSerializer szerializálja vagy deszerializálja az osztály egy példányát.
Alapszintű és egyéni szerializálás
A bináris és XML-szerializálás kétféleképpen végezhető el, alapszintű és egyéni módon. Az alapszintű szerializálás a .NET használatával automatikusan szerializálja az objektumot.
Az alapszintű szerializálás egyetlen követelménye, hogy az objektumra alkalmazza az SerializableAttribute attribútumot. A(z) NonSerializedAttribute használható bizonyos mezők szerializálásának megakadályozására.
Alapszintű szerializálás használatakor az objektumok verziószámozása problémákat okozhat, ebben az esetben az egyéni szerializálás előnyösebb lehet. Az alapszintű szerializálás a szerializálás legegyszerűbb módja, de nem biztosít nagy ellenőrzést a folyamat felett.
Az egyéni szerializálásban pontosan megadhatja, hogy mely objektumok legyenek szerializálva, és hogyan legyenek végrehajtva. Az osztályt meg kell jelölni SerializableAttribute, és meg kell valósítania az ISerializable interfészt. Ha szeretné, hogy az objektum egyéni módon deszerializálódjon, akkor egyedi konstruktort kell használnia.
Tervezői szerializálás
A tervezői szerializálás a szerializálás egy speciális formája, amely magában foglalja a fejlesztési eszközökhöz általában társított objektummegőrzési típust. A tervező szerializálása egy objektumgráf forrásfájllá alakításának folyamata, amely később használható az objektumgráf helyreállításához. A forrásfájlok tartalmazhatnak kódot, korrektúrát vagy akár SQL-táblaadatokat is.
Kapcsolódó cikkek
Útmutató: Objektumadatok olvasása XML-fájlból (Visual Basic)
Bemutatja, hogyan olvashatók be a korábban az XML-fájlba írt objektumadatok a XmlSerializer osztály használatával.
Útmutató: Objektumadatok írása XML-fájlba (Visual Basic)
Azt mutatja be, hogyan írhatja az objektumot egy osztályból egy XML-fájlba az XmlSerializer osztály használatával.