ডেটা কন্ট্র্যাক্ট জসনসিরাইজার এবং জাভাস্ক্রিপ্টসরিয়ালাইজারের মধ্যে পার্থক্য কী?


88

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

আমাদের বেশ কয়েকটি প্রকল্প রয়েছে যা জেএসওনকে গ্রাস করে বা নির্গত করে এবং এখন পর্যন্ত প্রত্যেকটির জন্য নির্বাচিত শ্রেণি প্রতিটি প্রকল্পের প্রাথমিক দেবের মতের উপর নির্ভরশীল। কিছু সহজ, দু'জনের জেএসওএন থেকে পরিচালিত প্রকারের উত্পাদন সম্পর্কিত জটিল যুক্তি রয়েছে (প্রকারগুলি প্রবাহগুলির নিকটবর্তীভাবে ম্যাপ করে না) তবে গতির উপর কোনও জোর দেওয়া হয় না, একটির গতি প্রয়োজন। অন্তত এখন পর্যন্ত ডাব্লুসিএফের সাথে কারও সাথে যোগাযোগ নেই।

আমি বিকল্প গ্রন্থাগারগুলিতে আগ্রহী হওয়ার পরেও আমি আশা করছি যে কারও কাছে আমার প্রশ্নের উত্তরও থাকতে পারে।


8
Json.Net json.codeplex.com ব্যবহার করুন । সিরিয়ালাইজেশন / ডেসারিয়ালাইজেশন প্রক্রিয়াটির উপরে আপনার আরও অনেক বেশি নিয়ন্ত্রণ থাকবে।
এলবি

আপনি কীভাবে এটি ব্যবহার করছেন তা নির্ভর করে। ডেটা কনট্রাক্টজসনসিরাইজার ডাব্লুসিএফের সাথে ভাল কাজ করার প্রবণতা রাখে। জাভাস্ক্রিপ্টসরিয়ালাইজার অনেক সহজ। আপনি কি করতে চেষ্টা করছেন?
jrummell

সার্ভিস স্ট্যাক.জসনসিরাইজার ব্যবহার করুন - এটি দ্রুততম। তবে এটি [স্ক্রিপ্টআইগনোর] গুণকে সম্মান করে না। আপনার প্রয়োজন না হলে কোনও সমস্যা নয়। এটি সম্পর্কে একটি দীর্ঘ আলোচনা এখানে দেখুন: stackoverflow.com/questions/9150920/…
ওফার জেলিগ

18
সবাই কেন তাদের মন্তব্যে উত্তর দেয়? উত্তরে ভোট দেওয়া বা সেগুলিতে মন্তব্য করা শক্ত করে তোলে।
জাস্টিন আর।

4
@ জাস্টিনআর সম্ভবত এখানে কিছু পুলিশ যারা এক লাইনের উত্তরকে নীচে নামিয়ে বলবে এবং বলে: "এটি একটি মন্তব্য হওয়া উচিত"।
নওফাল

উত্তর:


68

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

জাভাস্ক্রিপ্টসরিয়ালাইজার বেনামে টাইপগুলি (এক উপায়) সহ যে কোনও প্রকারের সিরিয়ালিয়াল করতে পারে এবং আরও কার্যকর উপায়ে এটি করে। আপনি ডাব্লুসিএফের "অটোমেজিক" হারাতে পারেন তবে আপনি আরও সংহতকরণের বিকল্প অর্জন করেন।

আপনি মন্তব্যগুলি দ্বারা দেখতে পাচ্ছেন, এজেএক্স সিরিয়ালাইজেশনের জন্য প্রচুর বিকল্প রয়েছে এবং আপনার গতি বনাম রক্ষণাবেক্ষণের প্রশ্নগুলির সমাধান করার জন্য, সমস্ত দলের প্রয়োজন মেটাচ্ছে এমন একটি সমাধান খুঁজে বের করার জন্য তাদের তদন্ত করা মূল্যবান হতে পারে দীর্ঘমেয়াদে রক্ষণাবেক্ষণের সমস্যাগুলি হ্রাস করুন কারণ প্রত্যেকে তাদের নিজস্ব কাজ করে।

2014-04-07 আপডেট: আমি JSON.NET ব্যবহার করার পরামর্শ দিচ্ছি যদি আপনি পারেন। এই প্রশ্নে বিবেচিত 3 লাইব্রেরির পর্যালোচনার জন্য http://james.newtonking.com/json বৈশিষ্ট্য তুলনা দেখুন ।

2015-05-26 আপডেট: আপনার কোম্পানির যদি বাণিজ্যিকভাবে লাইসেন্সযোগ্য পণ্যগুলি ব্যবহারের প্রয়োজন হয় বা আপনার প্রতিটি শেষের পারফরম্যান্সের প্রয়োজন হয় তবে আপনি https://servicestack.net/ দেখুনও করতে পারেন ।


4
তাদের মধ্যে দুজনের মধ্যে সিরিয়ালের অভিনয়ের পার্থক্য কী ? আসুন বলুন যে তারা একই সংখ্যার অ্যাট্রিবিউটসের সংখ্যার সত্ত্বাকে সিরিয়ালাইজ করবে?
অ্যাড্রিয়ান সালাজার

20

উভয়ই প্রায় একই কাজ করে তবে খুব আলাদা অবকাঠামো ব্যবহার করে আপনি ক্রমিকায়িত / deserialize করতে চান এমন শ্রেণীর উপর বিভিন্ন বিধিনিষেধ প্রয়োগ করে এবং সিরিয়ালাইজেশন / ডিসেরায়ালাইজেশন প্রক্রিয়াটি সুর করার ক্ষেত্রে বিভিন্ন স্তরকে নমনীয়তা সরবরাহ করতে চান।

জন্য DataContractJsonSerializerআপনি সমস্ত শ্রেণীর আপনি ব্যবহার ধারাবাহিকভাবে করতে চান চিহ্নিত করতে হবে DataContractব্যবহার atrtibute এবং সকল সদস্যদের DataMemberঅ্যাট্রিবিউট। পাশাপাশি যদি আপনার কয়েকটি শ্রেণীর এনাম সদস্য থাকে তবে এনামগুলিকেও অবশ্যই DataContractপ্রতিটি এনাম সদস্য হিসাবে চিহ্নিত করতে হবে - EnumMemberগুণ হিসাবে। এছাড়াও DataContractJsonSerializerআপনি ধরনের রেজল্যুশন যুক্তিবিজ্ঞান পরিবর্তনের এবং যে ধরনের surrogates সঙ্গে ধারাবাহিকভাবে প্রতিস্থাপন ধারাবাহিকতাতে / deserialization পুরো প্রক্রিয়া উপর জরিমানা নিয়ন্ত্রণ করা সম্ভব।

জন্য JavaScriptSerializerআপনি JSON স্ট্রিংকে থেকে বস্তু deserializing পরিকল্পনা আপনি parameterless কন্সট্রাকটর প্রদান করতে হবে।

আমার জন্য, আমি সাধারণত JavaScriptSerializerউপস্থাপনার যুক্তিতে ব্যবহার করি , যেখানে আমি অ্যাজেক্সের অতিরিক্ত অনুরোধ ছাড়াই পৃষ্ঠার সাথে জেসনে একসাথে রেন্ডার করতে চাইছি এমন একটি সাধারণ মডেল। এবং এমনকি আমি সাধারণত সি # তে তাদের ডিসরিয়ালাইজ করতে হয় না - তাই কোনও উপরি নেই। তবে যদি এটি অধ্যবসায় যুক্তিযুক্ত হয়, যেখানে আমি বস্তুগুলিকে একটি ডেটা স্টোরে সংরক্ষণ করতে চাই (সাধারণত কোনও এসকিএল স্টোরেজ নয়), সেগুলি পরে লোড করতে, আমি ব্যবহার করতে পছন্দ করি DataContractJsonSerializerকারণ বৈশিষ্ট্যগুলি রাখার ওভারহেড সিরিয়ালাইজেশন / ডিসস্রায়ালাইজেশন প্রক্রিয়াটির টিউনিংয়ের ক্ষেত্রে নমনীয়তার উপযুক্ত হয়, বিশেষত যখন আপডেট সংস্করণগুলির সাথে নতুন সংস্করণটির অবজেক্টগুলিতে সিরিয়ালযুক্ত ডেটা লোড করার বিষয়টি আসে


2

ব্যক্তিগতভাবে, আমি মনে করি যে DataContractJsonSerializerওভার ইঞ্জিনিয়ারিংয়ের প্রত্যাশা। আমি এড়িয়ে যেতে এবং সাথে যেতে হবে JavaScriptSerializer। ইভেন্ট যেখানে JavaScriptSerializerউপলভ্য নয়, আপনি শুক্রবার 13 তম (একটি লাইব্রেরি যা আমি লিখেছি; পি) ব্যবহার করতে পারেন ।


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