সিরিয়ালাইজেশন কী?


149

আমি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (ওওপি) দিয়ে শুরু করছি এবং জানতে চাই: ওওপি পার্লেন্সে সিরিয়ালাইজেশনটির অর্থ কী?


এছাড়াও এই নিবন্ধটি যা ব্যবহার ধারাবাহিকতাতে কেন নয় ব্যাখ্যা কটাক্ষপাত করা codeproject.com/KB/dotnet/noserialise.aspx
Nipuna

4
নিবন্ধটি সম্পূর্ণ বিএস, সুতরাং এর রেটিং।
রেডএসস

গুগলে অনুসন্ধান করা তাত্ক্ষণিক উত্তর দেবে বলে এটি কি খুব বেশি বিস্তৃত প্রশ্নগুলির মতো নয় যা সাধারণত সরানো হয়?
আরভিমেটাল

2
পছন্দ করেছেন আমি যখন
গুগল

উত্তর:


143

সিরিয়ালাইজেশন হ'ল কোনও বস্তুকে মেমরির বাইটের প্রবাহে পরিণত করার প্রক্রিয়া যাতে আপনি এটি ডিস্কে সঞ্চয় করতে বা নেটওয়ার্কে পাঠাতে পারেন stuff

ডিসরিয়ালাইজেশন হ'ল বিপরীত প্রক্রিয়া: মেমরিতে কোনও বাইটের স্রোতটিকে কোনও বস্তুতে পরিণত করে।


46
এছাড়াও, ক্রিয়াগুলি Marshalএবং Unmarshalএর সমার্থক শব্দ Serializeএবং Deserialize
উলফগারপ্রো

4
মেমরির কোনও অবজেক্টটি কি ইতিমধ্যে সর্বনিম্ন স্তরে বাইট হিসাবে উপস্থাপিত হয় না?
mahacoder

3
মেমরির কোনও বস্তু সংকলক, ওএস এবং / অথবা হার্ডওয়্যার দ্বারা ফর্ম্যাট করা হবে। আপনার সংকলক পরিবর্তন করুন এবং আপনি আপনার ফর্ম্যাট পরিবর্তন করুন। একটি সিরিয়ালযুক্ত অবজেক্টের আপনার কোড দ্বারা সংজ্ঞায়িত ফর্ম্যাট থাকবে, যাতে আপনি ফর্ম্যাটটির গ্যারান্টি দিতে পারেন। কোনও নেটওয়ার্ক জুড়ে বস্তু প্রেরণের সময় এটিও সহায়ক - গ্রহণকারী মেশিনটির সম্পূর্ণ ভিন্ন স্থাপত্য থাকতে পারে (এবং মেমরির উপস্থাপনায়)।
অ্যান্ড্রু বার্নেট

1
সুতরাং এটি একটি স্ট্রিং এ পরিণত?
নোকনাম

1
একটি স্ট্রিং একটি বৈধ বিন্যাস হতে পারে, তবে এটি স্ট্রিং হতে হবে না। স্ট্রিংগুলির নিজস্ব ফর্ম্যাট রয়েছে (এএসসিআইআই, ইউটিএফ 8, ইউটিএফ 16, ইসিসিডিআইসি ...) এবং বাস্তবে মোটামুটিভাবে ধারণাটি প্রদর্শন করে। স্ট্রিং (একটি ইন-মেমোরি অবজেক্ট) (ASCII) বা (ইউটিএফ 16) abcহিসাবে সিরিয়ালাইজ করা হবে - NUL টার্মিনেটর বা এনকোড দৈর্ঘ্যের মতো জিনিসের সাথে বা ছাড়াই। 0x61 0x62 0x630x00 0x61 0x00 0x62 0x00 0x63
অ্যান্ড্রু বার্নেট

91

সহজভাবে বলতে গেলে সিরিয়ালাইজেশন হ'ল কোনও বস্তুকে বাইটের প্রবাহে রূপান্তর করার প্রক্রিয়া যাতে এটি একটি নেটওয়ার্কের মাধ্যমে স্থানান্তরিত হতে পারে বা একটি অবিরাম স্টোরেজে সঞ্চয় করা যায়।

ডিসরিয়ালাইজেশন হ'ল বিপরীত - নেটওয়ার্ক বা অধ্যবসায় স্টোরেজ থেকে বাইটের একটি স্ট্রিম আনুন এবং এটিকে একই অবস্থায় আবার অবজেক্টে রূপান্তর করুন ।

বোঝার বিষয় হ'ল কীভাবে সেই বাইটগুলির স্ট্রিমটি ব্যাখ্যা করা বা ম্যানিপুলেটেড করা হয় যাতে আমরা সঠিক একই অবজেক্ট / একই অবস্থা পাই get তা অর্জনের বিভিন্ন উপায় রয়েছে। এর মধ্যে কয়েকটি হ'ল -

  1. এক্সএমএল : অবজেক্টকে এক্সএমএলে রূপান্তর করুন, এটি একটি নেটওয়ার্কের মাধ্যমে স্থানান্তর করুন বা একটি ফাইল / ডিবিতে সঞ্চয় করুন। এটি পুনরুদ্ধার করুন এবং একই অবস্থায় এটিতে আবার রূপান্তর করুন। জাভাতে আমরা জ্যাকএক্সবি (এক্সএমএল বাইন্ডিংয়ের জন্য জাভা আর্কিটেকচার) ব্যবহার করি ((জাভা From থেকে এটি জেডিকে বান্ডিলযুক্ত আসে)।
  2. তাদেরকে JSON : একই আপত্তি রূপান্তর দ্বারা করা সম্ভব তাদেরকে JSON (জাভাস্ক্রিপ্ট অবজেক্ট নোটেশনে)। আবার জিএসওএন লাইব্রেরি রয়েছে যা এর জন্য ব্যবহার করা যেতে পারে।
  3. অথবা আমরা সিরিয়ালাইজেশনটি ব্যবহার করতে পারি যা নিজেই ওওপি ভাষা দ্বারা সরবরাহ করা হয়। উদাহরণস্বরূপ, জাভাতে আপনি কোনও অবজেক্টকে আমার ক্রিয়েটিভ করতে পারেন এটি প্রয়োগ করে Serializable interfaceএবং অবজেক্ট স্ট্রিমে লিখতে।

@ অনিকেটঠাকুর একটি খুব ভাল ব্যাখ্যা, আপনি কি আমার সম্পর্কে JSONস্ক্র্যাচ থেকে শিখতে একটি লিঙ্ক সরবরাহ করতে পারেন , কারণ আমি এ সম্পর্কে কিছুই জানি না
কাসুন সায়াম্বলাপিতিয়ায়

যখনই আমরা সিরিয়ালাইজেশন সম্পর্কে কথা বলি কেন আমরা সর্বদা কেবলমাত্র অবজেক্টটি উল্লেখ করি। আমরা ফাংশনাল ল্যাঙ্গুয়েজে সিরিয়ালাইজেশন ব্যবহার করতে পারি না যেখানে আমরা নেটওয়ার্কের মাধ্যমে স্থানান্তর করার জন্য ফাইলগুলি ব্যবহার করি তার চেয়ে আমাদের কোনও বিষয় নেই।
পারদীপ শর্মা

1
প্রথমত, আমাদের কেন কোনও জিনিসকে বাইট এবং স্ট্রিমের স্ট্রিমে রূপান্তর করতে হবে? যে ব্যবহারকারী এটি করার চেষ্টা করছেন তাদের জন্য কেন এটি অন্তর্নিহিত অপারেশন নয়?
অপর্ণা ছাগানতি

1
যদি আমরা জেএসএন বা এক্সএমএল ব্যবহার করতে পারি তবে আমাদের কেন প্রয়োজন বা বলছে যে এগুলি প্রবাহের বাইটে রূপান্তরিত করতে পারে? এবং তারপরে আমরা এগুলিকে কেবল বাইটে রূপান্তর না করে কেবল জেএসএন বা এক্সএমএলে সংরক্ষণ করি।
মুহাম্মদ ফয়জান ফরিদ

78

ছবির মাধ্যমে সাধারণ ব্যাখ্যা:

রেক্স, আমার কুকুর, সিরিয়ালাইজড!

সাদৃশ্য দ্বারা ব্যাখ্যা:

ধরুন আমি আমার বন্ধুকে ফোনে কথা বলছি এবং আমি তাকে আমার নতুন কুকুরছানা সম্পর্কে বলছি।

এখানে আমার সমস্যা: কুকুরছানা একটি জীবন্ত, শ্বাস-প্রশ্বাসের স্তন্যপায়ী প্রাণী। আমি কীভাবে ফোনের লাইনে একটি কুকুরছানা বোঝাতে চাইছি? আমি শারীরিকভাবে আমার কুকুরছানাটিকে আমার ফোন রিসিভারে রাখতে পারি না।

সুতরাং পরিবর্তে, আমাকে ফোনে কুকুরছানাটির একটি প্রতিনিধিত্ব জানাতে হবে। অন্য কথায়, আমি তখন আমার কুকুর রেক্সকে সিরিয়ালাইজ করি, এবং আমি তাকে ফোন লাইনের মাধ্যমে রেক্সের ক্রমিক সংস্করণটি প্রেরণ করি:

{ "name":"Rex", "age":5, "favourite_food": pedigree_choice_cuts, "favourite_game": fetch_ball, "favourite_hobby": wagging_tail }

এটি একটি নিখুঁত প্রতিনিধিত্ব - আমার কুকুরের সিরিয়ালাইজেশন।

সারসংক্ষেপ:

সিরিয়ালাইজেশন বলতে মূলত আমার কুকুর রেক্সকে অন্য কিছুতে রূপান্তরিত করে - একটি জেএসওএন অবজেক্ট - যা পরে ফোন লাইন ধরে 1s এবং 0 এর সিরিজ হিসাবে স্থানান্তরিত হতে পারে। NYC এ আমার বন্ধুটি তখন সেই 1s এবং 0s কে JSON অবজেক্টে আবার অনুবাদ করতে পারে - যাতে তার আমার কুকুর রেক্সের নিখুঁত প্রতিনিধিত্ব থাকে।


16

এটি দেখুন, এটি আপনাকে একটি ভাল ব্যাখ্যা দেবে:

http://en.wikipedia.org/wiki/Serialization

আমি মনে করি সিরিয়ালাইজেশন শব্দটির সর্বাধিক প্রচলিত ব্যবহার একটি বাইনারি অবজেক্টকে এক্সএমএল (বা অন্যান্য স্ট্রিং) উপস্থাপনায় রূপান্তর করার সাথে সম্পর্কিত যাতে এটি কোনও ডাটাবেস / ফাইলে সংরক্ষণ করা যায় বা একটি ওয়েব পরিষেবা কলের মাধ্যমে নেটওয়ার্ক জুড়ে প্রেরণ করা যায়। ডিসরিয়ালাইজেশন হ'ল বিপরীত প্রক্রিয়া - একটি এক্সএমএল / স্ট্রিংকে কোনও বস্তুতে ফিরে রূপান্তর।

সম্পাদনা: আপনি যে শব্দটি ব্যবহার করতে পারেন তা হ'ল মার্শেলিং / আনমারশেলিং। মার্শালিং মূলত সিরিয়ালাইজিংয়ের মতো একই ধারণা, এবং আনমারশেলিংকে deserializing হিসাবে একই।


3
অগত্যা কেবল এক্সএমএল নয়, এটি কোনও উপস্থাপনা, এমনকি দ্বিপাক্ষিক উপস্থাপনাও হতে পারে
ম্যাথু ফারওয়েল

7

সিরিয়ালাইজেশন হ'ল অবজেক্টটিকে সঞ্চয় বা মেমরি, ডাটাবেস, বা একটি ফাইলে স্থানান্তরিত করার জন্য কোনও বাইটের প্রবাহে রূপান্তর করার প্রক্রিয়া । প্রয়োজনের সময় পুনরায় তৈরি করতে সক্ষম হওয়ার জন্য এটির মূল উদ্দেশ্য হ'ল কোনও সামগ্রীর অবস্থা সংরক্ষণ করা। বিপরীত প্রক্রিয়া বলা হয় deserialization।

...

এই চিত্রণ সিরিয়ালাইজেশন সামগ্রিক প্রক্রিয়া দেখায়

সিরিয়ালাইজেশন সামগ্রিক প্রক্রিয়া

...

সিরিয়ালাইজেশনের মাধ্যমে, কোনও বিকাশকারী কোনও ওয়েব সার্ভিসের মাধ্যমে কোনও বিষয়টিকে একটি দূরবর্তী অ্যাপ্লিকেশনটিতে প্রেরণ করা, একটি ডোমেন থেকে অন্য ডোমেনে কোনও বস্তুটি প্রেরণ করা, কোনও এক্সএমএল স্ট্রিং হিসাবে ফায়ারওয়ালের মাধ্যমে কোনও বস্তুকে পাস করা, বা সুরক্ষা বা ব্যবহারকারী-নির্দিষ্ট বজায় রাখার মতো ক্রিয়া সম্পাদন করতে পারে অ্যাপ্লিকেশন জুড়ে তথ্য

Https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/serialization/ থেকে

(জোর আমার)


5

সিরিয়ালাইজেশন হ'ল আনর্ডার্ড করা ডেটা (যেমন কোনও কোনও অবজেক্ট) টোকেনের একটি সিরিজে রূপান্তর করার প্রক্রিয়া যা পরে মূল তথ্য পুনর্গঠন করতে ব্যবহার করা যেতে পারে। সিরিয়ালযুক্ত ফর্মটি প্রায়শই পাঠ্যের একটি স্ট্রিং থাকে তবে তা হবার দরকার হয় না।


2

সিরিয়ালাইজেশন একটি বস্তুকে স্ট্যাটাস বিট সিকোয়েন্সে রূপান্তর করছে।

যাতে আপনি এই সিকোয়েন্সটি কোনও ফাইলে, ডিবিতে বা নেটওয়ার্কের মাধ্যমে পাঠাতে পারেন।

পরবর্তীতে আপনি এটিকে আসল অবজেক্টে ডিসরিয়ালাইজ করতে পারেন এবং যখনই আপনি চান এটি পুনরায় ব্যবহার করতে পারেন।

ওয়েব সার্ভিসেস এবং এজেএক্স সিরিয়ালাইজেশনের সর্বাধিক সাধারণ উদাহরণ। ক্লায়েন্টের প্রতিক্রিয়া প্রেরণের আগে অবজেক্টগুলি সিরিয়ালযুক্ত।


1

সিরিয়ালাইজেশন জাভা সমর্থিত অবজেক্ট ফাইল সমর্থিত ফর্মটিতে স্থানান্তর করা ছাড়া আর কিছুই নয়

                         (OR)

জাভা সমর্থিত ফর্মটিকে নেটওয়ার্ক সমর্থিত ফর্মে রূপান্তর করা .. সিরিয়ালাইজেশনের মূল ক্ষেত্রটি এক স্তর থেকে অন্য স্তরে ডেটা স্থানান্তর করা ছাড়া কিছুই নয় ... কেবল সিরিয়ালাইজড অবজেক্টস যা আমরা নেটওয়ার্কের মাধ্যমে প্রেরণ করতে পারি ..


1

সিরিয়ালাইজেশন হ'ল জাভা, সি # বা অন্য কোনও (ওওপি ভাষাগুলি) সমর্থিত অবজেক্টকে পরিবহনযোগ্য ফর্মে রূপান্তর করার প্রক্রিয়া। এইভাবে এটি নেটওয়ার্কের মাধ্যমে পরিবহন করা হবে বা একটি ডিস্কে সঞ্চয় করা হবে। কোনও শ্রেণি সিরিয়ালযোগ্য হওয়ার জন্য, এটি অবশ্যই সিরিয়ালাইজযোগ্য ইন্টারফেস প্রয়োগ করতে পারে।


কেবল জাভা বা সি # তে সীমাবদ্ধ নয়, বেশিরভাগ প্রোগ্রামিং ভাষায় আমরা সিরিয়ালাইজেশন ব্যবহার করি। যেমন পাইথন আচার মডিউল একই জন্য ব্যবহৃত হয়।
পারদীপ শর্মা

0

সিরিয়ালাইজেশন ডেটাগুলিকে বাইটের রৈখিক "স্ট্রিং" এ পরিণত করছে।

অন্যরা কমবেশি একই কথা বলেছে, তবে আমি জোর দিয়েছি যে কম্পিউটার মডেলগুলির প্রয়োজনীয়তা এক-মাত্রিক সম্বোধিত র‌্যাম বা অবিরাম স্টোরেজে ফিট করে।

"ডেটা" হ'ল বেশিরভাগ জিনিসগুলি অন্তর্নিহিতভাবে সিরিয়ালাইজযোগ্য (যদিও আপনাকে বিমূর্ত মডেলটিকে একটি রৈখিকের তুলনায় কমিয়ে আনতে হবে); সিরিয়ালাইজযোগ্য নয় এমনগুলি বলা হয় যে একটি নেটওয়ার্ক সংযোগ বা পার্সারের মতো জটিল রাষ্ট্র-ভিত্তিক মেশিন।


0

সিরিয়ালাইজেশন একটি বাইনারি বস্তুকে এক্সএমএল (বা অন্যান্য স্ট্রিং) উপস্থাপনায় রূপান্তর করার সাথে সম্পর্কিত যাতে এটি কোনও ডাটাবেস / ফাইলে সংরক্ষণ করা যায় বা একটি ওয়েব সার্ভিস কলটিতে একটি নেটওয়ার্ক জুড়ে প্রেরণ করা যায়। ডিসরিয়ালাইজেশন হ'ল বিপরীত প্রক্রিয়া - একটি এক্সএমএল / স্ট্রিংকে কোনও বস্তুতে ফিরে রূপান্তর।


0

যখন কোনও শ্রেণি (নীলনকশা) থেকে প্রকৃত বস্তু (জিনিস) ইনস্ট্যান্ট করে (নির্মাণ করা হয়) তখন বস্তু (জিনিস) এটি সিরিয়াল করে (এটি তার বেসিক পারমাণবিক কাঠামোতে ভেঙে) স্মৃতিতে একটি স্থানে সংরক্ষণ করার প্রয়োজন হয়। (স্টার ট্র্যাকস ট্রান্সপোর্টার মত ধরণের)। আপনি জিনিসটি এটিকে তথ্যের প্রবাহে ভেঙে দেন যা কোথাও স্থানান্তরিত এবং সঞ্চয় করা যায়। তারপরে আপনি যখন জিনিসটি পুনর্গঠন করতে চান আপনি কেবলমাত্র পরমাণু দ্বারা সঞ্চিত উদাহরণটিকে বস্তুর মধ্যে আবার টানুন। ইনস্ট্যানেশন থেকে আলাদা।


0

সিরিয়ালাইজেশন হ'ল কোনও বস্তুকে বাইনারি ডেটা স্ট্রিমে রূপান্তর করার প্রক্রিয়া যাতে এটি কোনও ফাইলে সংরক্ষণ করা যায় বা কোনও নেটওয়ার্ক জুড়ে পাঠানো যায় যেখানে এটি আবার একই বস্তুতে পুনরুত্থিত করা যায়।

এই দস্তাবেজটি আপনাকে জাভা সিরিয়ালাইজেশন বিশদটি বুঝতে সহায়তা করবে।


-1

সিরিয়ালাইজেশন হ'ল অবজেক্ট (মেমরির একটি অংশ) কোনও ফর্ম অনুবাদ করা যখন বস্তুর অবস্থা ফাইলে সংরক্ষণ করা যায় (উদাহরণ হিসাবে)।

এটি কেবল কুকি তৈরির মতো আচরণ করুন - অবজেক্টটি একটি ময়দা, কুকি - এটি সিরিয়ালযুক্ত ময়দা।

সুতরাং "সিরিয়ালাইজেশন" করে আপনি আপনার বন্ধুর কাছে কুকি পাঠাতে পারেন।

এরকম কিছু :-)


4
... কুকিজ ব্যতীত আর পিঠে পরিণত করা যাবে না (ডিসরিয়ালাইজড)।
ডেভ শেরোহমান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.