भंडार और सेवा के बीच अंतर?


105

एक रिपॉजिटरी और एक सेवा के बीच क्या अंतर है? मुझे यह समझ में नहीं आता है।

मैं डेटा एक्सेस लेयर के माध्यम से डेटा एक्सेस के बारे में बात कर रहा हूं, आमतौर पर linq से sql तक।

बहुत बार मैं साधारण CRUD विधियों के साथ रिपॉजिटरी देखता हूं, और अधिक व्यापार-विशिष्ट विधियों के साथ सेवाएँ।

हम इस ब्लॉग पोस्ट को एक उदाहरण के रूप में ले सकते हैं । यदि आप नीचे (छवियों) पर इंटरफेस को देखते हैं, तो उसके पास दो रिपॉजिटरी और दो सेवाएं हैं। कोई कैसे जानता है कि कहां रखा जाए?

जैसा कि मैंने कहा, CRUD जैसे संचालन और सेवाओं के लिए रिपॉजिटरी अधिक व्यापार उन्मुख लगता है।

धन्यवाद


क्या आप शांत कर सकते हैं? किस संदर्भ में? अधिकांश शब्दों की तरह, इन शब्दों का उपयोग अर्थ को परिभाषित करने में मदद करता है।
डेविड

2
नोट: मैं वेब सेवाओं या यहाँ कुछ के बारे में बात नहीं कर रहा हूँ। मैं डेटा लेयर के माध्यम से डेटा एक्सेस की बात कर रहा हूं।
एलेक्स

जवाबों:


78

एक रिपॉजिटरी अनिवार्य रूप से दृढ़ता के लिए एक मुखौटा है जो डेटा / वस्तुओं तक पहुंच की आपूर्ति करने के लिए संग्रह शैली शब्दार्थ (ऐड, अपडेट, निकालें) का उपयोग करता है। यह जिस तरह से आप एप्लिकेशन के बाकी हिस्सों से डेटा / ऑब्जेक्ट्स को स्टोर करने का तरीका है, उसे डिकॉय करने का एक तरीका है।

एक सेवा समन्वय या अन्य "सेवाओं" की आपूर्ति करती है जो आपके आवेदन को संचालित करने के लिए आवश्यक हैं। वे उस सेवा में बहुत भिन्न हैं जो आमतौर पर दृढ़ता से डेटा का उपयोग करना नहीं जानते हैं, और रिपॉजिटरी आमतौर पर आपके पास मौजूद किसी भी सेवा के लिए केवल डेटा / ऑब्जेक्ट तक पहुंच सकते हैं।


19
मैं कहूंगा कि एक रिपॉजिटरी एक प्रकार की सेवा है जिसका उपयोग डेटा एक्सेस के लिए किया जाता है।
इयान रिंगरोज

5
यह इस अर्थ में एक ठीक परिभाषा है कि लगभग हर चीज जो हम लिखते हैं वह किसी स्तर पर एक "सेवा" है, लेकिन यह मूल इरादे को खो देता है कि एक भंडार वस्तुओं का संग्रह माना जाता है ।
22

4
यदि आप इकाई परीक्षण का परीक्षण करते हैं, तो डेटाबेस से बचने के लिए आवश्यक मॉकिंग को कम से कम अमूर्त के रूप में रिपॉजिटरी के बारे में सोचना स्पष्ट हो सकता है।
हेनरी हेककिनन

repository= collectionसे backbone.jsया repository= serviceसे angular?
स्लाइड शो 2

159

रिपॉजिटरी वह जगह है जहां डेटा संग्रहीत किया जाता है। सेवा वह है जो डेटा में हेरफेर करती है।

एक वास्तविक दुनिया की तुलना में, यदि आपका पैसा बैंक में तिजोरी में रखा जाता है, तो तिजोरी भंडार होती है। टेलर जो जमा करता है, निकालता है, आदि सेवा है।


7
इस उत्तर के लिए धन्यवाद! सरल और संक्षिप्त।
एलेक्स

1
उपरोक्त टिप्पणी से सहमत हूँ! असली दुनिया की व्याख्या भी प्यार करो!
क्लेह

6
मिमी। इसलिए यदि बैंक ने तिजोरी से छुटकारा पाने का फैसला किया है, और मैट्रस के तहत पैसा लगाया है, तो टेलर अभी भी आपके साथ पहले की तरह बातचीत करेगा, जिससे आपको रिपॉजिटरी लेयर में बदलाव के बारे में पता चलेगा।
डेनिस

1
मुझे संदेह है कि ग्राहक उस कार्यान्वयन के बारे में जानना चाहते हैं, @ डेनिस
चकी

1
@ डेनिस हां। यह वास्तव में भंडार पैटर्न का उपयोग करने के मुख्य लाभों में से एक है। आपको सेवा पर कुछ भी बदले बिना रिपॉजिटरी इंटरफेस के वास्तविक कार्यान्वयन को बदलने में सक्षम होना चाहिए। यूनिट परीक्षण और आपके कोड को शिथिल बनाने के लिए इसके बहुत बड़े लाभ हैं।
वॉरेन पार्क्स

12

मैं पहली कोशिश के रूप में कहूंगा, सामान्य अर्थों में (जब तक कि आपके पास एक हो तो और संदर्भ दें):

  • एक रिपॉजिटरी वह जगह है जहां आप कुछ वैश्विक वस्तुओं को रखते हैं, जिनका उपयोग बाद में किया जाएगा।
  • एक सेवा एक व्यावसायिक तर्क कोड है, जिसे स्पष्ट किया गया है (और आदर्श रूप से प्रस्तुति परत और डेटाबेस परत से अलग किया गया है?)

3
क्या इसके बाद निम्न करना ठीक होगा: मेरी रिपॉजिटरी में मेरे सभी जटिल डेटाबेस कॉल हैं, फिर मेरी सेवा में मैं रिपॉजिटरी को एक निर्भरता के रूप में इंजेक्ट करता हूं। अब मैंने आसानी से परीक्षण योग्य कोड बना लिया है और अपनी चिंताओं को अलग कर लिया है, क्योंकि मेरी सेवा को नहीं पता है कि डीबी कॉल कैसे किया जाता है, लेकिन केवल रिपॉजिटरी के कार्यों को कॉल करता है। इसलिए व्यावसायिक तर्क और डेटा एक्सेस अलग हो गए हैं। क्या यह एक व्यवहार्य दृष्टिकोण होगा?
डारोफ़ी

1
यदि सभी तर्क सेवाओं में लिखे गए हैं, तो नियंत्रक केवल सेवा को कॉल करेगा?
इस्लामोखोजा हामिदुल्लाखोद्जदेव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.