SOA क्या है? सेवा-उन्मुख Archiटेक्चर सिद्धांत
SOA (सेवा उन्मुखी) क्या है? Archiटेक्चर)?
सेवा उन्मुख Archiटेक्चर (SOA) कंप्यूटर सॉफ़्टवेयर डिज़ाइन में एक आर्किटेक्चरल पैटर्न है जिसमें एप्लिकेशन घटक संचार प्रोटोकॉल के माध्यम से अन्य घटकों को सेवाएँ प्रदान करते हैं, आमतौर पर एक नेटवर्क पर। सेवा-उन्मुखीकरण के सिद्धांत किसी भी उत्पाद, विक्रेता या तकनीक से स्वतंत्र हैं।
SOA विभिन्न नेटवर्कों पर सॉफ्टवेयर घटकों के लिए एक दूसरे के साथ काम करना आसान बनाता है।
SOA आर्किटेक्चर के अनुसार बनाई गई वेब सेवाएँ वेब सेवा को अधिक स्वतंत्र बनाती हैं। वेब सेवाएँ स्वयं एक दूसरे के साथ डेटा का आदान-प्रदान कर सकती हैं और जिन अंतर्निहित सिद्धांतों पर वे बनाई गई हैं, उनके कारण उन्हें किसी भी प्रकार की मानवीय सहभागिता की आवश्यकता नहीं होती है और किसी भी कोड संशोधन की भी आवश्यकता नहीं होती है। यह सुनिश्चित करता है कि नेटवर्क पर वेब सेवाएँ एक दूसरे के साथ सहजता से बातचीत कर सकती हैं।
सेवा-उन्मुख Archiटेक्चर (SOA) सिद्धांत
SOA डिज़ाइन सिद्धांतों के 9 प्रकार हैं जिनका उल्लेख नीचे किया गया है
1. मानकीकृत सेवा अनुबंध
सेवाएँ सेवा विवरण का पालन करती हैं। किसी सेवा में किसी प्रकार का विवरण अवश्य होना चाहिए जो बताता हो कि सेवा किस बारे में है। इससे क्लाइंट एप्लिकेशन के लिए यह समझना आसान हो जाता है कि सेवा क्या करती है।
2. ढीला कपलिंग
Less एक दूसरे पर निर्भरता। यह वेब सेवाओं की मुख्य विशेषताओं में से एक है जो यह बताता है कि वेब सेवाओं और वेब सेवा को लागू करने वाले क्लाइंट के बीच यथासंभव कम निर्भरता होनी चाहिए। इसलिए यदि किसी भी समय सेवा की कार्यक्षमता बदल जाती है, तो इससे क्लाइंट एप्लिकेशन को नुकसान नहीं पहुंचना चाहिए या इसे काम करने से नहीं रोकना चाहिए।
3. सेवा अमूर्तन
सेवाएँ बाहरी दुनिया से अपने द्वारा समाहित तर्क को छिपाती हैं। सेवा को यह नहीं बताना चाहिए कि वह अपनी कार्यक्षमता को कैसे निष्पादित करती है; उसे क्लाइंट एप्लिकेशन को केवल यह बताना चाहिए कि वह क्या करती है, न कि यह कि वह इसे कैसे करती है।
4. सेवा पुन: प्रयोज्यता
तर्क को पुनः उपयोग को अधिकतम करने के इरादे से सेवाओं में विभाजित किया गया है। किसी भी विकास कंपनी में पुनः प्रयोज्यता एक बड़ा विषय है क्योंकि जाहिर है कि कोई व्यक्ति एक ही कोड को बार-बार कई अनुप्रयोगों में बनाने में समय और प्रयास खर्च नहीं करना चाहेगा, जिसके लिए उनकी आवश्यकता होती है। इसलिए, एक बार वेब सेवा के लिए कोड लिखे जाने के बाद, इसमें विभिन्न प्रकार के अनुप्रयोगों के साथ काम करने की क्षमता होनी चाहिए।
5. सेवा स्वायत्तता
सेवाओं को उस तर्क पर नियंत्रण होना चाहिए जिसे वे समाहित करते हैं। सेवा को सब कुछ पता होता है कि वह क्या कार्यक्षमता प्रदान करती है और इसलिए इसमें शामिल कोड पर भी उसका पूरा नियंत्रण होना चाहिए।
6. सेवा राज्यविहीनता
आदर्श रूप से, सेवाएँ स्टेटलेस होनी चाहिए। इसका मतलब है कि सेवाओं को एक राज्य से दूसरे राज्य में जानकारी नहीं रोकनी चाहिए। इसे क्लाइंट एप्लीकेशन से ही करना होगा। एक उदाहरण शॉपिंग साइट पर दिया गया ऑर्डर हो सकता है। अब आपके पास एक वेब सेवा हो सकती है जो आपको किसी विशेष आइटम की कीमत बताती है। लेकिन अगर आइटम शॉपिंग कार्ट में जोड़े जाते हैं और वेब पेज उस पेज पर जाता है जहाँ आप भुगतान करते हैं, तो भुगतान पृष्ठ पर स्थानांतरित किए जाने वाले आइटम की कीमत की जिम्मेदारी वेब सेवा द्वारा नहीं ली जानी चाहिए। इसके बजाय, इसे वेब एप्लीकेशन द्वारा किया जाना चाहिए।
7. सेवा खोज योग्यता
सेवाओं की खोज की जा सकती है (आमतौर पर एक सेवा रजिस्ट्री में)। हमने इसे पहले ही UDDI की अवधारणा में देखा है, जो एक रजिस्ट्री का कार्य करती है जो वेब सेवा के बारे में जानकारी रख सकती है।
8. सेवा संयोजनशीलता
सेवाएँ बड़ी समस्याओं को छोटी समस्याओं में तोड़ देती हैं। किसी भी एप्लिकेशन की सभी कार्यक्षमता को कभी भी एक ही सेवा में एम्बेड नहीं करना चाहिए, बल्कि सेवा को अलग-अलग व्यावसायिक कार्यक्षमता वाले मॉड्यूल में विभाजित करना चाहिए।
9. सेवा अंतरसंचालनीयता
सेवाओं को ऐसे मानकों का उपयोग करना चाहिए जो विविध ग्राहकों को सेवा का उपयोग करने की अनुमति दें। वेब सेवाओं में, मानक एक्सएमएल और HTTP पर संचार का उपयोग यह सुनिश्चित करने के लिए किया जाता है कि यह इस सिद्धांत के अनुरूप है।