Serialisasi

Dalam konteks penyimpanan dan transmisi data pada ilmu komputer, **serialisasi** adalah proses pengubahan suatu objek menjadi urutan bit agar dapat disimpan pada media penyimpanan (seperti berkas komputer, atau pada memori) atau ditransmisikan melalui saluran koneksi jaringan. Sewaktu rangkaian bit ini dibaca ulang sesuai dengan format serialisasinya, ia dapat digunakan untuk menciptakan klon identik semantis dari objek asalnya. Bagi banyak objek kompleks, misalnya objek yang banyak menggunakan rujukan, proses ini tidak dapat dilakukan begitu saja.

Proses serialisasi suatu objek ini dapat juga disebut pengempisan (*deflating*) atau penyusunan (*marshalling*) objek. Operasi kebalikannya, pembuatan struktur data dari rangkaian bita, adalah deserialisasi, atau disebut juga penggembungan (*inflating*) atau pembongkaran (*unmarshalling*) objek.

## Penggunaan
Serialisasi digunakan sebagai:
* Cara untuk melakukan penyimpanan objek yang lebih mudah dibandingkan menuliskan properti atas objek-objek tersebut ke dalam berkas teks, dan mengembalikannya sebagai objek.
* Salah satu proses yang dilakukan dalam pemanggilan prosedur jarak jauh (*remote procedure call*), contoh, SOAP
* Salah satu cara untuk mendistribusikan objek, khususnya dalam arsitektur berbasis komponen, contoh, COM, CORBA, dan lain-lain.
* Salah satu cara untuk mendeteksi perubahan data dalam satu periode waktu tertentu.

Agar fungsi serialisasi dapat memberikan manfaat seperti tujuan awalnya, arsitektur perangkat lunak yang berdasar pada ketidakbergantungan harus senantiasa dikelola secara konsisten. Sebagai contoh, untuk mendapatkan kegunaan maksimum saat perangkat lunak didistribusikan, komputer yang berjalan pada sistem operasi yang berbeda harus dapat pula melakukan rekonstruksi data yang telah terserialisasi tersebut secara reliabel. Serialisasi struktur data dalam arsitektur yang independen ditujukan untuk memungkinkan data tersebut secara reliabel dibaca, direkonstruksi secara mudah pada platform-platform sistem operasi lain. Hal ini berarti data yang berasal dari prosedur konvensional yang sederhana, berunjuk kerja tinggi, yang secara langsung menyalin blok-blok memori komputer biasanya tidak akan dapat digunakan pada arsitektur yang lain.

## Kerugian
Meskipun serialisasi memungkinkan pertukaran data antar platform secara reliabel, namun pada implementasinya serialisasi ini melanggar batasan-batasan tipe data abstrak, sehingga sangat mungkin menyertakan pula tipe-tipe data yang bersifat spesifik. Di sisi lain aspek kerugian ini sering kali dimanfaatkan oleh perusahaan pembuat perangkat lunak untuk melindungi produk perangkat lunak buatan mereka serta menghalangi kompetitor membuat produk sejenis yang kompatibel. Beberapa perusahaan bahkan menambahkan metode pengacakan atau bahkan enkripsi atas hasil data serialisasi ini.

Hanya saja interoperabilitas mensyaratkan semua aplikasi harus bisa melakukan deserialisasi atau sebaliknya melakukan serialisasi dengan dengan menggunakan format yang sama, karenanya arsitektural pemanggilan prosedur jarak jauh (*remote procedure call*) ataupun CORBA secara detail menyertakan spesifikasi atas format yang digunakan.

## Rujukan

## Pranala luar
Untuk platform ASP.NET:
* Serialize Any ASP.NET Object to a JSON String
* aspnet Callback technique using csharp 

Bahasa pemrograman Java:
* Java 1.4 Object Serialization documentation.
* Java Object Serialization 
* Durable Java: Serialization 
* XML Data Binding Resources
* JOAFIP serialization in file and more...
* Databoard
* Kryo

Bahasa pemrograman C:
* c11n
* tpl 

Bahasa pemrograman C++:
* Serialization and Unserialization
* Boost Serialization
* s11n
* Sweet Persist 
* C++ Middleware Writer

Bahasa pemrograman PHP:
* Object Serialization in PHP 
* Online serialize & unserialize tool with recovering capacities. Other resources about PHP serialization
* Recovering Truncated PHP Serialized Arrays

Sistem serialisasi multi bahasa pemrograman:
* Google Protocol Buffers Developer Guide (C++, Java, Python)
* Apache Avro