प्रतिष्ठित सेवाएं - डब्ल्यूएसडीएल समतुल्य


94

मैं REST और SOAP के बारे में पढ़ रहा हूं, और यह समझता हूं कि SOAP प्रोटोकॉल का उपयोग करके REST को लागू करना क्यों फायदेमंद हो सकता है। हालाँकि, मुझे अभी भी समझ में नहीं आया कि REST की दुनिया में "WSDL" बराबर क्यों नहीं है। मैंने पोस्टों को यह कहते हुए देखा है कि डब्लूएसडीएल के लिए "कोई ज़रूरत नहीं है" या यह अनावश्यक होगा कि बाकी दुनिया में, लेकिन मुझे समझ नहीं आता कि क्यों। क्या यह हमेशा एक परिभाषा के लिए प्रोग्रामेटिक रूप से बाँधने और मैन्युअल कोडिंग के बजाय प्रॉक्सी कक्षाएं बनाने के लिए उपयोगी नहीं है? मेरा मतलब दार्शनिक बहस में पड़ना नहीं है, बस इस कारण की तलाश है कि REST में कोई WSDL नहीं है, या इसकी आवश्यकता क्यों नहीं है। धन्यवाद।


4
मेरे पास भी वही प्रश्न है। ऐसा लगता है कि ग्राहकों के नजरिए से बाकी सेवाओं के लिए एक WSDL सेवा का उपयोग करना बहुत कठिन है।
३.३६ बजे w.donahue

4
यह मुझे लगता है कि यदि आप कुछ सरल प्रकट कर रहे हैं, तो आपको WADL या WSDL की आवश्यकता नहीं है। लेकिन अगर आप SAP के रूप में कुछ जटिल कर रहे हैं ... मैं कार्यक्षमता के ढेर को संभालने के लिए किसी प्रकार का प्रतिबिंब और नाम स्थान नहीं बना सकता।
ब्रेन २००

क्या HTTP विकल्प विधि को "समतुल्य" नहीं माना जा सकता क्योंकि इसमें किसी भी संभावित कार्रवाई के लिए आवश्यक उपलब्ध तरीकों और मापदंडों की जानकारी दी जानी चाहिए?
डिम १३

जवाबों:


44

वेब अनुप्रयोग विवरण भाषा (WADL) मूल रूप से RESTful सेवाओं के लिए डबल्यूएसडीएल के बराबर है, लेकिन एक चल रहे विवाद कुछ इस तरह बिल्कुल भी जरूरत है कि क्या वहाँ हो गया है।

जो ग्रेगोरियो ने उस विषय के बारे में एक अच्छा लेख लिखा है जो पढ़ने लायक है।


1
धन्यवाद जोशी। मैंने लेख पढ़ा, लेकिन दूसरा भी समझाने वाला नहीं था। कौन सा बिंदु है कि वह आपको सबसे अधिक मूल्यवान पाया?
14

1
यह ध्यान देने योग्य हो सकता है कि .NET के पास मेटाडेटा ( msdn.microsoft.com/en-us/library/ms730243.aspx ) प्रकाशित करने का एक तरीका भी है । उस के साथ, बड़ी साइटों द्वारा विकसित की गई अधिकांश REST सेवाओं में प्रमुख प्रोग्रामिंग भाषाओं (जावा, .NET, पीएचपी, आदि) के लिए विकसित विभिन्न प्रकार के डाउनलोड योग्य ग्राहक शामिल हैं। मेरी राय में, यह सेवा प्रदाता पर बहुत अधिक बोझ डालता है।
दाना

4
@ डाना: ऐसा लगता है कि एक सेवा लिखने में बहुत अधिक बिंदु नहीं है जो आपको क्लाइंट को लिखने की आवश्यकता है?
ब्लूचिप्पी

19

WSDL सेवा समापन बिंदुओं का वर्णन करता है। अन्य क्लाइंट्स को सर्वर एंडपॉइंट्स के लिए युग्मित नहीं किया जाना चाहिए (अर्थात पहले से यूआरएल में पता नहीं होना चाहिए)। REST क्लाइंट को मीडिया-प्रकारों पर युग्मित किया जाता है जो क्लाइंट और सर्वर के बीच स्थानांतरित हो जाते हैं।

यह ग्राहक के लिए ऑटो उत्पन्न वर्गों को समझ में आ सकता है कि वे लौटे मीडिया-प्रकारों के चारों ओर लपेटें। हालाँकि, जैसे ही आप HTTP इंटरैक्शन को अस्पष्ट करने के लिए शुरू करते हैं और आरपीसी मॉडल की ओर वापस आने के जोखिम को कम करते हैं, आप सेवा इंटरैक्शन के आसपास प्रॉक्सी कक्षाएं बनाना शुरू करते हैं।


4
क्या आप थोड़ा और विस्तृत कर सकते हैं? मुझे डर है कि मुझे नहीं मिलेगा। धन्यवाद।
14

1
प्रॉक्सी कक्षाएं संकलन समय पर मशीन सत्यापन करने का एक तरीका है। उनके बिना, आपने केवल मैन्युअल रूप से डॉक्स और परीक्षण-आधारित "सत्यापन" लिखा है।
एरिक ग्रेंज

1
@EricGrange ... और अभी तक इस दृष्टिकोण ने वेब के लिए बहुत अच्छा काम किया है।
डारेल मिलर

1
@DarrelMiller निर्भर करता है जिसे आप "अच्छी तरह से काम किया" कहते हैं, यह 80 के दशक की तरह है जब हर कोई पेपर डॉक्स से अपना इंटरॉप लिखता है, तो यह काम करता है, लेकिन "अच्छी तरह से"?
एरिक ग्रेंज

4
@BlueChippy मीडिया-प्रकार के चश्मे पुराने ढंग से निपटाए जाते हैं। आप या तो कल्पना के लिए एक मौजूदा पार्सर पाते हैं, या आप कल्पना पढ़ते हैं और एक स्वयं लिखते हैं। ध्यान देने वाली महत्वपूर्ण बात यह है कि यह उद्देश्य पूरे एपीआई में पुनः उपयोग करने योग्य मीडिया प्रकार के चश्मे के लिए है। प्रत्येक एपीआई के लिए एक नया पार्सर लिखना बिंदु को हरा देता है। जब सही किया जाता है तो REST क्लाइंट और सर्वर के स्वतंत्र विकास के दीर्घकालिक लाभ के लिए होता है।
डारेल मिलर

8

RSDL का उद्देश्य हाइपरमीडिया की तरह आराम करना है, दूसरे शब्दों में, इसमें WSDL या WADL जैसे सेवा विवरणक की तुलना में अधिक जानकारी है। उदाहरण के लिए, इसमें हाइपरटेक्स्ट और हाइपरलिंक जैसे नेविगेशन के बारे में जानकारी है।

उदाहरण के लिए, वर्तमान संसाधन को देखते हुए, आपके पास संबंधित अन्य संसाधनों के लिए ओएस सेट है।

हालाँकि, मुझे रेस्ट क्लाइंट्स नहीं मिले जो इस प्रारूप का समर्थन करता है या रेस्ट सर्वर सॉल्यूशंस के साथ ऑटो उत्पन्न करता है।

मुझे लगता है कि इसके बारे में निष्कर्ष निकालने के लिए एक लंबा रास्ता तय करना है। HTML लंबी कहानी और W3C बनाम ब्राउजर लोल देखें।

हाइपरमीडिया की तरह रेस्ट के बारे में अधिक जानकारी के लिए इसे देखें: http://en.wikipedia.org/wiki/HATEOAS

नोट: रॉय फील्डिंग हाइपरमिडिया दृष्टिकोण के बिना रेस्ट एपिस में इन प्रवृत्तियों की आलोचना कर रहे हैं: http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven

मेरा निष्कर्ष: अब एक दिन, WADL अधिक सामान्य है कि ऊंट CXF जैसे रेस्ट और इंटीग्रेशन फ्रेमवर्क पहले से ही WADL (उत्पन्न और उपभोग) का समर्थन करते हैं, क्योंकि यह WSDL के समान है, इसलिए इस माइग्रेशन प्रक्रिया (SOAP to REST) ​​को समझना सबसे आसान है।

आइए देखें अगले अध्याय;)


8

क्या यह हमेशा एक परिभाषा के लिए प्रोग्रामेटिक रूप से बाँधने और मैन्युअल कोडिंग के बजाय प्रॉक्सी कक्षाएं बनाने के लिए उपयोगी नहीं है?

पूरी ईमानदारी से सहमत हूं, यही कारण है कि मैं Swagger.io का उपयोग करता हूं

स्वैगर एक शक्तिशाली ओपन सोर्स फ्रेमवर्क है, जो उपकरणों के एक बड़े इकोसिस्टम द्वारा समर्थित है, जो आपके रीस्टफुल एपीआई को डिजाइन करने, बनाने, दस्तावेज बनाने और उपभोग करने में आपकी मदद करता है।

इसलिए मूल रूप से मैं अपने मॉडल, एंडपॉइंट्स इत्यादि का वर्णन करने के लिए स्वैगर का उपयोग करता हूं, और फिर मैं स्वैगर-कोडजेन जैसे अन्य उपकरणों का उपयोग मैन्युअल रूप से कोडिंग करने के बजाय प्रॉक्सी कक्षाओं को उत्पन्न करने के लिए करता हूं

इन्हें भी देखें: RAML


नहीं पता था कि स्वैगर भी ऐसा करता था। सोचा कि यह सिर्फ प्रलेखन / जेनेरिक फ्रेमवर्क फॉर रेस्ट एपीआई
रॉबर्ट डंडन

6

एक RSDL (बाकी सेवा विवरण भाषा) है जो WSDL के बराबर है। नीचे दिया गया URL इसका अभ्यास http://en.wikipedia.org/wiki/HATEOAS और http://en.wikipedia.org/wiki/RSDL बताता है । समस्या यह है कि हमारे पास wsdl से जावा, या रिवर्स तक कोड उत्पन्न करने के लिए बहुत सारे उपकरण हैं। लेकिन मुझे RSDL से कोड जनरेट करने का कोई टूल नहीं मिला।


3

WSDL, एंडपॉइंट्स और उनके संदेशों के वर्णन की अनुमति देने के लिए एक्स्टेंसिबल है, भले ही संदेश प्रारूप या नेटवर्क प्रोटोकॉल का उपयोग संवाद करने के लिए किया जाए

हालाँकि, REST एक HTTP स्थिति का प्रतिनिधित्व करने के लिए HTTP verbs और URI का उपयोग करके नेटवर्क प्रोटोकॉल का उपयोग करता है।

WSDL आपको इस स्थान पर बताता है, यदि आप यह संदेश भेजते हैं, तो आप इस क्रिया को करेंगे और इस स्वरूप को वापस ला सकते हैं।

REST में, अगर मैं एक नई प्रोफ़ाइल बनाना चाहता था, तो मैं POSTएक JSON बॉडी या http सर्वर वेरिएबल्स के साथ क्रिया का उपयोग करके URL पर अपनी प्रोफ़ाइल का वर्णन करूंगा/profile

POSTस्टेटस कोड 201 CREATEDऔर हेडर Location: *new_profile_id*(उदाहरण के लिए 12345) का उपयोग करके सर्वर-साइड जनरेट की गई आईडी लौटाएं

फिर मैं /profile/12345HTTP क्रिया का उपयोग करके POSTअपनी ईमेल पते या फ़ोन नंबर बदलने की स्थिति को अपडेट करने के लिए अपडेट कर सकता हूं । दूरस्थ वस्तु की स्थिति को स्पष्ट रूप से बदलना।

GET की वर्तमान स्थिति को लौटाएगा /profile/12345

PUT आमतौर पर क्लाइंट-साइड जनरेट आईडी के लिए उपयोग किया जाता है

DELETE, स्पष्ट है

HEAD, शरीर को वापस किए बिना स्थिति प्राप्त करता है।

REST के साथ यह अच्छी तरह से डिज़ाइन किए गए API के माध्यम से स्व-दस्तावेजी होना चाहिए और इस प्रकार उपयोग करना आसान है।

यह REST पर एक शानदार लेख है। यह वास्तव में मुझे इसे समझने में भी मदद करता है।


2
मैं तर्क दूंगा कि यह REST का हाइपरमेडिया अवरोध है, जो कि यूनिफ़ॉर्म इंटरफेस की तुलना में अधिक है जो WSDL की आवश्यकता को दूर करता है।
डारेल मिलर

3
आप "प्रोफ़ाइल" की खोज कहाँ करते हैं? जब आप एक के बजाय दर्जनों हैं, तो आप सहायता कैसे प्रदान करेंगे? बाकी सभी सेवा हाथ से लिखे गए डॉक्स और मैन्युअल रूप से लिखित एपीआई पर निर्भर करती हैं, जो श्रम गहन और त्रुटि-प्रवण हैं।
एरिक ग्रेंज

1
मैं @EricGrange से सहमत हूं - क्या आप यह बता सकते हैं कि आप कैसे जानते हैं कि आप CRUD (L) के संचालन को किन संस्थाओं में कर सकते हैं ... जब तक कोई इसे कहीं लिखता नहीं है?
ब्लूचिप्पी

2

WSDL 2.0 विनिर्देश ने REST वेब सेवाओं के लिए भी समर्थन जोड़ा है। दोनों दुनिया परिदृश्य के सर्वश्रेष्ठ। समस्या WSDL 2.0 व्यापक रूप से अभी तक वहाँ से बाहर अधिकांश उपकरणों द्वारा समर्थित नहीं है। डब्ल्यूएसडीएल 2.0 डब्ल्यू 3 सी की सिफारिश की गई है, डब्ल्यूएसडीएल 1.1 डब्ल्यू 3 सी अनुशंसित नहीं है, लेकिन उपकरण और डेवलपर्स द्वारा व्यापक रूप से समर्थित है। रेफरी: http://www.ibm.com/developerworks/library/ws-restwsdl/


0

वेब एप्लिकेशन विवरण भाषा (WADL) एक XML शब्दावली है जिसका उपयोग Restful वेब सेवाओं का वर्णन करने के लिए किया जाता है।

WSDL के साथ, जेनेरिक क्लाइंट WADL फ़ाइल को लोड कर सकता है और संबंधित वेब सेवा की पूर्ण कार्यक्षमता तक पहुंचने के लिए तुरंत सुसज्जित हो सकता है।

चूंकि RESTful सेवाओं में सरल इंटरफेस होते हैं, इसलिए WADL इन सेवाओं के लिए आवश्यक नहीं है क्योंकि WSDL RPC- शैली SOAP सेवाओं के लिए है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.