Saya menemukan bahwa beberapa kelas menggunakan [Serializable]
atribut.
- Apa itu?
- Kapan saya harus menggunakannya?
- Apa jenis manfaat yang akan saya dapatkan?
c#
.net
serialization
kevin
sumber
sumber
What is it?
stackoverflow.com/questions/3429921/what-does-serializable-meanJawaban:
Apa itu?
Saat Anda membuat objek di aplikasi .Net framework, Anda tidak perlu memikirkan bagaimana data disimpan dalam memori. Karena .Net Framework mengurusnya untuk Anda. Namun, jika Anda ingin menyimpan konten suatu objek ke file, mengirim objek ke proses lain atau mengirimkannya ke seluruh jaringan, Anda harus memikirkan bagaimana objek tersebut diwakili karena Anda perlu mengonversi ke format lain. . Konversi ini disebut SERIALISASI.
Penggunaan untuk Serialisasi
Serialisasi memungkinkan pengembang untuk menyimpan keadaan suatu objek dan membuatnya kembali sesuai kebutuhan, menyediakan penyimpanan objek serta pertukaran data. 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.
Berlaku
SerializableAttribute
untuk jenis yang menunjukkan bahwa contoh jenis ini dapat diserialisasi. TerapkanSerializableAttribute
bahkan jika kelas juga mengimplementasikanISerializable
antarmuka untuk mengontrol proses serialisasi.Semua bidang publik dan pribadi dalam jenis yang ditandai oleh
SerializableAttribute
serialisasi secara default, kecuali jika jenis mengimplementasikanISerializable
antarmuka untuk mengganti proses serialisasi. Proses serialisasi default tidak termasuk bidang yang ditandai denganNonSerializedAttribute
. Jika bidang jenis serializable berisi pointer, pegangan, atau beberapa struktur data lain yang khusus untuk lingkungan tertentu, dan tidak dapat direkonstitusi secara bermakna di lingkungan yang berbeda, maka Anda mungkin ingin menerapkanNonSerializedAttribute
bidang itu.Lihat MSDN untuk detail lebih lanjut.
Edit 1
Saat mentransfer atau menyimpan data, Anda hanya perlu mengirim atau menyimpan data yang diperlukan. Jadi akan ada sedikit keterlambatan transfer dan masalah penyimpanan. Jadi, Anda dapat menyisih data yang tidak perlu saat membuat serial.
sumber
Beberapa kegunaan praktis untuk
[Serializable]
atribut:BinaryFormatter
kelas di System.Runtime.Serialization.Formatters.BinaryClipboard.SetData()
- kelas nonserialisable tidak dapat ditempatkan di clipboard.MarshalByRefObject
) harus serialisable.Ini adalah kasus penggunaan paling umum yang saya temui.
sumber
Karena pertanyaan aslinya adalah tentang SerializableAttribute, perlu dicatat bahwa atribut ini hanya berlaku ketika menggunakan BinaryFormatter atau SoapFormatter.
Agak membingungkan, kecuali Anda benar-benar memperhatikan detailnya, kapan menggunakannya dan apa tujuan sebenarnya.
Ini TIDAK ada hubungannya dengan serialisasi XML atau JSON.
Digunakan dengan SerializableAttribute adalah Antarmuka ISerializable dan Kelas SerializationInfo. Ini juga hanya digunakan dengan BinaryFormatter atau SoapFormatter.
Kecuali jika Anda bermaksud membuat serial kelas Anda menggunakan Biner atau Sabun, jangan repot-repot menandai kelas Anda sebagai [Serializable]. Serializer XML dan JSON bahkan tidak menyadari keberadaannya.
sumber
Serializable
, dan tanpa ketika atribut itu dihapus. Jadi beberapa gangguan mungkin terjadi.Bagaimana Serialisasi Bekerja
Ilustrasi ini menunjukkan keseluruhan proses serialisasi.
Objek serial ke aliran, yang tidak hanya membawa data, tetapi informasi tentang jenis objek, seperti versi, budaya, dan nama rakitan. Dari aliran itu, dapat disimpan dalam database, file, atau memori.
Detail dalam msdn.
sumber
Ini adalah contoh singkat tentang bagaimana serialisasi bekerja. Saya juga belajar tentang hal yang sama dan saya menemukan dua tautan bermanfaat. Apa Serialisasi dan bagaimana hal itu dapat dilakukan dalam . NET .
Program sampel yang menjelaskan serialisasi
Jika Anda tidak memahami program di atas, banyak program sederhana dengan penjelasan diberikan di sini .
sumber
Serialisasi
Serialisasi adalah proses mengubah suatu objek atau satu set objek grafik menjadi aliran, itu adalah array byte dalam kasus serialisasi biner
Penggunaan Serialisasi
Di bawah ini adalah beberapa atribut khusus yang berguna yang digunakan selama serialisasi suatu objek
[Serializable] -> Digunakan ketika kita menandai serializable objek [NonSerialized] -> Ini digunakan ketika kita tidak ingin membuat serialisasi bidang objek. [OnSerializing] -> Digunakan ketika kita ingin melakukan beberapa aksi saat membuat serial objek [OnSerialized] -> Ini digunakan ketika kita ingin melakukan beberapa tindakan setelah membuat serial objek pada aliran.
Di bawah ini adalah contoh serialisasi
Ini kode panggilannya
sumber