यदि किसी वितरित एप्लिकेशन में क्लाइंट और सर्वर घटकों के बीच युग्मन को कम करना आपके लिए बहुत महत्वपूर्ण है तो REST का उपयोग किया जाना चाहिए ।
यह मामला हो सकता है यदि आपका सर्वर कई अलग-अलग ग्राहकों द्वारा उपयोग किया जा रहा है, जिनका आपके पास नियंत्रण नहीं है। यदि आप क्लाइंट सॉफ़्टवेयर को अपडेट करने की आवश्यकता के बिना नियमित रूप से सर्वर को अपडेट करने में सक्षम होना चाहते हैं तो यह भी मामला हो सकता है ।
मैं आपको आश्वस्त कर सकता हूं कि कपलिंग के इस निम्न स्तर को प्राप्त करना आसान नहीं है । सफल होने के लिए REST की सभी बाधाओं का पालन करना महत्वपूर्ण है। विशुद्ध रूप से स्टेटलेस कनेक्शन बनाए रखना मुश्किल है। सही मीडिया-प्रकार चुनना और अपने डेटा को प्रारूपों में निचोड़ना मुश्किल है। अपने स्वयं के मीडिया प्रकार बनाना और भी कठिन हो सकता है।
समृद्ध HTTP व्यवहार को एकसमान HTTP इंटरफ़ेस में बदलना भ्रामक हो सकता है और कई बार अपेक्षाकृत सीधा RPC दृष्टिकोण की तुलना में पांडित्यपूर्ण प्रतीत होता है।
कठिनाइयों के बावजूद, लाभ यह है कि आपके पास एक ऐसी सेवा है जो क्लाइंट डेवलपर को HTTP प्रोटोकॉल के लगातार उपयोग के कारण आसानी से समझने में सक्षम होनी चाहिए। हाइपरमीडिया के कारण सेवा को आसानी से खोजा जा सकता है और सर्वर पर परिवर्तन के लिए क्लाइंट को बेहद लचीला होना चाहिए ।
हाइपरमेडिया के लाभ और सत्र राज्य से बचने से लोड संतुलन सरल और सेवा विभाजन संभव हो जाता है । HTTP नियमों के सख्त अनुरूप डिबगर्स और कैशिंग प्रॉक्सी जैसे उपकरणों की उपलब्धता को अद्भुत बनाते हैं।
अपडेट करें
ऐसा लगता है कि REST एक और 'अंतिम शब्द फैशन' है (या मैं पूरी तरह से गलत हो सकता हूं क्योंकि मैंने REST को कभी अभ्यास में नहीं देखा है)।
मुझे लगता है कि REST फैशनेबल हो गया है क्योंकि SOA प्रकार की परियोजनाएं करने का प्रयास करने वाले लोगों ने पाया है कि SOAP स्टैक का उपयोग करके वे उन लाभों का एहसास नहीं कर रहे हैं जो वादा किया गया था। लोग सरल एकीकरण पद्धति के उदाहरण के रूप में वेब पर वापस जाते रहते हैं। दुर्भाग्य से, मुझे लगता है कि लोग योजना और दूरदर्शिता की मात्रा को कम आंकते हैं जो वेब बनाने में चली गईं और वे इस बात की देखरेख करते हैं कि वेब पर होने वाले गंभीर पुन: उपयोग की अनुमति देने के लिए क्या किया जाना चाहिए।
आप कहते हैं कि आपने कभी भी REST को अभ्यास में नहीं देखा है, लेकिन यदि आप कभी भी वेब ब्राउज़र का उपयोग करते हैं तो यह संभवत: सत्य नहीं हो सकता। वेब ब्राउज़र एक REST क्लाइंट है।
- जब कोई व्यक्ति किसी वेब साइट पर कोई html बदलता है, तो आपको ब्राउज़र अपडेट करने की आवश्यकता क्यों नहीं है?
- मैं एक वेब साइट पर पृष्ठों का एक पूरा नया सेट क्यों जोड़ सकता हूं और "क्लाइंट" अभी भी बिना अपडेट के उन नए पृष्ठों तक पहुंच सकता है?
- मुझे http://example.org/images/cat पर जाने पर यह बताने के लिए वेब ब्राउज़र को "सेवा-वर्णन-भाषा" प्रदान करने की आवश्यकता क्यों नहीं है कि वापसी प्रकार एक jpeg छवि होगी और जब आप जाएंगे करने के लिए
http://example.org/description/cat
वापसी प्रकार पाठ / html हो जाएगा?
- मैं उन साइटों पर जाने के लिए वेब ब्राउज़र का उपयोग क्यों कर सकता हूं जो ब्राउज़र जारी होने पर मौजूद नहीं थे? ग्राहक इन साइटों के बारे में कैसे जान सकता है?
ये बेहूदा सवालों की तरह लग सकते हैं, लेकिन अगर आपको जवाब पता है, तो आप यह देखना शुरू कर सकते हैं कि REST क्या है। REST के अधिक लाभों के लिए StackOverflow देखें। जब मैं एक प्रश्न देख रहा हूं, तो मैं उस पृष्ठ को बुकमार्क कर सकता हूं या किसी मित्र को url भेज सकता हूं और वह उसी जानकारी को देख सकता है। उस सवाल को खोजने के लिए उसे साइट पर नेविगेट करने की आवश्यकता नहीं है।
StackOverflow प्रमाणन के लिए OpenId सेवाओं की एक किस्म का उपयोग करता है, gravatar.com अवतार छवियों के लिए, गूगल-एनालिटिक्स और विश्लेषणात्मक जानकारी के लिए मात्रा का उपयोग करें। इस प्रकार की बहु-कंपनी एकीकरण SOAP दुनिया का केवल एक ही प्रकार का सपना है । सबसे अच्छे उदाहरणों में से एक तथ्य यह है कि StackOverflow UI को चलाने के लिए उपयोग किए जाने वाले jQuery लाइब्रेरी को Google के सामग्री वितरण नेटवर्क से पुनर्प्राप्त किया जाता है। तथ्य यह है कि एसओ ग्राहक (यानी आपका वेब ब्राउज़र) को निर्देश दे सकता है कि प्रदर्शन को बेहतर बनाने के लिए एक तृतीय-पक्ष साइट से कोड डाउनलोड करें, वेब क्लाइंट और सर्वर के बीच कम युग्मन के लिए वसीयतनामा है।
ये काम में एक अन्य वास्तुकला के उदाहरण हैं।
अब कुछ वेब साइट्स / एप्लिकेशन REST के नियमों को तोड़ते हैं और फिर ब्राउज़र अपेक्षा के अनुरूप काम नहीं करता है।
- कुख्यात वापस बटन की समस्या
सर्वर साइड सत्र स्थिति का उपयोग करने के कारण होती है।
- लोड संतुलन एक दर्द बन सकता है जब आप सर्वर साइड सत्र स्थिति है।
- फ्लैश एप्लिकेशन अक्सर URL को विशेष रूप से प्रतिनिधित्व की पहचान करने से रोकते हैं।
- वेब ब्राउज़र को तोड़ने वाली दूसरी समस्या मीडिया-प्रकार के मानकों के अनुरूप खराब है। हम सभी समय के बारे में सुनते हैं कि IE6 को कैसे मारा जाना चाहिए। वहाँ समस्या यह है कि मानकों का ठीक से पालन नहीं किया गया, या जो भी कारण से अनदेखा किया गया।
- लॉगिन सत्र का उपयोग कई सुरक्षा छेदों का स्रोत है।
REST हर जगह है। यह वेब का हिस्सा है जो इसे अच्छी तरह से काम करता है। यदि आप वितरित अनुप्रयोगों का निर्माण करना चाहते हैं जो वेब की तरह स्केल कर सकते हैं, तो वेब की तरह बदलने और फिर से उपयोग को बढ़ावा देने के लिए लचीला हो सकते हैं, जैसा कि वेब ब्राउज़र का निर्माण करते समय उन्होंने किया था।