मुख्य SOA सेवा डिज़ाइन सिद्धांतों में से एक सेवा संगतता सिद्धांत ( https://en.wikipedia.org/wiki/Service_composability_principle ) है।
विचार यह है कि बिल्डिंग ब्लॉक्स के रूप में मौजूदा सेवाओं का उपयोग करके नई सेवाओं की रचना करके व्यक्ति तेजी से नई सेवाओं का विकास कर सकता है। जब आप नई विधियों को लागू करते हैं, तो आप वस्तुओं के तरीकों को कैसे कहते हैं, इसके अनुरूप। यह वह जगह है जहाँ SOA से बहुत अधिक उत्पादकता को बढ़ावा मिलता है।
क्या वास्तव में कोई ऐसा करता है? मैंने इसे बार-बार लिखित पाठ में बार-बार देखा है, लेकिन स्वयं वास्तविक विश्व कार्यान्वयन का अनुभव नहीं किया है। अधिकांश पाठ लेनदेन लेनदेन के किसी भी उल्लेख को छोड़ देते हैं , जो मुझे रचना योग्य सेवाओं को साकार करने में सबसे बड़ी बाधा लगती है।
पहले, आपको वास्तव में किसी भी गैर-तुच्छ सेवाओं की रचना करने से पहले लेनदेन की समस्या से निपटने की आवश्यकता है। निश्चित रूप से, यदि उदाहरण में "findCurrentTime ()" और "writeLogMessage ()" है, तो लेन-देन के बारे में चिंता करना आसान नहीं है, लेकिन वास्तविक दुनिया के उदाहरण जैसे "DepositMoney ()" और "withdrawMoney ()" के होने पर नहीं।
मुझे दो विकल्पों का पता है:
- डब्लूएस-एटॉमिक ट्रांजैक्शन या इस तरह के वास्तविक लेनदेन को लागू करें
- मुआवजा-आधारित समाधान को लागू करें जो ए को "कैंसला ()" या सोमेसिक के साथ कॉल की भरपाई करता है यदि बी में कॉल विफल हो जाता है
ये दोनों मेरे लिए बहुत ही समस्याग्रस्त / अनुपयोगी लगते हैं:
- WS- परमाणु लेनदेन
- एक बहुत जटिलता के कारण, अधिकांश सलाह है कि मैंने पाया सिर्फ चेतावनी दी है "दर्द पिछवाड़े में, न यह करना"
- समर्थन सीमित है, उदाहरण के लिए यदि आप खुले स्रोत ESBs लेते हैं, तो मुख्य विकल्प ServiceMix, Mule या WSO2 इसका समर्थन नहीं करते हैं
- मुआवजा
- क्षतिपूर्ति की हैंडलिंग को लागू करना मुझे बहुत जटिल लगता है। यदि सेवा A सफल हो जाती है तो हम क्या करते हैं और हमें कभी सेवा B से उत्तर नहीं मिलता है और यह नहीं पता होता है कि यह विफल हुआ या सफल हुआ? इस तरह के तर्क को मैन्युअल रूप से संभालना (कंपोज़िटिंग सेवाओं के कार्यान्वयनकर्ता के रूप में) मुझे अपनी कलाई को मारना चाहता है - यह उसी तरह का काम है जैसा कुछ उपकरण मुझे करना चाहिए!
- मैं यह भी नहीं देखता कि आप गैर-तुच्छ सेवाओं में मुआवजे के तरीके कैसे रख सकते हैं। कहते हैं कि आपकी सेवा A "डिपॉजिटमनी ()" है और वह सफल हो जाती है, कुछ अन्य कार्रवाई जल्दी से कहीं और धन हस्तांतरित करती है, और फिर हमें "क्षतिपूर्तिडॉपरमॉनी ()" प्राप्त होती है, अब हम क्या करते हैं? कीड़े की एक बड़ी कैन की तरह लगता है।
मेरे लिए ऐसा लगता है कि सेवा संरचना एक ऐसा मूलभूत एसओए सिद्धांत है जो आपको वास्तव में एसओए के लाभ नहीं मिलता है यदि आप सेवाओं को आसानी से नहीं बना सकते हैं । वास्तविकता क्या है? SOA के 90% उपयोगकर्ता वास्तविक सेवा के बिना "अपंग SOA" का उपयोग करते हैं? या अधिकांश उपयोगकर्ता वास्तव में सेवा संरचना का उपयोग करते हैं और मैं इसकी कठिनाई बढ़ा रहा हूं?