Cara bekerja dengan bersiri di .Net

Semasa bekerja dengan aplikasi, anda sering kali perlu menyimpan data dalam media penyimpanan berterusan atau tidak berterusan agar data yang sama dapat diambil pada masa yang akan datang. Serialisasi, ciri yang disediakan oleh CLR, dapat membantu anda mencapainya.

Serialisasi dapat didefinisikan sebagai proses mengubah objek menjadi aliran byte, mempertahankan keadaan objek ke dalam memori, pangkalan data file. Pembalikan serialisasi adalah deserialisasi, yang menyusun semula objek dari aliran bait. Dengan kata lain, deserialisasi adalah proses menukar objek bersiri ke keadaan asalnya.

Serialisasi diperlukan untuk menyebarkan objek ke atas wayar - ini memudahkan penghantaran objek melalui rangkaian. Oleh itu, anda boleh memanfaatkan serialisasi untuk meneruskan objek dari satu domain aplikasi ke domain yang lain. Anda juga boleh memanfaatkan serialisasi untuk membuat klon objek.

Walau bagaimanapun, penggambaran juga mahal kerana overhead sumber yang terlibat dalam membuat siri dan membatalkan siri. Untuk bekerja dengan Serialisasi di. Net, anda harus memanfaatkan ruang nama System.Runtime.Serialization, iaitu, anda harus memasukkan ruang nama ini dalam program anda.

Anda boleh membuat kelas bersiri 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 mengehadkan satu atau lebih ahli kelas daripada bersiri, anda boleh menggunakan atribut NonSerialized seperti yang ditunjukkan dalam coretan kod yang diberikan di bawah.

[Serializable]

    public class Product

    {

        public int productCode;

        public string productName;

        [NonSerialized()]

        public double productPrice;

    }

Rangka kerja .Net memberikan sokongan untuk jenis serialisasi berikut.

  1. Perduaan
  2. Sabun
  3. XML
  4. Adat

Bersiri binari

Serialisasi binari adalah yang terpantas dari semua teknik serialisasi - ia boleh digunakan untuk membuat siri objek ke aliran binari. Ini adalah jenis serialisasi yang dapat digunakan untuk membuat serial objek ke aliran output sambil menjaga identiti objek - maklumat jenis tidak hilang dalam proses serialisasi. Perhatikan bahawa semasa menggunakan serialisasi binari, objek disimpan secara keseluruhan. Untuk bekerja dengan siri bersiri binari, anda harus memasukkan System.Runtime.Serialization.Formatters. Ruang nama binari.

Bersiri sabun

Serialisasi SOAP (Simple Object Access Protocol) adalah pilihan yang baik apabila anda ingin memindahkan objek dari satu aplikasi ke aplikasi lain apabila aplikasi ini menggunakan seni bina yang heterogen. Pada hakikatnya, kelebihan utama menggunakan serialisasi SOAP adalah mudah alih. Serialisasi SOAP dapat digunakan untuk membuat serial objek dalam format SOAP. Untuk bekerja dengan serialisasi SOAP, anda harus memasukkan System.Runtime.Serialization.Formatters.Sapukan ruang nama dalam program anda. Perhatikan bahawa seperti Serialisasi XML, objek yang bersiri menggunakan serialisasi SOAP akan berterusan sebagai XML.

Serialisasi XML

XML Serialization adalah sejenis serialisasi yang digunakan untuk membuat serial bagi anggota awam contoh kelas ke aliran XML. Perhatikan bahawa serialisasi XML lambat berbanding serialisasi Binari - sebenarnya jauh lebih perlahan. Kelebihan utama serialisasi XML ialah ia menyediakan sokongan lintas platform dan kerana berdasarkan teks, ia dapat dibaca dan juga dapat diedit. Anda boleh memanfaatkan XmlAttribute dan meletakkannya pada properti untuk membolehkan properti tersebut diserialkan menggunakan XML serialization. Coretan kod berikut menggambarkan bagaimana anda boleh menggunakan XmlAttribute pada harta tanah.

[XmlAttribute("productName")]

public string ProductName

{

  get

  {

    return productName;

  }

  set

  {

    productName = value;

  }

}

Untuk membuat siri dan menghilangkan siri objek menggunakan serialisasi XML, anda boleh menggunakan XmlSerializer. Coretan kod berikut menunjukkan bagaimana anda dapat membuat siri objek dengan 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 tersuai

Anda dapat memanfaatkan serialisasi khusus untuk mengawal bagaimana contoh jenis dapat diserialisasikan dan didesialisasikan. Anda boleh melaksanakan serialisasi tersuai dengan menerapkan antara muka yang dapat diseragamkan. Antara muka ISerializable menyatakan kaedah GetObjectData (). Coretan kod berikut menggambarkan bagaimana anda dapat menerapkan teknik serialisasi tersuai dengan menerapkan antara muka ISerializable.

[Serializable]

public class Product : ISerializable

{

    public void GetObjectData(SerializationInfo info, StreamingContext context)

    {

        //Usual code

    }

}