ডেটা কনট্র্যাক্টসরিয়ালাইজার বনাম এক্সএমএল সিরিয়ালাইজার: প্রতিটি সিরিয়ালাইজারের প্রো এবং কনস


86

আমার ডেস্কটপ অ্যাপ্লিকেশন ব্যবহার করে অবজেক্টগুলিকে সিরিয়ালাইজ করে XmlSerializerDataContractSerializerপরিবর্তে আমাকে উত্তোলনের পরামর্শ দেওয়া হয়েছিল ।
কোন পরিস্থিতিতে আমার ব্যবহার করা উচিত DataContractSerializer?

অনেক ধন্যবাদ

মন্তব্য।
1. আউটপুট এক্সএমএল ফাইলটি স্থানীয়ভাবে সংরক্ষণ করা হয়। অন্য কোনও অ্যাপ্লিকেশন সেই এক্সএমএল ফাইল থেকে অবজেক্টগুলি ডিসরিয়ালাইজ করে না।
2. আমার অ্যাপ্লিকেশন .NET ফ্রেমওয়ার্ক 3.5 এসপি 1 দিয়ে চলে।


আরো দেখুন datacontract-বনাম-xmltype
nawfal

উত্তর:


114

ড্যান রিগসবি এর চূড়ান্ত পোস্ট রয়েছে - এটি পড়ুন!

এক্সএমএলসিরাইলাইজার বনাম ডেটা কন্ট্র্যাক্টসরিয়ালাইজার (ওয়েব সংরক্ষণাগার)

তিনি বলার মতো সমস্ত কিছুই বলেছেন, এবং খুব দৃinc়প্রত্যয়ী উপায়ে।

সংক্ষেপে:

এক্সএমএলসিরাইজার:

  • দীর্ঘ সময় ধরে ছিল
  • "অপ্ট-আউট" হয়; জনসাধারণের সমস্ত কিছু সিরিয়ালাইজড হয়ে যায়, যদি না আপনি এটি না বলেন ([XMLIgnore])

ডেটা কন্ট্র্যাক্টসরিয়ালাইজার হ'ল:

  • শহরে নতুন বাচ্চা
  • গতির জন্য অনুকূলিতকরণ (এক্সএমএসরিশায়ালারের তুলনায় প্রায় 10% দ্রুত)
  • "অপ্ট-ইন" - কেবলমাত্র এমন উপাদান যা আপনি নির্দিষ্ট করে চিহ্নিত করেন [DataMember]সিরিয়ালাইজ করা হবে
  • কিন্তু দিয়ে চিহ্নিত কিছু [DataMember]ধারাবাহিকভাবে করা হবে না - এটা কিনা publicবাprivate
  • এক্সএমএল বৈশিষ্ট্যগুলি সমর্থন করে না (গতির কারণে)

4
@ পল-সেবাস্তিয়ান মানোলে: গতিজনিত কারণে ডেটা কন্ট্রাক্টসরিয়ালাইজার এক্সএমএল বৈশিষ্ট্যগুলি সমর্থন করে না। বিস্তারিত কী?
marc_s

6
@ পল-সেবাস্তিয়ান মানোলে: যদি আপনার উত্স এক্সএমএলে এক্সএমএল উপাদানগুলিতে বৈশিষ্ট্য থাকে (যেমন <Customer Id="42"> ...) তবে আপনি কেবল বিকল্পটি এক্সএমএল সিরিয়ালাইজার ব্যবহার করছেন
মারক_স

4
এটি এমএসডিএন থেকে নেওয়া, দরকারী হতে পারে: এক্সএমএলসিরালাইজার ক্লাসটি ডেটা কন্ট্রাক্টরিশায়াল ক্লাসের চেয়ে অনেক ধরণের সংকীর্ণ সেটকে সমর্থন করে তবে ফলাফল এক্সএমএল উপর আরও নিয়ন্ত্রণের অনুমতি দেয় এবং এক্সএমএল স্কিমা সংজ্ঞা ভাষা (এক্সএসডি) মানকে আরও অনেক সমর্থন করে। সিরিয়ালাইজযোগ্য ধরণের ক্ষেত্রে এটির জন্য কোনও ঘোষিত বৈশিষ্ট্যও প্রয়োজন হয় না ... এক্সএমএলসিরাইজার শ্রেণি ডেটা চুক্তির ধরণগুলিকে সমর্থন করে না। দুটিই MSDN
পল-সেবাস্তিয়ান মানোলে

4
@ ওইউ: কেবলমাত্র নেট 3.5 এসপি 1 এবং আরও নতুন বিকল্পগুলি বেছে নেবে না - তবে আমার কাছে এটি এখনও কাজগুলি করার পছন্দসই উপায় । আপনাকে এমন বৈশিষ্ট্যগুলি সেট করার অনুমতি দেয় যা অন্যথায় সেট করা যায় না (যেমন সিরিয়ালকরণের ক্রম, নামস্থান এবং আরও অনেক
কিছুর

17
ডেটা কন্ট্রাক্টস্রায়ালাইজার সম্পর্কে সবচেয়ে বড় সতর্কতা - যখন ডিসিরিয়ালাইজ করা হয় তখন এটি উপাদানগুলির ক্রমটির যত্ন করে এবং যদি তারা সঠিক ক্রমে না থাকে তবে নিঃশব্দে ব্যর্থ হয়। ইমো, যদি না আপনি উভয় প্রান্তে একই সমাহারগুলি ব্যবহার করেন, এটি এটিকে অসাধ্যাত্মক বিপজ্জনক করে তোলে।
Pxtl
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.