Apa itu Serialisasi?

149

Saya memulai dengan Pemrograman Berorientasi Objek (OOP) dan ingin tahu: apa arti dari serialisasi dalam bahasa OOP?

Komunitas
sumber
Juga lihat artikel ini yang menjelaskan mengapa tidak menggunakan serialisasi codeproject.com/KB/dotnet/noserialise.aspx
Nipuna
4
Artikel itu BS lengkap, maka peringkatnya.
RedAces
Bukankah itu pertanyaan yang terlalu luas yang biasanya dihapus, karena pencarian di Google akan memberikan jawaban instan?
arvymetal
2
@ Arvymetal Anda benar. Ini adalah hasil pertama ketika saya googled :) Dan itulah yang saya cari
R_G

Jawaban:

143

Serialisasi adalah proses mengubah objek dalam memori menjadi aliran byte sehingga Anda dapat melakukan hal-hal seperti menyimpannya di disk atau mengirimnya melalui jaringan.

Deserialisasi adalah proses sebaliknya: mengubah aliran byte menjadi objek di memori.

Andrew Barnett
sumber
46
Juga, kata kerja Marshaldan Unmarshalsinonim dengan Serializedan Deserialize.
wulfgarpro
4
Bukankah objek dalam memori sudah direpresentasikan sebagai byte pada level terendah?
mahacoder
3
Objek dalam memori akan diformat oleh kompiler, OS dan / atau perangkat keras. Ubah kompiler Anda dan Anda mengubah format Anda. Objek berseri akan memiliki format yang ditentukan oleh kode Anda, sehingga Anda dapat menjamin formatnya. Ini juga membantu ketika mengirim objek melalui jaringan - mesin penerima mungkin memiliki arsitektur yang sama sekali berbeda (dan dengan demikian representasi dalam memori).
Andrew Barnett
1
Jadi itu mengubahnya menjadi string?
NoName
1
String dapat berupa format yang valid, tetapi tidak harus berupa string. Strings sendiri memiliki format yang berbeda (ASCII, UTF8, UTF16, EBCDIC ...) dan benar-benar menunjukkan konsep dengan cukup baik. String (objek dalam memori) abcakan diserialkan sebagai 0x61 0x62 0x63(ASCII) atau 0x00 0x61 0x00 0x62 0x00 0x63(UTF16) - dengan atau tanpa hal-hal seperti NUL terminator atau panjang yang disandikan.
Andrew Barnett
91

Sederhananya, Serialisasi adalah proses mengubah Obyek menjadi aliran byte sehingga dapat ditransfer melalui jaringan atau disimpan dalam penyimpanan persisten.

Deserialisasi adalah kebalikannya - Mengambil aliran byte dari jaringan atau penyimpanan persistensi dan mengubahnya kembali ke Object dengan status yang sama .

Yang perlu dipahami adalah bagaimana aliran byte tersebut diinterpretasikan atau dimanipulasi sehingga kita mendapatkan Obyek / keadaan yang sama persis. Ada berbagai cara untuk mencapainya. Beberapa dari mereka adalah -

  1. XML : Konversi Objek ke XML, transfer melalui jaringan atau simpan dalam file / db. Ambil dan konversikan kembali ke objek dengan status yang sama. Di Jawa kita menggunakan pustaka JAXB (arsitektur Java untuk pengikatan XML). (Dari java 6 dibundel dengan JDK).
  2. JSON : Hal yang sama dapat dilakukan dengan mengonversi Objek ke JSON (notasi Objek JavaScript). Sekali lagi ada perpustakaan GSON yang dapat digunakan untuk ini.
  3. Atau kita dapat menggunakan Serialisasi yang disediakan oleh bahasa OOP itu sendiri. Sebagai contoh, di Jawa Anda dapat membuat serial Obyek, membuatnya mengimplementasikan Serializable interfacedan menulis ke Object Stream.
Aniket Thakur
sumber
@AniketThakur Penjelasan yang sangat bagus, bisakah Anda juga memberikan tautan untuk saya pelajari JSONdari awal, karena saya tidak tahu apa-apa tentang hal itu
Kasun Siyambalapitiya
setiap kali kita berbicara tentang serialisasi mengapa kita selalu merujuk ke Objek saja. Kami tidak dapat menggunakan serialisasi dalam Bahasa Fungsional di mana kami tidak memiliki objek daripada menggunakan file untuk mentransfer melalui jaringan.
Pardeep Sharma
1
Pertama-tama, mengapa kita perlu mengonversi objek ke aliran byte dan kembali? Mengapa itu bukan operasi tersirat untuk pengguna yang mencoba melakukan itu?
Aparna Chaganti
1
Jika kita dapat menggunakan JSON atau XML lalu mengapa kita perlu atau mengatakan bahwa mengubahnya menjadi byte stream? Dan kemudian kita hanya menyimpannya ke JSOn atau XML alih-alih mengubahnya menjadi byte.
Muhammad Faizan Fareed
78

Penjelasan Sederhana melalui Gambar:

Rex, anjingku, bersambung!

Penjelasan oleh Analogi:

Misalkan saya sedang berbicara dengan teman saya di telepon dan saya mengatakan kepadanya tentang anak anjing baru saya.

Inilah masalah saya: anak anjing adalah mamalia yang hidup dan bernafas. Bagaimana saya bisa menyampaikan anak anjing melalui saluran telepon? Secara fisik saya tidak bisa memasukkan anak anjing ke dalam penerima telepon saya.

Jadi sebagai gantinya, saya harus menyampaikan representasi anak anjing melalui telepon. Dengan kata lain, saya kemudian membuat serialkan anjing saya Rex, dan saya mengirimnya versi serial Rex melalui saluran telepon:

{ "name":"Rex", "age":5, "favourite_food": pedigree_choice_cuts, "favourite_game": fetch_ball, "favourite_hobby": wagging_tail }

Ini representasi sempurna - serialisasi anjingku.

Ringkasan:

Serialisasi pada dasarnya berarti mengubah anjing saya Rex menjadi sesuatu yang lain - objek JSON - yang kemudian dapat diangkut melalui saluran telepon sebagai rangkaian 1s dan 0s. Teman saya di NYC kemudian dapat menerjemahkan angka 1 dan 0 itu kembali menjadi objek JSON - sehingga ia memiliki representasi sempurna dari anjing saya Rex.

BKSpurgeon
sumber
16

Lihat ini, ini akan memberi Anda penjelasan yang bagus:

http://en.wikipedia.org/wiki/Serialization

Saya pikir penggunaan paling umum dari serialisasi istilah ada hubungannya dengan mengubah objek biner menjadi representasi XML (atau string lain) sehingga dapat disimpan dalam database / file atau dikirim melalui jaringan dalam panggilan layanan web. Deserialisasi adalah proses kebalikan - mengubah XML / string kembali menjadi objek.

EDIT: Istilah lain yang mungkin Anda temui adalah marshalling / unmarshalling. Marshalling pada dasarnya adalah konsep yang sama dengan serialisasi, dan unmarshalling sama dengan deserializing.

Andy White
sumber
3
Tidak harus hanya XML, itu bisa berupa representasi apa pun, bahkan representasi biner
Matthew Farwell
7

Serialisasi adalah proses mengubah suatu objek menjadi aliran byte untuk menyimpan objek atau mengirimkannya ke memori, database, atau file. Tujuan utamanya adalah untuk menyimpan keadaan suatu objek agar dapat membuatnya kembali saat diperlukan. Proses sebaliknya disebut deserialization.

...

Ilustrasi ini menunjukkan keseluruhan proses serialisasi

Keseluruhan proses serialisasi

...

Melalui serialisasi, pengembang dapat melakukan tindakan seperti mengirim objek ke aplikasi jarak jauh dengan menggunakan Layanan Web, meneruskan objek dari satu domain ke domain lain, melewati objek melalui firewall sebagai string XML, atau menjaga keamanan atau khusus pengguna informasi lintas aplikasi

Dari https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/serialization/

(penekanan milikku)

Chamin Wickramarathna
sumber
5

Serialisasi adalah proses mengubah data yang tidak terurut (seperti objek) menjadi serangkaian token yang nantinya dapat digunakan untuk merekonstruksi data asli. Bentuk serial sering kali berupa string teks, tetapi tidak harus.

Dave Sherohman
sumber
2

serialisasi adalah mengubah suatu objek menjadi urutan bit yang dapat disimpan.

sehingga Anda dapat menyimpan urutan ini ke file, db atau kirim melalui jaringan.

nanti Anda dapat membatalkan deserialisasi ke objek aktual dan menggunakannya kembali kapan pun Anda mau.

Layanan Web dan AJAX adalah contoh paling umum dari serialisasi. Objek berseri sebelum mengirim respons ke klien.

Canavar
sumber
1

serialisasi tidak lain adalah mentransfer objek yang didukung java ke file bentuk yang didukung

                         (OR)

mengubah bentuk yang didukung java ke bentuk yang didukung jaringan .. ruang lingkup utama serialisasi tidak lain adalah untuk mentransfer data dari satu lapisan ke lapisan lain ... hanya objek serial yang dapat kami kirim melalui jaringan ..

sriiii
sumber
1

Serialisasi adalah proses mengkonversi objek yang didukung Java, C # atau lainnya (bahasa OOP) ke bentuk yang dapat diangkut. Dengan cara ini diangkut melalui jaringan atau disimpan pada disk. Agar suatu kelas dapat serial, ia harus mengimplementasikan antarmuka yang dapat serial.

Nesan Mano
sumber
tidak hanya terbatas pada Java atau C #, di sebagian besar bahasa pemrograman kami menggunakan serialisasi. Misalnya dalam modul acar python digunakan untuk hal yang sama.
Pardeep Sharma
0

Serialisasi adalah mengubah data menjadi "string" linear byte.

Yang lain mengatakan kurang lebih hal yang sama, tetapi saya menekankan bahwa model komputer membutuhkan data yang sesuai dengan RAM satu dimensi yang dituju atau penyimpanan yang persisten.

Sebagian besar hal yang merupakan "data" pada dasarnya serializable (bahkan jika Anda harus mengurangi model abstrak menjadi linear); tidak serializable dikatakan koneksi jaringan atau mesin berbasis negara yang rumit seperti pengurai.

Meluap
sumber
0

serialisasi berkaitan dengan mengubah objek biner menjadi representasi XML (atau string lain) sehingga dapat disimpan dalam database / file atau dikirim melalui jaringan dalam panggilan layanan web. Deserialisasi adalah proses kebalikan - mengubah XML / string kembali menjadi objek.

Viswanathan
sumber
0

Ketika instantiating (membangun) objek aktual (benda) dari kelas (cetak biru) ada kebutuhan untuk menyimpan objek (benda) dengan membuat serial (memecahnya ke struktur atom dasarnya) ke ruang dalam memori. (Jenis seperti Star Treks Transporter). Anda memecahnya menjadi aliran informasi yang dapat diangkut ke suatu tempat dan disimpan. Kemudian ketika Anda ingin merekonstruksi benda Anda hanya menarik contoh disimpan secara atom kembali ke objek. Berbeda dengan Instaniasi.

David K ​​Hill
sumber
0

Serialisasi adalah proses mengubah objek menjadi aliran data biner sehingga dapat disimpan dalam file atau dikirim melalui jaringan di mana ia dapat dibangkitkan kembali ke objek yang sama.

Dokumen ini akan membantu Anda memahami serialisasi Java secara terperinci.

Nikhil Katre
sumber
-1

Serialisasi adalah ketika objek (sepotong memori) diterjemahkan dalam bentuk ketika keadaan objek dapat disimpan dalam file (sebagai contoh).

Hanya memperlakukannya sebagai membuat kue - objek adalah adonan, cookie - adalah adonan berseri.

Jadi dengan "membuat cerita bersambung" Anda dapat mengirim cookie ke teman Anda.

Sesuatu seperti itu :-)

Mr.ElectroNick
sumber
4
... kecuali cookie tidak dapat diubah kembali menjadi adonan (deserialized).
Dave Sherohman