সংজ্ঞা
- বাইনারি সিরিয়ালাইজেশন: একটি অবজেক্টকে মানব-পঠনযোগ্য নন-বাইনারি ফরম্যাটে রূপান্তর করা
- ডিসিরিয়ালাইজেশন: বাইনারি ফরম্যাট থেকে আবার অবজেক্টে রূপান্তর করা
প্রয়োজনীয় লাইব্রেরি
using System.Runtime.Serialization.Formatters.Binary;
নোট: .NET Core / .NET 5+ এ BinaryFormatter সিকিউরিটি কারণে অবমূল্যায়িত (Obsolete)। বদলে System.Text.Json বা protobuf-net ব্যবহার করা উচিত।
সিরিয়ালাইজেশন উদাহরণ
[Serializable]
public class Demo {
public string ApplicationName { get; set; } = "Binary Serialize";
public int ApplicationId { get; set; } = 1001;
}
class Program {
static void Main() {
Demo sample = new Demo();
using (FileStream fs = new FileStream(@"C:\Temp\Questions.dat", FileMode.Create)) {
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, sample);
}
Console.WriteLine("সিরিয়ালাইজেশন সম্পন্ন");
Console.ReadKey();
}
}
ডিসিরিয়ালাইজেশন উদাহরণ
[Serializable]
public class Demo {
public string ApplicationName { get; set; }
public int ApplicationId { get; set; }
}
class Program {
static void Main() {
using (FileStream fs = new FileStream(@"C:\Temp\Questions.dat", FileMode.Open)) {
BinaryFormatter formatter = new BinaryFormatter();
Demo deserialized = (Demo)formatter.Deserialize(fs);
Console.WriteLine($"ApplicationName: {deserialized.ApplicationName}");
Console.WriteLine($"ApplicationId: {deserialized.ApplicationId}");
}
Console.ReadKey();
}
}
আউটপুট:
ApplicationName: Binary Serialize ApplicationId: 1001
গুরুত্বপূর্ণ নোটস
- ক্লাসে
[Serializable]অ্যাট্রিবিউট বাধ্যতামূলক - প্রাইভেট ফিল্ডও সিরিয়ালাইজ হয়
[NonSerialized]দিয়ে ফিল্ড বাদ দেওয়া যায়- ভার্সন টলারেন্স জন্য
OptionalFieldব্যবহার করুন - সিকিউরিটি সতর্কতা: অ-भরোসামন্দ সোর্স থেকে ডিসিরিয়ালাইজ করবেন না (RCE ঝুঁকি)
আধুনিক বিকল্প (প্রস্তাবিত)
// System.Text.Json (নিরাপদ, দ্রুত, ক্রস-প্ল্যাটফর্ম)
var json = JsonSerializer.Serialize(obj);
var obj2 = JsonSerializer.Deserialize<Demo>(json);