2010-08-09 27 views
20

मुझे यकीन नहीं है कि मुझे अपने भंडार पैटर्न में कैशिंग को कार्यान्वित करना चाहिए।रिपोजिटरी पैटर्न - कैशिंग

क्या मुझे इसे सेवा-तर्क या भंडार में लागू करना चाहिए?

जीयूआई -> BusinessLogic (सेवा) -> DataAccess (डेटा संग्रह स्थान)

उत्तर

16

मैं भंडार/डेटा का उपयोग परत में इसे संभाल होगा। तर्क यह है कि यह डेटा परत कहां से प्राप्त करने के लिए व्यापार परत पर निर्भर नहीं है, यह भंडार का काम है। भंडार तब तय करेगा कि डेटा एक्सेस लॉजिक की परिस्थितियों के आधार पर कैश (यदि यह बहुत पुराना नहीं है) या लाइव डेटा स्रोत से डेटा प्राप्त करना है।

यह एक व्यापार तर्क समस्या से अधिक डेटा पहुंच चिंता है।

+0

उत्तर के लिए धन्यवाद! मुझे लगता है कि यह आलसी लोडिंग कार्यान्वयन के लिए भी बेहतर है। – Beni

35

यह एक अच्छा विचार है कि कैशिंग तर्क सीधे अपने भंडार में न डालें, क्योंकि यह एकल उत्तरदायित्व सिद्धांत (एसआरपी) और चिंता का पृथक्करण करता है। एसआरपी अनिवार्य रूप से कहता है कि आपके वर्गों में केवल बदलने का एक कारण होना चाहिए। यदि आप एक ही कक्षा में डेटा एक्सेस और कैशिंग पॉलिसी की चिंताओं को स्वीकार करते हैं, तो यदि इनमें से किसी एक को बदलने की जरूरत है तो आपको कक्षा को छूने की आवश्यकता होगी। आपको शायद यह भी पता चलेगा कि आप डीआरवाई सिद्धांत का उल्लंघन कर रहे हैं, क्योंकि कई अलग-अलग भंडार विधियों में कैशिंग तर्क फैलाना आसान है, और यदि इसमें से किसी को बदलने की जरूरत है, तो आप कई विधियों को बदलना चाहते हैं।

बेहतर तरीका कैचिंग तर्क को एक अलग प्रकार में लागू करने के लिए प्रॉक्सी या रणनीति पैटर्न का उपयोग करना है, उदाहरण के लिए एक कैशड रिपोजिटरी, जो तब कैश खाली होने पर आवश्यक वास्तविक डीबी-केंद्रित भंडार का उपयोग करती है। मैं दो लेख जो प्रदर्शित कैसे इस का उपयोग कर नेट/सी #, जो आप अपने ब्लॉग पर मिलेगा लागू करने के लिए, यहाँ लिखा है:

आप वीडियो पसंद करते हैं, मैं भी Pluralsight पर प्रॉक्सी डिजाइन पैटर्न में पैटर्न का वर्णन है, यहाँ:

+0

यहां पैटर्न पर अधिक: http://deviq.com/repository-pattern/ – ssmith

+0

मैं आपके साथ सहमत हूं। विरासत व्यापार तर्क वर्ग गैर-कैश किए गए भंडार का उपयोग करते रहते हैं और नई व्यावसायिक तर्क सेवाओं को नए का उपयोग कर सकते हैं। आपके मौजूदा तर्क – equintas

+0

पर कम प्रभाव पड़ता है यह सही उत्तर – Allie

संबंधित मुद्दे