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