Cara bekerja dengan serialisasi di .Net

Saat bekerja dengan aplikasi, Anda sering kali perlu menyimpan data dalam media penyimpanan persisten atau non-persisten sehingga data yang sama dapat diambil di lain waktu. Serialisasi, fitur yang disediakan oleh CLR, dapat membantu Anda mencapai ini.

Serialisasi dapat didefinisikan sebagai proses mengubah objek menjadi aliran byte, mempertahankan status objek ke dalam memori, database file. Kebalikan dari serialisasi adalah deserialization, yang merekonstruksi objek dari aliran byte. Dengan kata lain, deserialization adalah proses mengubah objek berseri menjadi keadaan aslinya.

Serialisasi diperlukan untuk melewatkan objek melalui kabel - ini memfasilitasi transmisi objek melalui jaringan. Oleh karena itu, Anda dapat memanfaatkan serialisasi untuk meneruskan objek dari satu domain aplikasi ke domain aplikasi lainnya. Anda juga dapat memanfaatkan serialisasi untuk membuat tiruan dari suatu objek.

Namun, serialisasi juga mahal karena resource overhead yang terlibat dalam serialisasi dan de-serialisasi objek. Untuk bekerja dengan Serialization di .Net Anda harus memanfaatkan namespace System.Runtime.Serialization, yaitu, Anda harus menyertakan namespace ini dalam program Anda.

Anda dapat membuat kelas dapat diserialkan menggunakan atribut [Serializable]. Berikut adalah contoh yang menunjukkan bagaimana Anda dapat menerapkan atribut ini di kelas.

[Serializable]

public class Product

{

   public int productCode;

   public string productName;

}

Sekarang, jika Anda ingin membatasi satu atau lebih anggota kelas agar tidak menjadi serial, Anda dapat menggunakan atribut NonSerialized seperti yang ditunjukkan dalam cuplikan kode yang diberikan di bawah ini.

[Serializable]

    public class Product

    {

        public int productCode;

        public string productName;

        [NonSerialized()]

        public double productPrice;

    }

Kerangka .Net menyediakan dukungan untuk jenis serialisasi berikut.

  1. Biner
  2. SABUN MANDI
  3. XML
  4. Adat

Serialisasi biner

Serialisasi biner adalah yang tercepat dari semua teknik serialisasi - dapat digunakan untuk membuat serialisasi objek ke aliran biner. Ini adalah jenis serialisasi yang dapat digunakan untuk menserialisasikan objek ke aliran keluaran sambil mempertahankan identitas objek - jenis informasi tidak hilang dalam proses serialisasi. Perhatikan bahwa saat menggunakan serialisasi biner, objek disimpan secara keseluruhan. Untuk bekerja dengan serialisasi biner, Anda harus menyertakan ruang nama System.Runtime.Serialization.Formatters.Binary.

Serialisasi SOAP

Serialisasi SOAP (Simple Object Access Protocol) adalah pilihan yang baik ketika Anda ingin mentransfer objek dari satu aplikasi ke aplikasi lain ketika aplikasi ini menggunakan arsitektur yang heterogen. Intinya, keuntungan utama menggunakan serialisasi SOAP adalah portabilitas. Serialisasi SOAP dapat digunakan untuk membuat sebuah objek dalam format SOAP. Untuk bekerja dengan serialisasi SOAP Anda harus menyertakan namespace System.Runtime.Serialization.Formatters.Soap dalam program Anda. Perhatikan bahwa seperti Serialisasi XML, objek yang diserialkan menggunakan serialisasi SOAP dipertahankan sebagai XML.

Serialisasi XML

Serialisasi XML adalah jenis serialisasi yang digunakan untuk membuat serial anggota publik dari sebuah instance kelas menjadi aliran XML. Perhatikan bahwa serialisasi XML lambat dibandingkan dengan serialisasi Biner - sebenarnya ini jauh lebih lambat. Keuntungan utama serialisasi XML adalah menyediakan dukungan lintas platform dan karena berbasis teks, dapat dibaca dan diedit juga. Anda dapat memanfaatkan XmlAttribute dan mengaturnya pada properti untuk mengaktifkan properti untuk diserialkan menggunakan serialisasi XML. Potongan kode berikut mengilustrasikan bagaimana Anda dapat menggunakan XmlAttribute pada sebuah properti.

[XmlAttribute("productName")]

public string ProductName

{

  get

  {

    return productName;

  }

  set

  {

    productName = value;

  }

}

Untuk menserialisasi dan membatalkan serialisasi objek menggunakan serialisasi XML, Anda dapat menggunakan XmlSerializer. Potongan kode berikut menunjukkan bagaimana Anda dapat membuat serialisasi objek menggunakan serialisasi XML - perhatikan bagaimana XmlSerializer digunakan.

XmlSerializer xmlSerializer = new XmlSerializer(typeof(Product));

using (TextWriter textWriter = new StreamWriter(@"D:\Product.xml"))

 {

    xmlSerializer.Serialize(textWriter, productObject);

 }

Serialisasi kustom

Anda dapat memanfaatkan serialisasi kustom untuk mengontrol bagaimana sebuah instance dari suatu tipe dapat diserialisasi dan dideserialisasi. Anda dapat menerapkan serialisasi kustom dengan mengimplementasikan antarmuka ISerializable. Antarmuka ISerializable mendeklarasikan metode GetObjectData (). Cuplikan kode berikut mengilustrasikan bagaimana Anda dapat menerapkan teknik serialisasi kustom dengan menerapkan antarmuka ISerializable.

[Serializable]

public class Product : ISerializable

{

    public void GetObjectData(SerializationInfo info, StreamingContext context)

    {

        //Usual code

    }

}