Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Serialisasi adalah proses mengonversi objek menjadi aliran byte untuk menyimpan objek atau mengirimkannya ke memori, database, atau file. Tujuan utamanya adalah untuk menyimpan status objek agar dapat membuatnya kembali saat diperlukan. Proses terbalik disebut deserialisasi.
Cara Kerja Serialisasi
Ilustrasi ini menunjukkan proses serialisasi secara keseluruhan.
Objek diserialisasikan ke aliran, yang tidak hanya membawa data, tetapi informasi tentang jenis objek, seperti versi, budaya, dan nama rakitannya. Dari aliran tersebut, itu dapat disimpan dalam database, file, atau memori.
Penggunaan untuk Serialisasi
Serialisasi memungkinkan pengembang untuk menyimpan status 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 melalui Layanan Web, meneruskan objek dari satu domain ke domain lain, meneruskan objek melalui firewall sebagai string XML, atau mempertahankan informasi keamanan atau khusus pengguna di seluruh aplikasi.
Serialisasi JSON
Namespace System.Text.Json berisi kelas untuk serialisasi dan deserialisasi JavaScript Object Notation (JSON). JSON adalah standar terbuka yang umumnya digunakan untuk berbagi data di seluruh web.
Serialisasi JSON menserialisasikan properti publik objek ke dalam string, array byte, atau aliran yang sesuai dengan spesifikasi RFC 8259 JSON. Untuk mengontrol cara JsonSerializer menserialisasikan atau mendeserialisasi instans kelas, Anda dapat menggunakan satu atau beberapa pendekatan berikut:
- Gunakan sebuah objek JsonSerializerOptions
- Menerapkan atribut dari System.Text.Json.Serialization namespace ke kelas atau properti
- Menyesuaikan kontrak
- Menerapkan pengonversi kustom
Serialisasi Biner dan XML
Namespace System.Runtime.Serialization berisi kelas untuk serialisasi dan deserialisasi biner dan XML.
Dalam serialisasi biner, semua anggota, bahkan yang hanya dapat dibaca, diserialisasikan, dan performa meningkat. Serialisasi XML menyediakan kode yang lebih mudah dibaca, serta fleksibilitas berbagi objek dan penggunaan yang lebih besar untuk tujuan interoperabilitas.
Peringatan
Serialisasi biner dengan BinaryFormatter
bisa berbahaya. Untuk informasi selengkapnya, lihat panduan keamanan BinaryFormatter dan panduan migrasi BinaryFormatter.
Membuat Objek Dapat Diserialisasi
Untuk membuat serialisasi objek menggunakan serialisasi biner atau XML, Anda memerlukan objek untuk diserialisasikan, aliran untuk berisi objek yang diserialisasikan, dan Formatter. System.Runtime.Serialization berisi kelas yang diperlukan untuk menserialisasikan dan mendeserialisasi objek.
Terapkan atribut SerializableAttribute pada jenis untuk menunjukkan bahwa instans jenis ini dapat diserialisasikan. Pengecualian SerializationException dilemparkan jika Anda mencoba menserialisasikan tetapi jenisnya tidak memiliki SerializableAttribute atribut .
Jika Anda tidak ingin bidang dalam kelas Anda dapat diserialisasikan, terapkan NonSerializedAttribute atribut . Jika bidang dari jenis yang dapat diserialisasi berisi penunjuk, handle, atau beberapa struktur data lain yang khusus untuk lingkungan tertentu, dan bidang tidak dapat disusun kembali dengan makna yang sesuai di lingkungan yang berbeda, maka Anda mungkin ingin membuatnya tidak dapat diserialisasi.
Jika kelas berseri berisi referensi ke objek kelas lain yang ditandai SerializableAttribute, objek tersebut juga akan diserialisasikan.
Serialisasi Biner
Serialisasi biner menggunakan pengodean biner untuk menghasilkan serialisasi ringkas untuk penggunaan seperti penyimpanan atau aliran jaringan berbasis soket.
Serialisasi XML
Serialisasi XML menserialisasikan bidang publik dan properti objek, atau parameter dan mengembalikan nilai metode, ke dalam aliran XML yang sesuai dengan dokumen bahasa definisi Skema XML (XSD) tertentu. Serialisasi XML menghasilkan kelas yang bertipe kuat dengan properti dan bidang publik yang dikonversi ke XML. System.Xml.Serialization berisi kelas yang diperlukan untuk membuat serialisasi dan deserialisasi XML.
Anda dapat menerapkan atribut ke kelas dan anggota kelas untuk mengontrol cara XmlSerializer menyerialkan atau mendeseralikan sebuah instans kelas.
Serialisasi Dasar dan Kustom
Serialisasi Biner dan XML dapat dilakukan dengan dua cara, dasar dan kustom. Serialisasi dasar menggunakan .NET untuk membuat serialisasi objek secara otomatis.
Satu-satunya persyaratan dalam serialisasi dasar adalah bahwa objek memiliki SerializableAttribute atribut yang diterapkan. NonSerializedAttribute dapat digunakan untuk mencegah bidang tertentu diserialisasikan.
Saat Anda menggunakan serialisasi dasar, penerapan versi objek dapat membuat masalah, dalam hal ini serialisasi kustom mungkin lebih disukai. Serialisasi dasar adalah cara termampu untuk melakukan serialisasi, tetapi tidak memberikan banyak kontrol atas proses.
Dalam serialisasi kustom, Anda dapat menentukan dengan tepat objek mana yang akan diserialisasikan dan bagaimana hal itu akan dilakukan. Kelas harus ditandai dengan SerializableAttribute dan mengimplementasikan antarmuka ISerializable. Jika Anda ingin objek Anda dideserialisasi dengan cara kustom juga, Anda harus menggunakan konstruktor kustom.
Serialisasi Desainer
Serialisasi perancang adalah bentuk serialisasi khusus yang melibatkan jenis persistensi objek yang biasanya terkait dengan alat pengembangan. Serialisasi perancang adalah proses mengonversi grafik objek menjadi file sumber yang nantinya dapat digunakan untuk memulihkan grafik objek. File sumber dapat berisi kode, markup, atau bahkan informasi tabel SQL.
Artikel terkait
Cara: Membaca Data Objek dari File XML (Visual Basic)
Memperlihatkan cara membaca data objek yang sebelumnya ditulis ke file XML menggunakan XmlSerializer kelas .
Cara: Menulis Data Objek ke File XML (Visual Basic)
Memperlihatkan cara menulis objek dari kelas ke file XML menggunakan XmlSerializer kelas .