स्वीकृत उत्तर गलत है। और इस तथ्य के बावजूद कि जॉन सीआरयूडी का उपयोग कर सीआरयूडी का उपयोग करते हुए विरोधी पैटर्न उदाहरण के रूप में उपयोग करता है, एसओए के लिए बुरा नहीं है।जॉन के वर्णन के रूप में एसओए के साथ समस्या यहां दी गई है: यह सेवा स्तर पर जटिलता को प्रोत्साहित करती है, जो अंततः कई उपयोग मामलों के लिए कम समर्थन की ओर ले जाती है। एपीआई बनाने के मुख्य कारणों में से एक है कई अनुप्रयोगों तक पहुंच प्रदान करना, यह वह जगह है जहां प्राथमिक आरओआई एपीआई बनाने में है।
उदाहरण के लिए मान लें कि हमारे पास एक ब्लॉग एपीआई है। मान लें कि हम उपयोगकर्ताओं को पोस्ट लिखने, छवियों को जोड़ने और हमारे बाहरी एप्लिकेशन की एक स्क्रीन पर टिप्पणियां रखने की क्षमता देते हैं। SOA के जॉन की दृष्टि में वह शायद सुझाव है कि हम एक कॉल उपयोग करने के लिए इन बातों के सभी करने के लिए तो यह कम बातूनी और ऐसा ऐसा किया जाएगा हमारे एपीआई का निर्माण ... इसलिए:
{
"post_title": "New Post",
"post_content": "Some Stuff....",
"comments": [{
"comment": "This is right on!",
"userId": 101
}, {
"comment": "I agree.",
"userId": 105
}],
"images": [{
"imgURL": "http://some.img.com/1"
}, {
"imgURL": "http://some.img.com/2"
}]
}
अब स्पष्ट रूप से कर रहे हैं तीन अलग-अलग डेटा ऑब्जेक्ट जिन्हें अलग से अलग करने की आवश्यकता है: पोस्ट, टिप्पणियां और छवियां। डेटा स्टोर के परिप्रेक्ष्य से पोस्ट POSTS तालिका में टिप्पणियाँ तालिका और छवियों को IMAGES तालिका में टिप्पणियों पर जाता है। इसलिए यदि हम एसओए के किरायेदारों के बाद हमारी सेवा बनाते हैं क्योंकि जॉन उनका वर्णन करता है तो हम अपने ऑब्जेक्ट के साथ अपना एक कॉल करते हैं और यह उन सेवाओं को जाता है जो पोस्ट बनाने का प्रयास करते हैं, उदाहरण के लिए, केवल ठीक काम करता है तो यह बनाने का प्रयास करता है टिप्पणियां जो ठीक काम करती हैं लेकिन जब हम छवियों पर पहुंचते हैं तो सेवा को पता चलता है कि छवि यूआरएल में से एक दोषपूर्ण है। तो हमारी सेवा विफलता देता है? भले ही 3 अन्य हिस्सों को अब हमारे डेटा स्टोर में सफलतापूर्वक संग्रहीत किया गया हो? क्या हम वापस जाते हैं और सफलतापूर्वक निष्पादित सभी भागों को पूर्ववत करते हैं? क्या होगा यदि डेटा स्टोर ने पहले से ही बदलाव किए हैं, और हम इसे वापस रोल नहीं कर सकते हैं?
इस तथ्य के साथ युगल करें कि अगर हम इसे "अधिक चतुर" बनाते हैं और उन्हें व्यक्तिगत रूप से प्रस्तुत करते हैं तो हम अब सेवा के किसी भी हिस्से को फिर से लिखने के बिना अन्य सेवाओं में उन सेवाओं का पुन: उपयोग कर सकते हैं।
समेकित सेवाओं का बुरा हिस्सा यह है कि आपको इस विचार पर बेचा जा रहा है कि सेवा कभी विफल नहीं होनी चाहिए ... जो हास्यास्पद है। हमेशा एक बढ़िया मामला होगा जहां कुछ असफल हो जाएगा और सबकुछ एक सेवा में समेकित करके आपने अपनी जटिलता में वृद्धि की है और वास्तव में विफल होने की आपकी क्षमता में वृद्धि की है।
मैं एसओए के इस संस्करण की तुलना उन कमियों के साथ करूंगा जिन्हें हमने ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में भगवान ऑब्जेक्ट्स बनाने में पहले से ही महसूस किया है। https://en.wikipedia.org/wiki/God_object
हम इससे बेहतर जानते हैं तो हम इसे क्यों रीहा कर रहे हैं? समेकित या भगवान सेवा भगवान वस्तुओं की तरह एक बुरा विचार है। मैं कहता हूं कि एक काम करने के लिए अपनी सेवाएं बनाएं और जितना उपयोग कर सकते हैं उतने उपयोग के लिए इसे अच्छी तरह से करें और आपकी सेवा अच्छी होगी।
मुझे लगता है कि मुझे जवाब पाने के लिए लेख पढ़ना होगा: जब कर्सर मैनिपुलेशन (moveNext) को सीआरयूडी ऑपरेशन माना जाता है? – mikemanne