मैं कुछ दिनों के लिए प्याज वास्तुकला का अध्ययन कर रहा हूं। मैं समझता हूं कि निर्भरताओं को हमेशा केंद्र की तरफ जाना चाहिए और इसे पूरा करने के लिए निर्भरता इंजेक्शन का उपयोग कैसे करना चाहिए। लेकिन मेरे पास कुछ प्रश्न हैं जो मैं अभी भी समझ नहीं पाया।प्याज वास्तुकला पर सेवाओं और भंडारों को कैसे कार्यान्वित करें?
क्या कोई मॉडल (या इकाई) एक भंडार इंटरफ़ेस या सेवा इंटरफ़ेस का संदर्भ दे सकता है?
उदाहरण के लिए: एक
Order
इकाई एकDeliveryCity
संबंधOder.DeliveryZip
संपत्ति है, जो एक विदेशी कुंजी है नहीं के माध्यम से स्थापित है, लेकिन अद्वितीय है। एक ज़िप के लिए शहर के पाने के लिए, मैंICityRepository.FindByZip(zip)
कॉल करना होगा मैं अपने मॉडल में निम्न कोड
class Order { . . . [Inject] public ICityRepository CityRepository { get; set; } private City _dCity; public City DeliveryCity { get { if (_dCity == null) _dCity = this.CityRepository.FindByZip(this.DeliveryZip); return _dCity; } } . . . }
क्या उपरोक्त कोड की समस्याओं हो सकता है? क्या इसे इसके बजाय डोमेन सेवा का उपयोग करना चाहिए?
क्या डोमेन सेवाओं के कार्यान्वयन कोर या इंफ्रास्ट्रक्चर परत पर परिभाषित किए जाने चाहिए?
यह सही समझ में आता है! मैं खुद से पूछ रहा हूं "मैं इसे कैसे याद कर सकता हूं?"! धन्यवाद! – svallory
यह एक गलती है। डीडीडी कारखाना पुनर्गठन के लिए ज़िम्मेदार नहीं है। पुनर्विचार एक वस्तु का मध्य जीवन है, फैक्ट्री केवल जीवन की शुरुआत से संबंधित है। कृपया यह उत्तर देखें: http://stackoverflow.com/a/10264669/625332 – Dmitry
मैं असहमत हूं। किसी ऑब्जेक्ट के उदाहरण बनाने के लिए कारखानों का उपयोग किया जाता है। वे किसी ऑब्जेक्ट के जीवन चक्र की शुरुआत में हो सकते हैं या पुनर्गठन के लिए उपयोग किए जा सकते हैं। वे दो विधियों या दो अलग-अलग वर्गों के साथ एक ही कक्षा हो सकते हैं। किसी भी तरह से, मैं इस बात से सहमत हूं कि कारखाने प्रत्येक मामले में कैसे व्यवहार करता है इसमें एक अंतर है। मेरे पास आमतौर पर भंडार की निर्भरता के रूप में पुनर्गठन कारखाना होता है जो डेटा स्टोर से प्राप्त डेटा के साथ नए उदाहरण बनाने और पुनर्निर्माण के लिए कारखाने में प्रतिनिधि होता है। अधिक जानकारी के लिए, इवांस पेज 145 देखें: "संग्रहीत ऑब्जेक्ट्स को पुन: स्थापित करना" – SonOfPirate