Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Serializace je proces převodu objektu na datový proud bajtů za účelem uložení objektu nebo jeho přenosu do paměti, databáze nebo souboru. Jeho hlavním účelem je uložit stav objektu, aby bylo možné ho v případě potřeby znovu vytvořit. Reverzní proces se nazývá deserializace.
Jak funguje serializace
Tento obrázek znázorňuje celkový proces serializace.
Objekt je serializován do datového proudu, který nese nejen data, ale informace o typu objektu, jako je jeho verze, jazyková verze a název sestavení. Z daného datového proudu může být uložen v databázi, souboru nebo paměti.
Používá se pro serializaci.
Serializace umožňuje vývojáři uložit stav objektu a podle potřeby ho znovu vytvořit, což poskytuje úložiště objektů a výměnu dat. Prostřednictvím serializace může vývojář provádět akce, jako je odeslání objektu do vzdálené aplikace prostřednictvím webové služby, předání objektu z jedné domény do jiné, předání objektu přes bránu firewall jako řetězec XML nebo udržování informací specifických pro uživatele nebo zabezpečení napříč aplikacemi.
Serializace JSON
System.Text.Json Obor názvů obsahuje třídy pro serializaci a deserializaci javascriptového objektového zápisu (JSON). JSON je otevřený standard, který se běžně používá ke sdílení dat na webu.
Serializace JSON serializuje veřejné vlastnosti objektu do řetězce, bajtového pole nebo datového proudu, který odpovídá specifikaci JSON RFC 8259. Chcete-li ovládat způsob, jakým JsonSerializer serializuje nebo deserializuje instanci třídy, můžete použít jeden nebo více z následujících přístupů:
- Použití objektu JsonSerializerOptions
- Použijte atributy z System.Text.Json.Serialization oboru názvů na třídy nebo vlastnosti
- Přizpůsobení kontraktu
- Implementace vlastních převaděčů
Binární serializace a serializace XML
Obor názvů System.Runtime.Serialization obsahuje třídy pro binární a XML serializaci a deserializaci.
V binární serializaci jsou všechny členy, i ty, které jsou jen pro čtení, serializovány a výkon je vylepšen. Serializace XML poskytuje čitelnější kód, stejně jako větší flexibilitu sdílení objektů a použití pro účely interoperability.
Výstraha
Binární serializace s BinaryFormatter může být nebezpečná. Další informace najdete v průvodci zabezpečením BinaryFormatter a průvodce migrací BinaryFormatter.
Vytvoření serializovatelného objektu
Chcete-li serializovat objekt pomocí binární nebo XML serializaci, potřebujete objekt k serializaci, datový proud pro uchování serializovaného objektu a Formatter. System.Runtime.Serialization obsahuje třídy nezbytné pro serializaci a deserializaci objektů.
SerializableAttribute Použijte atribut na typ, který označuje, že instance tohoto typu lze serializovat. Výjimka SerializationException je vyvolána, pokud se pokusíte serializovat a typ nemá atribut SerializableAttribute.
Pokud nechcete, aby pole v rámci vaší třídy bylo serializováno, použijte atribut NonSerializedAttribute. Pokud pole serializovatelného typu obsahuje ukazatel, popisovač nebo jinou datovou strukturu, která je specifická pro konkrétní prostředí, a pole nelze smysluplně rekonstituovat v jiném prostředí, můžete ho nastavit jako neserializovatelný.
Pokud serializovaná třída obsahuje odkazy na objekty jiných tříd, které jsou označeny SerializableAttribute, tyto objekty budou také serializovány.
Binární serializace
cs-CZ: Binární serializace používá binární kódování k vytvoření kompaktní serializace pro účely, jako je ukládání dat nebo datové toky založené na soketech.
Serializace XML
Serializace XML serializuje veřejná pole a vlastnosti objektu, nebo parametry a návratové hodnoty metod, do datového proudu XML, který odpovídá určitému dokumentu XSD (XML Schema Definition Language). Serializace XML má za následek třídy silného typu s veřejnými vlastnostmi a poli, které jsou převedeny na XML. System.Xml.Serialization obsahuje třídy nezbytné pro serializaci a deserializaci XML.
Atributy lze použít u tříd a členů tříd za účelem řízení, jak XmlSerializer serializuje nebo deserializuje instanci třídy.
Základní a vlastní serializace
Binární serializace a serializace XML lze provádět dvěma způsoby, základní a vlastní. Základní serializace používá .NET k automatické serializaci objektu.
Jediným požadavkem v základní serializaci je, že objekt má aplikovaný atribut SerializableAttribute. Může se použít NonSerializedAttribute k zamezení serializace konkrétních polí.
Při použití základní serializace, správa verzí objektů může způsobit problémy, v takovém případě vlastní serializace může být vhodnější. Základní serializace je nejjednodušší způsob, jak serializaci provést, ale neposkytuje velkou kontrolu nad procesem.
Ve vlastní serializaci můžete přesně určit, které objekty budou serializovány a jak to bude provedeno. Třída musí být označena SerializableAttribute a implementovat ISerializable rozhraní. Pokud chcete, aby byl objekt deserializován vlastním způsobem, musíte použít vlastní konstruktor.
Serializace návrháře
Serializace návrhová je zvláštní forma serializace, která zahrnuje druh perzistence objektů obvykle spojený s nástroji pro vývoj. Serializace návrháře je proces převodu grafu objektu na zdrojový soubor, který lze později použít k obnovení grafu objektu. Zdrojový soubor může obsahovat kód, značkování nebo dokonce informace o SQL tabulkách.
Související články
Postupy: Čtení dat objektu ze souboru XML (Visual Basic)
Ukazuje, jak číst data objektu, která byla dříve zapsána do souboru XML pomocí XmlSerializer třídy.
Postupy: Zápis dat objektu do souboru XML (Visual Basic)
Ukazuje, jak zapisovat objekt z třídy do souboru XML pomocí XmlSerializer třídy.