Serializace (v programování) je proces převodu datové struktury do bitové sekvence. Inverzí k operaci serializace je operace deserializace (strukturování) - vytvoření datové struktury z bitové sekvence.
Serializace se používá k přenosu objektů po síti ak jejich ukládání do . Například potřebujete vytvořit distribuovanou aplikaci , jejíž různé části si musí vyměňovat data se složitou strukturou. V tomto případě je pro datové typy, které mají být přeneseny, napsán kód, který provádí serializaci a deserializaci. Objekt se naplní potřebnými údaji , následně se zavolá serializační kód, výsledkem je např. XML dokument. Výsledek serializace je předán přijímající straně, řekněme, e-mailem nebo HTTP . Přijímající aplikace vytvoří objekt stejného typu a zavolá deserializační kód. Výsledkem je objekt se stejnými daty, jaké byly v objektu odesílající aplikace. Například serializace objektů přes SOAP v Microsoft .NET funguje podle tohoto schématu .
Každému ze schémat serializace neodmyslitelně patří to, že kódování dat je z definice sekvenční a získávání jakékoli části serializované datové struktury vyžaduje, aby byl celý objekt přečten od konce ke konci a znovu vytvořen. V mnoha aplikacích je tato linearita užitečná, protože umožňuje použití jednoduchých, univerzálních I/O rozhraní k ukládání a přenosu stavu objektu. V aplikacích, kde je důležitý vysoký výkon, může mít smysl použít složitější, nelineární organizaci úložiště.
Serializace poskytuje několik užitečných funkcí:
Aby bylo možné tyto funkce co nejlépe využít, musí být zachována nezávislost architektury. Například je nutné být schopen spolehlivě znovu vytvořit serializovaný datový tok bez ohledu na endianness použitý v dané architektuře. To znamená, že nejjednodušší a nejrychlejší postup přímého kopírování paměťového místa, kde se nachází datová struktura, nemůže spolehlivě fungovat pro všechny architektury. Serializace datových struktur do formátu nezávislého na architektuře znamená, že by neměly nastat problémy kvůli různému uspořádání bajtů, mechanismům přidělování paměti nebo rozdílům ve způsobu, jakým jsou datové struktury reprezentovány v programovacích jazycích.
Serializace narušuje neprůhlednost abstraktního datového typu a potenciálně odhaluje podrobnosti soukromé implementace. Triviální implementace, které serializují všechny datové členy, mohou narušit zapouzdření.
Aby zmátli konkurenty, pokud jde o vytváření podobných produktů, vývojáři proprietárního softwaru často tají podrobnosti o serializačních formátech svých programů. Někteří záměrně zamlžují nebo dokonce šifrují serializovaná data. Interoperabilita však vyžaduje, aby aplikace byly schopny vzájemně porozumět formátům serializace. Architektury vzdáleného vyvolání metod, jako je CORBA, proto podrobně specifikují své formáty serializace.
Pro velké vědecké soubory dat, jako jsou satelitní data nebo numerické modely klimatu, počasí a oceánů, byly vyvinuty speciální standardy binární serializace, jako je HDF , netCDF a starší GRIB .