आम तौर पर, मैं किसी भी तरह के होस्टेड सेरीस के लिए डब्ल्यूसीएफ कहूंगा, लेकिन जेएसओएन का उपयोग सीरियलाइजेशन तंत्र के रूप में रीस्टफुल सेवाओं के लिए विशिष्ट मामले में, मैं एएसपी.नेट एमवीसी (जिसे मैं एएसपी.नेट के रूप में संदर्भित करता हूं) इस उत्तर का शेष)।
रूटिंग तंत्र की वजह से पहला कारणों में से एक है। डब्ल्यूसीएफ में, आपको इसे अनुबंध पर परिभाषित करना होगा, जो कि सभी अच्छी और अच्छी है, लेकिन अगर आपको अपने दृष्टिकोण से त्वरित परिवर्तन करना है, तो मेरे दृष्टिकोण से, एएसपी में रूटिंग तंत्र का उपयोग करके उन्हें करना बहुत आसान है। नेट।
इसके अलावा, ऊपर दिए गए बिंदु पर, यदि आपके पास डब्ल्यूसीएफ में कई इंटरफेस पर कई सेवाओं का खुलासा हुआ है, तो आपकी यूआरएल संरचना (जो महत्वपूर्ण है) की पूरी छवि प्राप्त करना मुश्किल है, जबकि एएसपी.नेट में आपको (आमतौर पर) एक ही स्थान पर सभी मार्ग असाइनमेंट।
एएसपी.नेट के बारे में दूसरी बात यह है कि आपको उन सभी आंतरिक वस्तुओं तक पहुंच प्राप्त होगी जिनके लिए एएसपी.नेट (अनुरोध, प्रतिक्रिया, सर्वर, इत्यादि) के लिए जाना जाता है, जो एक खुलासा करते समय आवश्यक है HTTP-विशिष्ट एंडपॉइंट (जो आप बना रहे हैं)। अनुमोदित, आप डब्ल्यूसीएफ में इन चीजों में से कई का उपयोग कर सकते हैं, लेकिन आपको विशेष रूप से डब्ल्यूसीएफ को यह बताना होगा कि आप ऐसा कर रहे हैं, और फिर अपनी सेवाओं को दिमाग में डिजाइन करें।
अंत में, व्यक्तिगत अनुभव के माध्यम से, मैं पाया है कि DataContractJsonSerializer
बहुत अच्छी तरह DateTimeOffset
मानों का प्रबंधन नहीं है, और यह प्रकार है कि आप जब एक सेवा के साथ काम (किसी भी अंत बिंदु से अधिक) DateTime
से अधिक का उपयोग करना चाहिए जो किया जा सकता है कई टाइमज़ोन पर लोगों द्वारा बुलाया जाता है। एएसपी.नेट में, एक अलग सीरिएलाइज़र है जिसका आप उपयोग कर सकते हैं, या यदि आप चाहते हैं, तो आप अपना खुद का ActionResult
बना सकते हैं जो आपके लिए कस्टम सीरिएलाइज़र का उपयोग करता है। मैं व्यक्तिगत रूप से JSON.Net serializer पसंद करता हूं।
JSON.Net serializer और ASP.NET के बारे में अच्छी चीजों में से एक जो मुझे पसंद है कि आप स्मार्ट हैं, तो आप इसके साथ गुमनाम प्रकारों का उपयोग कर सकते हैं। यदि आप एक गैर-जेनेरिक प्रकार पर एक स्थैतिक जेनेरिक विधि बनाते हैं जो तब एक आंतरिक जेनेरिक प्रकार के लिए प्रतिनिधि करता है, तो आप अपने धारावाहिक वापसी मूल्यों के लिए अनाम प्रकारों का आसानी से उपयोग करने के लिए प्रकार अनुमान का उपयोग कर सकते हैं (माना जाता है कि वे एक-ऑफ हैं, निश्चित रूप से, यदि आप एक संरचना है जो लगातार लौटा दी जाती है, आपको इसे परिभाषित करना चाहिए और इसका उपयोग करना चाहिए)।
यह भी उल्लेख किया जाना चाहिए कि एक विश्वसनीय सेवा विकसित करने पर आपको डब्ल्यूसीएफ को पूरी तरह से छूट नहीं देना है। यदि आप अपनी सेवा से एटीओएम या आरएसएस फ़ीड को धक्का दे रहे हैं तो System.ServiceModel.Syndication
में बड़े पैमाने पर नामों की कक्षाएं उन फ़ीड के निर्माण और क्रमिकरण में सहायता करती हैं।ActionResult
वर्ग का एक सरल सबक्लास बनाना SyndicationFeed
का उदाहरण लेने के लिए और फिर ActionResult
निष्पादित होने पर इसे आउटपुट स्ट्रीम में क्रमबद्ध करें।
मैं मूल प्रश्न के लिए अपनी असंबंधित एहसास, लेकिन क्या आप डेटटाइम ऑफसेट और JSON क्रमबद्धता के साथ देखे गए मुद्दों के बारे में अधिक जानकारी प्राप्त कर सकते हैं? – Nate
@Nate: मैं इसे एक अलग प्रश्न के रूप में पूछने की सिफारिश करता हूं; आप जो अंतर देखते हैं उन्हें देखें, और फिर उन अंतरों के बारे में एक प्रश्न पोस्ट करें जहां आप उन्हें देखते हैं। – casperOne