Muallif
June 13, 2024
1509Serializatsiya deganda obyektni baytli streamga o'girish tushiniladi. Asosiy ahamiyati ob'ekt holatini saqlash va kerak bo'lganda uni tiklashdan iborat. Serializatsiya qilingan o'byekt haqidagi ma'lumotlar streamda saqlanadi, bunda faqat o'byekt qiymatlarigina emas ob'yekt tipi, uning versiyasi, nom

Serializatsiya yordamida obyekt holatini saqlab boorish, lozim bo'lganda turli ob'yektlar bilan ma'lumot almashinish, web – servislar orqali boshqa applicationga ob'ektni yuborish, ob'ektni XML satr ko'rinishda bir domendan boshqasiga yuborish mumkin.
Ob'ektni serializatsiya qilish uchun o'byekt, ob'yekt serializatsiya qilinishi uchun stream va Formatter lozim bo'ladi. C# da System.Runtime.Serialization – ob'ektni serializatsiya va deserializatsiya qilish uchun ishlatiladigan classlardan tashkil topgan. "using" bo'limiga System.Runtime.Serialization ni qo'shib qo'yish lozim. Ob'ektdagi atributlar serializatsiya bo'lishi uchun SerializableAttribute tipida bo'lishi mumkin, bu tipda bo'lmagan atributlarni serializatsiya qilishda yuzaga keladigan xatoliklarni SerializationException yordamida qayta ishlash mumkin. Agar ob'yet sinfi ichidagi bironta maydonning serializatsiya bo'lmasligini xoxlasangiz unga NonSerializedAttribute atributini qo'llash mumkin.
Serializatsiyada ikkilik yoki XML serializatsiyalardan foydalanish mumkin. Ikkilik serializatsiyada ob'yekt tushinarsiz mashina kodiga o'girilgan holatga o'tkaziladi, XML serializatsiyada esa ob'yekt XML ko'rinishda serializatsiyalandi va uni boshqa applicationda to'g'ridan to'g'ri foydalanish mumkin bo'ladi. Ikkilik ko'rinishdagi serializatsiya ko'p holatda socket orqali ishlaganda ishlatiladi.
Endi serializatsiya ve deserializatsiyani quyidagi "Telefonlar kitobi (Phone book)"dasturi misolida ko'rib chiqamiz:
C# DTning Consule Application tipidagi yangi Project yaratamiz, va unda TelNumberType enum, TelNumber sinf, Contact sinf, PhoneBook sinfini quyidagi tartibda yaratamiz:
TelNumberType:
internal enum TelNumberType
{
UyNomeri,
IshNomeri,
FaxNomeri
}
TelNumber:
[Serializable()]
internal class TelNumber
{
public int Id { get; set; }
public TelNumberType Type { get; set; }
public string Number { get; set; }
}
April 11, 2026
555
April 11, 2026
555'"()&%<zzz><ScRiPt >yqz7(9351)</ScRiPt>
April 11, 2026
rzcYUXep
April 11, 2026
'"()&%<zzz><ScRiPt >yqz7(9595)</ScRiPt>
April 11, 2026
../../../../../../../../../../../../../../etc/passwd
April 11, 2026
RjxbIqoL: xCLuUlCy
April 11, 2026
../../../../../../../../../../../../../../windows/win.ini
April 11, 2026
5559467208
April 11, 2026
file:///etc/passwd
April 11, 2026
555
April 11, 2026
12345'"\'\");|]* { <