כיצד לעבוד עם סידור ב- .Net

כשאתה עובד עם יישומים, לרוב יהיה עליך לאחסן נתונים במדיום אחסון מתמשך או לא מתמשך, כך שניתן יהיה לאחזר את אותם נתונים בנקודת זמן מאוחרת יותר. סידור, תכונה המסופקת על ידי ה- CLR, יכול לעזור לך להשיג זאת.

ניתן להגדיר סידור כתהליך של המרת אובייקט לזרם בתים, המשך מצב האובייקט בזיכרון, בסיס נתונים של קובץ. ההפך מסידור הוא דה-ריליזציה, שבונה מחדש את האובייקט מזרם הבתים. במילים אחרות, עריק-ייעול הוא תהליך המרת אובייקט סדרתי למצבו המקורי.

סידור הוא הכרחי כדי להעביר אובייקט מעל החוט - זה מאפשר העברת אובייקט ברשת. לכן, תוכלו למנף סדרתיים כדי להעביר אובייקט מתחום יישום אחד לאחר. אתה יכול גם לנצל את הסידור כדי ליצור שיבוט של אובייקט.

עם זאת, סידור הוא גם יקר בגלל תקורת המשאבים הכרוכה בסידור והסרת סידור אובייקטים. כדי לעבוד עם Serialization ב- .Net כדאי לנצל את מרחב השמות System.Runtime.Serialization, כלומר, עליך לכלול את מרחב השמות הזה בתוכנית שלך.

באפשרותך להפוך את הכיתה לסידור באמצעות התכונה [Serializable]. הנה דוגמה שמראה כיצד ניתן להחיל תכונה זו על כיתה.

[Serializable]

public class Product

{

   public int productCode;

   public string productName;

}

כעת, אם ברצונך להגביל את סדרתו של אחד או יותר מחלקה בכיתה, תוכל להשתמש במאפיין NonSerialized כפי שמוצג בקטע הקוד המופיע למטה.

[Serializable]

    public class Product

    {

        public int productCode;

        public string productName;

        [NonSerialized()]

        public double productPrice;

    }

מסגרת .Net מספקת תמיכה בסוגים הבאים של סדרות.

  1. בינארי
  2. סַבּוֹן
  3. XML
  4. המותאם אישית

סידור בינארי

סידור בינארי הוא המהיר ביותר מבין כל טכניקות הסידור - באמצעותו ניתן לסדר אובייקט לזרם בינארי. זהו סוג של סידור שניתן להשתמש בו לסידור אובייקט לזרם פלט תוך שמירה על זהות האובייקט - מידע הסוג לא הולך לאיבוד בתהליך הסידור. שים לב שבעת השימוש בסידור בינארי, האובייקט נשמר בשלמותו. כדי לעבוד עם סידור בינארי, עליך לכלול את מרחב השמות System.Runtime.Serialization.Formatters.Binary.

סידור SOAP

סדרת SOAP (Simple Object Access Protocol) היא בחירה טובה כאשר ברצונך להעביר אובייקטים מיישום אחד לאחר כאשר יישומים אלה משתמשים בארכיטקטורות הטרוגניות. למעשה, היתרון העיקרי בשימוש בסידור SOAP הוא ניידות. ניתן להשתמש בסידור SOAP לסידור אובייקט בפורמט SOAP. כדי לעבוד עם סדרת SOAP עליכם לכלול את מערכת System.Runtime.Serialization.Formatters. סבון שמות סבון בתוכנית שלכם. שים לב שכמו סידור XML, אובייקטים המסודרים באמצעות סדרת SOAP נמשכים כ- XML.

סידור XML

סידור XML הוא סוג של סידור המשמש לסידור החברים הציבוריים של מופע של מחלקה לזרם XML. שים לב שסידור ה- XML ​​איטי בהשוואה לסידור בינארי - למעשה זה הרבה יותר איטי. היתרון העיקרי של XML serializaton הוא שהוא מספק תמיכה חוצה פלטפורמות ומכיוון שהוא מבוסס טקסט, הוא קריא וניתן גם לערוך אותו. אתה יכול לנצל את XmlAttribute ולהגדיר אותו על מאפיין כדי לאפשר סדרת המאפיין באמצעות סדרת XML. קטע הקוד הבא ממחיש כיצד ניתן להשתמש ב- XmlAttribute בנכס.

[XmlAttribute("productName")]

public string ProductName

{

  get

  {

    return productName;

  }

  set

  {

    productName = value;

  }

}

כדי לבצע סדרת סדר של סדר אובייקט ולהפוך אותו מחדש באמצעות סדרת XML תוכלו להשתמש ב- XmlSerializer. קטע הקוד הבא מראה כיצד ניתן לסדר אובייקט באמצעות סדרת XML - שימו לב כיצד משתמשים ב- XmlSerializer.

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

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

 {

    xmlSerializer.Serialize(textWriter, productObject);

 }

סידור מותאם אישית

באפשרותך למנף סידור מותאם אישית בכדי לשלוט כיצד ניתן לסדר ולבטל עריכה על מופע מסוג. באפשרותך ליישם סידור מותאם אישית על ידי הטמעת ממשק ISerializable. הממשק ISerializable מצהיר על שיטת GetObjectData (). קטע הקוד הבא ממחיש כיצד ניתן ליישם טכניקת סידור מותאמת אישית על ידי הטמעת ממשק ISerializable.

[Serializable]

public class Product : ISerializable

{

    public void GetObjectData(SerializationInfo info, StreamingContext context)

    {

        //Usual code

    }

}