উত্তর:
আপনি যখন একটি নেট ফ্রেমওয়ার্ক অ্যাপ্লিকেশনটিতে কোনও অবজেক্ট তৈরি করেন, তখন আপনাকে কীভাবে মেমরিতে ডেটা সংরক্ষণ করা হয় তা নিয়ে ভাবার দরকার নেই। কারণ। নেট ফ্রেমওয়ার্ক আপনার জন্য এটি যত্ন করে। যাইহোক, আপনি যদি কোনও ফাইলের মধ্যে কোনও সামগ্রীর বিষয়বস্তু সংরক্ষণ করতে চান, অন্য কোনও প্রক্রিয়াতে কোনও বস্তু প্রেরণ করতে পারেন বা এটি নেটওয়ার্ক জুড়ে প্রেরণ করতে চান তবে আপনাকে কীভাবে অন্য একটি বিন্যাসে রূপান্তরিত করতে হবে তা আপনাকে কীভাবে উপস্থাপন করা হবে তা নিয়ে ভাবতে হবে । এই রূপান্তরটিকে সিরিয়ালাইজেশন বলা হয়।
সিরিয়ালাইজেশন বিকাশকারীকে কোনও সামগ্রীর অবস্থা বাঁচাতে এবং প্রয়োজন অনুসারে পুনরায় তৈরি করতে, অবজেক্টগুলির সঞ্চয় এবং ডেটা এক্সচেঞ্জ প্রদানের অনুমতি দেয়। সিরিয়ালাইজেশনের মাধ্যমে, কোনও বিকাশকারী কোনও ওয়েব সার্ভিসের মাধ্যমে কোনও বিষয়টিকে দূরবর্তী অ্যাপ্লিকেশনটিতে প্রেরণ করা, একটি ডোমেন থেকে অন্য ডোমেইনে কোনও বস্তুটি প্রেরণ করা, কোনও এক্সএমএল স্ট্রিং হিসাবে ফায়ারওয়ালের মাধ্যমে কোনও বস্তুটি পাস করা, বা সুরক্ষা বা ব্যবহারকারী-নির্দিষ্ট বজায় রাখার মতো ক্রিয়া সম্পাদন করতে পারে অ্যাপ্লিকেশন জুড়ে তথ্য।
SerializableAttributeএই ধরণের উদাহরণগুলি সিরিয়ালযুক্ত করা যেতে পারে তা বোঝাতে কোনও প্রকারে প্রয়োগ করুন । SerializableAttributeএমনকি শ্রেণিটি ISerializableসিরিয়ালকরণ প্রক্রিয়া নিয়ন্ত্রণ করতে ইন্টারফেস প্রয়োগ করে এমনকি প্রয়োগ করুন ।
প্রকারের দ্বারা চিহ্নিত একটি ধরণের সমস্ত সরকারী এবং ব্যক্তিগত ক্ষেত্রগুলি SerializableAttributeডিফল্টরূপে সিরিয়ালাইজড হয়, যদি না টাইপটি ISerializableসিরিয়ালাইজেশন প্রক্রিয়াটিকে ওভাররাইড করার জন্য ইন্টারফেসটি প্রয়োগ না করে। ডিফল্ট সিরিয়ালাইজেশন প্রক্রিয়াটি চিহ্নিত ক্ষেত্রগুলি বাদ দেয় NonSerializedAttribute। যদি সিরিয়ালাইজযোগ্য ধরণের কোনও ক্ষেত্রে কোনও পয়েন্টার, একটি হ্যান্ডেল বা কোনও নির্দিষ্ট ডেটা স্ট্রাকচার থাকে যা একটি নির্দিষ্ট পরিবেশের সাথে সুনির্দিষ্ট থাকে এবং অর্থপূর্ণভাবে অন্য পরিবেশে পুনর্গঠন না করা যায়, তবে আপনি NonSerializedAttributeসেই ক্ষেত্রে প্রয়োগ করতে চাইতে পারেন ।
আরও তথ্যের জন্য এমএসডিএন দেখুন ।
সম্পাদনা 1
কোনও কিছু সিরিয়ালযোগ্য হিসাবে চিহ্নিত না করার কোনও কারণ
ডেটা স্থানান্তর বা সংরক্ষণ করার সময়, আপনাকে কেবল প্রয়োজনীয় ডেটা প্রেরণ বা সংরক্ষণ করতে হবে। সুতরাং স্থানান্তর বিলম্ব এবং স্টোরেজ সমস্যা কম থাকবে। সুতরাং সিরিয়ালকরণের সময় আপনি অযৌক্তিকভাবে ডেটা বেছে নিতে পারেন।
[Serializable]বৈশিষ্ট্যের জন্য কিছু ব্যবহারিক ব্যবহার :
BinaryFormatterশ্রেণিটি দেখুন unClipboard.SetData()বোর্ডগুলির লেখার ক্লাসগুলি ক্লিপবোর্ডে ব্যবহার করে সংরক্ষণ করা যেতে পারে - ননসেরিয়ালাইজেবল ক্লাসগুলি ক্লিপবোর্ডে স্থাপন করা যায় না।MarshalByRefObject) অবশ্যই সিরিয়ালযোগ্য হবে।এগুলি সর্বাধিক সাধারণ ব্যবহারের কেস যা আমি জুড়ে এসেছি।
যেহেতু মূল প্রশ্নটি সিরিয়ালাইজেবল অ্যাট্রিবিউট সম্পর্কে ছিল, তবে এটি লক্ষ করা উচিত যে বাইনারি ফর্ম্যাটর বা সোপফর্ম্যাটর ব্যবহার করার সময় এই বৈশিষ্ট্যটি কেবলমাত্র প্রয়োগ হয়।
এটি কিছুটা বিভ্রান্তিকর, যদি না আপনি প্রকৃতপক্ষে বিশদটির প্রতি মনোযোগ দিন, এটি কখন ব্যবহার করবেন এবং এর আসল উদ্দেশ্য কী।
এটি এক্সএমএল বা জেএসএন সিরিয়ালাইজেশনের সাথে কিছু করার নেই।
সিরিয়ালাইজেবলঅ্যাট্রিবিউটের সাথে ব্যবহৃত হ'ল ইশিরাইজযোগ্য ইন্টারফেস এবং সিরিয়ালাইজেশন ইনফো ক্লাস। এগুলি শুধুমাত্র বাইনারিফর্মেটর বা সোপফর্মেটর দিয়ে ব্যবহৃত হয়।
আপনি যদি বাইনারি বা সাবান ব্যবহার করে আপনার ক্লাসিকে সিরিয়ালকরণের পরিকল্পনা না করেন তবে আপনার শ্রেণিটিকে [সিরিয়ালাইজযোগ্য] হিসাবে চিহ্নিত করার জন্য বিরক্ত করবেন না। এক্সএমএল এবং জেএসএন সিরিয়ালাইজাররা এর অস্তিত্ব সম্পর্কে সচেতন নয়।
Serializableনা এবং বৈশিষ্ট্যটি কখন সরিয়ে ফেলা হয়েছিল সেগুলি ছাড়া সম্পত্তিটির নামগুলি পূর্ববর্তী আন্ডারস্কোর সহ বেরিয়েছিল । সুতরাং কিছু হস্তক্ষেপ সম্ভব।
সিরিয়ালাইজেশন হ'ল বস্তুটিকে সঞ্চয় বা মেমরি, একটি ডাটাবেস বা কোনও ফাইলে স্থানান্তরিত করার জন্য কোনও বাইটের প্রবাহে রূপান্তর করার প্রক্রিয়া।
সিরিয়ালাইজেশন কীভাবে কাজ করে
এই চিত্রণটি সিরিয়ালকরণের সামগ্রিক প্রক্রিয়াটি দেখায়।
অবজেক্টটি একটি স্ট্রিমায় সিরিয়ালযুক্ত করা হয়েছে, যা কেবলমাত্র ডেটাই নয়, অবজেক্টের ধরণ, যেমন সংস্করণ এবং সমাবেশের নাম সম্পর্কিত তথ্য বহন করে। সেই স্ট্রিম থেকে, এটি একটি ডাটাবেস, একটি ফাইল বা মেমরিতে সংরক্ষণ করা যেতে পারে।
সিরিয়ালাইজেশন কীভাবে কাজ করে তার সংক্ষিপ্ত উদাহরণ এখানে। আমি একই সম্পর্কে শিখছিলাম এবং আমি দুটি লিঙ্ক দরকারী বলে মনে করি। সিরিয়ালাইজেশন কী এবং কীভাবে এটি নেট থেকে করা যায় ।
সিরিয়ালাইজেশন ব্যাখ্যা করে একটি নমুনা প্রোগ্রাম
আপনি যদি উপরের প্রোগ্রামটি না বুঝতে পারেন তবে ব্যাখ্যা সহ একটি খুব সাধারণ প্রোগ্রাম এখানে দেওয়া হল ।
ধারাবাহিকতাতে
সিরিয়ালাইজেশন হ'ল কোনও বস্তু বা সামগ্রীর গ্রাফকে একটি স্ট্রিমে রূপান্তর করার প্রক্রিয়া, এটি বাইনারি ক্রমিকরণের ক্ষেত্রে বাইট অ্যারে হয়
সিরিয়ালাইজেশন ব্যবহার
নীচে কিছু দরকারী কাস্টম অ্যাট্রিবিউটস যা কোনও বস্তুর ক্রমিকায়নের সময় ব্যবহৃত হয় during
[সিরিয়ালাইজযোগ্য] -> আমরা যখন কোনও জিনিসের সিরিয়ালাইজযোগ্য [ননশিরাইজড] চিহ্নিত করি তখন এটি ব্যবহার করা হয় -> যখন আমরা কোনও বস্তুর ক্ষেত্রটি সিরিয়াল করতে চাই না তখন এটি ব্যবহৃত হয়। [অনারাইজালাইজিং] -> যখন আমরা কোনও বস্তুকে সিরিয়ালাইজ করার সময় কিছু ক্রিয়াকলাপ করতে চাই তখন এটি ব্যবহৃত হয় [অনারাইজালাইজড] -> যখন কোনও বস্তুকে স্রোতে পরিণত করার পরে আমরা কিছু ক্রিয়া করতে চাই তখন এটি ব্যবহৃত হয়।
নীচে সিরিয়ালকরণের উদাহরণ দেওয়া হল
[Serializable]
internal class DemoForSerializable
{
internal string Fname = string.Empty;
internal string Lname = string.Empty;
internal Stream SerializeToMS(DemoForSerializable demo)
{
DemoForSerializable objSer = new DemoForSerializable();
MemoryStream ms = new MemoryStream();
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(ms, objSer);
return ms;
}
[OnSerializing]
private void OnSerializing(StreamingContext context) {
Fname = "sheo";
Lname = "Dayal";
}
[OnSerialized]
private void OnSerialized(StreamingContext context)
{
// Do some work after serialized object
}
}
এখানে কলিং কোড
class Program
{
string fname = string.Empty;
string Lname = string.Empty;
static void Main(string[] args)
{
DemoForSerializable demo = new DemoForSerializable();
Stream ms = demo.SerializeToMS(demo);
ms.Position = 0;
DemoForSerializable demo1 = new BinaryFormatter().Deserialize(ms) as DemoForSerializable;
Console.WriteLine(demo1.Fname);
Console.WriteLine(demo1.Lname);
Console.ReadLine();
}
}
What is it?stackoverflow.com/questions/3429921/ কি-does