वेब सेवा

वेब सेवाएं आजकल अक्सर एप्लीकेशन प्रोग्रामिंग इंटरफेसेस या वेब API है, जिनमें नेटवर्क जैसे इन्टरनेट के द्वारा प्रवेश किया जा सकता है और दूरस्थ प्रणाली परिचारक पर अनुरोधित सेवाओं को निष्पादित किया जा सकता है|
आम भाषा में कहा जाए तो यह शब्द वेब पर क्लाइंट और सर्वर के बीच हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल (HTTP), प्रोटोकॉल पर आधारित संवाद को संदर्भित करता है| इस तरह की सेवाएं इन दो में से किसी एक खेमें में आती हैं: बिग वेब सेवाएं [2] और RESTful वेब सेवाएं|
"बिग वेब सेवाएं" एक्स्टेंसिबल मार्कअप भाषा (XML) संदेश का उपयोग करती है जो कि सिम्पल ऑब्जेक्ट एक्सेस प्रोटोकॉल (SOAP) मानक का पालन करती है और पारंपरिक उद्यम में लोकप्रिय है| ऐसी प्रणालियों में, अक्सर सेवा द्वारा प्रदान की जानेवाली कार्य विधि का मशीन द्वारा पठनीय वर्णन होता है जो, वेब सर्विसेस डिस्क्रिप्शन लैंग्वेज (WSDL) में लिखा होता है| बाद वाली विशेषता SOAP एंडपॉइंट में आवश्यक नहीं है लेकिन यह कई जावा और .NET SOAP रूपरेखा में यह स्वचालित क्लाइंट-साइड कोड प्रस्तुत करने के लिए ज़रूरी है| (स्प्रिंग (Spring), अपाचे एक्सिस २ (Apach Axis 2) और अपाचे CXF जैसे कई फ्रेमवर्क्स इसमें उल्लेखनीय अपवाद हैं) WS-I जैसी, कुछ औद्योगिक संस्थाए, वेब सेवाओं की अपनी परिभाषा में SOAP और WSDL दोनों का समावेश करती हैं| 
हाल ही में, रिप्रेसेंटेशनल स्टेट ट्रान्सफर (RESTful) वेब सेवाएं, विशेष रूप से इंटरनेट कंपनियों के साथ वापस लोकप्रियता हासिल कर रही हैं| पोस्ट (POST) के साथ, पुट (PUT), गेट (GET) और डिलीट (DELETE) HTTP तरीकों का उपयोग कर, ये अक्सर SOAP आधारित सेवाओं से HTTP और वेब ब्राउज़रों के साथ बेहतर एकीकृत रहे हैं| इन्हें XML संदेश या WSDL सेवाएं-API परिभाषा की आवश्यकता नहीं होती है| 
वेब API वेब सेवाओं में बना हुआ हैं (वेब 2.0 नामक आंदोलन में) जहां सिम्पल ऑब्जेक्ट एक्सेस प्रोटोकॉल (SOAP) आधारित सेवाओं से दूर अधिक प्रत्यक्ष रिप्रेसेंटेशनल स्टेट ट्रान्सफर (RESTful) शैली संचार की ओर जोर दिया गया है| वेब APIs मैशप के रूप में जाने जाने वाले नए अनुप्रयोग में एकाधिक वेब सेवाएं के संयोजन को अनुमति देता हैं| 
जब वेब डेवलपमेंट के संदर्भ में इस्तेमाल किया जाए, वेब API आम तौर पर एक हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल (HTTP) प्रतिक्रिया संदेश के ढांचे की एक परिभाषा के साथ अनुरोध संदेशों का समूह है, जो आमतौर पर एक एक्स्टेंसिबल मार्कअप भाषा (XML) या जावास्क्रिप्ट ऑब्जेक्ट नोटेशन (JSON) में प्रारूप होता है| 
जब समग्र वेब सेवाएं चल रही हो, प्रत्येक उप सेवा स्वायत्त मानी जा सकती है| उपयोगकर्ता का इन सेवाओं पर कोई नियंत्रण नहीं होता है| उपरांत यह वेब सेवाएं खुद विश्वसनीय नहीं होती, साथ ही य सेवा प्रदाता प्रयोक्ताओं को नोटिस दिए बिना अपनी सेवाओं को बंद, बदल या सुधार कर सकते हैं| विश्वसनीयता और दोष सहिष्णुता अच्छे से समर्थित नहीं की जाती; दोष निष्पादन के दौरान भी हो सकता है| वेब सेवाओं से सम्बंधित एक्शेप्शन हैंडलिंग क्षेत्र में अब भी शोध जारी है| 
W3C 'वेब सेवाओं' को "नेटवर्क पर इंटरओपेरेबल मशीन से मशीन को जोड़ने वाले एक सॉफ्टवेयर सिस्टम" के रूप में परिभाषित करता है| यह एक मशीन-प्रक्रियाकृत प्रारूप में वर्णित एक इंटरफेस होता है (जो विशेष रूप से वेब सेवा विवरण भाषा WSDL में होता है)| अन्य प्रणालियां अपने वर्णन द्वारा निर्धारित SOAP संदेश का उपयोग करके वेब सेवाओं के साथ संपर्क रखती हैं, आमतौर पर HTTP के साथ XML सिरिअलाईजेशन के अन्य वेब-मानकों के साथ संयोजन के रूप में उपयोग किया जाता है| [8] 
W3C यह भी कहता है की, "हम वेब सेवाओं को दो प्रमुख वर्गों में निर्देशित कर सकते हैं, REST-अनुरूप वेब सेवाएं, जिनमें सेवा का प्राथमिक उद्देश्य वेब संसाधनों के XML निरूपण को एक समान "स्टेटलेस" ओपरेशन के सेट का उपयोग करके चलाना होता है; और आर्बीटरी वेब सेवाएं, जिसमे सेवा की स्वेच्छित कार्य प्रणालियों को दिखा सकती है| [9]

प्रोफ़ाइल

वेब सेवाओं की इंटरऑपरैबिलिटी बढ़ाने के लिए, WS-I प्रोफाइल प्रकाशित करती है| प्रोफ़ाइल मुख्य विनिर्देशों (SOAP, WSDL, ...) का विशेष संस्करण (SOAP 1.1, UDDI 2, ...) में एक सेट है जिस में मुख्य विनिर्देशों के उपयोग को सीमित करने के कुछ अतिरिक्त आवश्यकताओं का भी समावेश होता है|
WS-I युज़ केस और परीक्षण उपकरण भी प्रकाशित करके प्रोफ़ाइल आज्ञाकारी वेब सेवाएं विष्ठापन मैं मदद करते हैं| WS एक एडिटिंग वेब सेवा है|

प्रयोग की शैलियाँ

वेब सेवाएं उपकरणों का एक सेट है जो कई मायनों में इस्तेमाल किया जा सकता है| तीन सबसे आम उपयोग की शैलियों में RPC, SOA और REST हैं|

दूरस्थ प्रक्रिया कॉल

RPC वेब सेवाएं  एक वितरित कार्य पध्धति (या विधि) कॉल इंटरफेस पेश करते हैं जो कि कई डेवलपर्स से पद्वति है| आमतौर पर, RPC वेब सेवाओं का बुनियादी एकम WSDL कार्य प्रणाली है|
पहला वेब सेवा उपकरण RPC पर केंद्रित किया गया था और इसके परिणाम स्वरूप इस शैली का समर्थन और व्यापक रूप से विस्तार किया जाता है| तथापि, कभी कभी इनके निर्बाध रूप से संयोजित नहीं होने के लिए आलोचना की जाती है, क्योंकि यह अक्सर मानचित्रण सेवाओं से सीधे भाषा विशिष्ट कार्य के लिए कार्यान्वित की जाती है| कई विक्रेताओं को यह दृष्टिकोण गतिरोध लगा और RPC को WS-I की बेसिक प्रोफाइल के लिए अनुमति नहीं देने के लिए जोर दिया|
RPC के जैसी ही कार्यशैली के साथ अन्य तरीकों में ऑब्जेक्ट मेनेजमेन्ट ग्रुप (OMG) का कॉमन ऑब्जेक्ट रिकुएस्ट ब्रोकर आर्किटेक्चर (CORBA), Microsoft का डिस्ट्रीब्युटेड ऑब्जेक्ट मॉडल (DCOM) या सन माइक्रोसिस्टम्स का JAVA/रिमोट मेथड इन्वोकेशन RMI शामिल हैं|

सेवा आधारित आर्किटेक्चर (Service-oriented architecture)

वेब सेवाओं का सेवा-आधारित आर्किटेक्चर (SOA) अवधारणाओं पर आधारित आर्किटेक्चर बनाने में भी इस्तेमाल किया जा सकता हैं, जहां संचार का बुनियादी एकम एक अभियान के बजाय एक संदेश है| इन्हें 'संदेश आधारित सेवाएं' के रूप में जाना जाता है|
SOA वेब सेवाओं को बड़े सॉफ्टवेयर विक्रेताओं और उद्योग विश्लेषकों का समर्थन हैं| RPC वेब सेवाओं से विपरीत, लूस कपलिंग अधिक होने की संभावना है, क्योंकि ध्यान अंतर्निहित कार्यान्वयन विवरण के बजाय WSDL द्वारा प्रदान "कांट्रेक्ट" पर होता है|
मिडलवेर विश्लेषक एंटरप्राइज सेवा बस का इस्तेमाल करते हैं जो संदेश आधारित प्रसंस्करण और घटना-संचालित SOA बनाने के लिए वेब सेवाओं के संयोजन का प्रयोग करते हैं| मुक्त स्रोत ESB का एक उदाहरण Mule हैं और दूसरा ओपन ESB है|

रिप्रेसेंटेशनल स्टेट ट्रान्सफर

अंततः, रिप्रेसेंटेशनल स्टेट ट्रान्सफर (REST) ऐसे संरचना का वर्णन करता है जिसमे HTTP या समान के प्रोटोकॉल का उपयोग होता है जिसमे इंटरफ़ेस को जाने माने मानक संचालन (जैसे की HTTP के लिए गेट (GET), पोस्ट (POST), पुट (PUT), डिलीट (DELETE)) में बाध्य कर देता है| यहाँ पर ध्यान संदेश या अभियानों की बजाय स्टेटफुल संसाधन के साथ बातचीत पर है|
REST पर आधारित संरचना (जो की 'RESTful' हैं), HTTP पर SOAP संदेश का वर्णन करने के लिए WSDL का उपयोग कर सकती है, जो एक संक्षेपण के विशुद्ध रूप में SOAP पर लागू कर सकते हैं (जैसे, WS-Transfer), या SOAP का इस्तेमाल किए बिना भी बनाया जा सकता हैं|
WSDL का संस्करण 2.0 सभी HTTP अनुरोध पद्वति को जोड़ने में समर्थन प्रदान करता है| (संस्करण 1.1 की तरह केवल गेट (GET) और पोस्ट (POST) को नहीं) 
इसलिए यह RESTful वेब सेवाओं को बेहतर कार्यान्वयन में सक्षम बनाता है|
बहरहाल, इस विनिर्देशन के लिए सॉफ्टवेयर डेवेलोपमेन्ट किट में अभी भी समर्थन पर्याप्त नहीं है, जो अक्सर केवल WSDL 1.1 के लिए उपकरण प्रदान करते हैं|

आलोचनाएं`

non-RESTful वेब सेवाओं की आलोचक अक्सर शिकायत करते हैं कि वे बड़ी जटिल हैं और विशिष्ट ओपन स्रोत इम्प्लेमेन्टेशन की बजाय बड़े सॉफ्टवेयर विक्रेता या इंटेग्रेटोर्स पर आधारित है| Apache Axis और Apache CXF ओपन स्रोत इम्प्लेमेन्टेशन हैं|
REST वेब सेवा डेवलपर्स की मुख्य चिंता यह है कि SOAP WS टूलकिट्स रिमोट संपर्क के लिए नए इंटरफेस परिभाषित करने का काम बड़ी आसानी से कर देती हैं, जो अक्सर WSDL से या जावा सेवा API, C# या VB कोड से निकलने के लिए आत्मनिरीक्षण पर भरोसा करती हैं| यह चर्चा का विषय रहा है की यह सिस्टम की भंगुरता में बाधा ला सकता है, क्योंकि सर्वर पर एक छोटा सा परिवर्तन (जैसे की SOAP स्टैक का उपग्रेड) अलग WSDL और अलग सेवा इंटरफ़ेस में परिणाम कर सकते हैं| क्लाइंट साइड क्लास जो कि WSDL और XSD सेवा विवरण से उत्पन्न किया जा सकता है अक्सर इसी तरह SOAP एंडपॉइंट के एक विशेष संस्करण से जुड़ा रहता हैं और एंडपॉइंट परिवर्तन या क्लाइंट साइड SOAP स्टैक सुधर से टूट सकता है| अच्छे से रूपांकित किये हुए SOAP एंडपॉइंट (हस्तलिखित XSD और WSDL के साथ) इस से ग्रस्त नहीं है, लेकिन अभी भी समस्या यह है कि हर सेवा के कस्टम इंटरफ़ेस को हर सेवा के लिए एक कस्टम क्लाइंट की आवश्यकता होती है| 
वेब सेवाओं में XML के संदेश स्वरूप में और SOAP एवं HTTP के घेर और परिवहन में उपयोग के कारण वेब सेवाओं के प्रदर्शन के बारे में चिंता जताई जाती है, लेकिन उभरती XML पार्सिंग/इंडेक्सिंग टेक्नोलोजीस, जैसे की VTD-XML, XML संबंधित प्रदर्शन मुद्दों पर ध्यान रखने का भरोसा देती हैं|

समान प्रयास

वेब सेवाओं से संबोधित होने वाली समस्याओं को अन्य तरीकों से सुलझाया जा सकता है, पूर्ववर्ती और समकालीन दोनों उपाय मौजूद है| RMI कई [[]]मिडलवेर/0} सिस्टम में से एक है जिनको व्यापक प्रविस्तारण मिला है| CORBA और DCOM जैसे महत्वाकांक्षी प्रयासों ने डिस्ट्रीब्युटेड ऑब्जेक्ट को प्रभावित करने का प्रयास किया, जिसकी वेब सेवा इम्प्लेमेनटेशन कभी कभी नकल करने की कोशिश करते हैं|
और अधिक बुनियादी प्रयास में XML-RPC हैं, जो SOAP का पूर्वाभ्यास है जो केवल RPC के ही लायक है और SOAP बगैर के HTTP के विभिन्न रूपों का उपयोग शामिल हैं|