क्या यह इंफ्रास्ट्रक्चर परत के भीतर आपके डोमेन लेयर (मॉड्यूल, मॉडल, संस्थाएं, डोमेन सेवाएं इत्यादि) के सभी इंटरफेस को समूहित करने के लिए समझ में आता है? यदि नहीं, तो क्या यह "साझा" प्रोजेक्ट/घटक बनाने के लिए समझ में आता है जो इन सभी को साझा लाइब्रेरी में समूहित करता है? आखिरकार, "इंफ्रास्ट्रक्चर लेयर" की परिभाषा में "डोमेन, एप्लिकेशन और यूआई परतों के लिए साझा लाइब्रेरी" शामिल हैं।डीडीडी: डोमेन इंटरफेस, इंफ्रास्ट्रक्चर कहां रखना है?
मैं डीडीडी परतों के आसपास अपना कोडबेस डिजाइन करने की सोच रहा हूं: यूआई, एप्लीकेशन, डोमेन, इंफ्रास्ट्रक्चर। यह 4 परियोजनाओं को सम्मानपूर्वक बनाएगा। मेरा मुद्दा यह है कि आप डोमेन लेयर से इंफ्रास्ट्रक्चर लेयर का संदर्भ लेते हैं। लेकिन अगर आप डोमेन परत परियोजना में इंटरफेस को परिभाषित, IPost के लिए कहते हैं, आप बुनियादी ढांचा परियोजना जब आप IPostRepository.Save (IPost पोस्ट) विधि को परिभाषित कर रहे से डोमेन परत परियोजना को संदर्भित करने के लिए है जब तो आप एक circulur संदर्भ होगा । इसलिए, "साझा लाइब्रेरी में सभी इंटरफ़ेस को परिभाषित करने" का विचार "।
शायद रिपॉजिटरीज़ को ऑब्जेक्ट को सहेजने की उम्मीद नहीं करनी चाहिए (IPostRepository.Save (आईपीओस्ट पोस्ट); लेकिन इसके बजाय, ऑब्जेक्ट के पैराम की अपेक्षा करें (जो कि सहेजें() में पैरा का लंबा सेट हो सकता है)। , इस एक आदर्श स्थिति से पता चलता है कि जब एक वस्तु बहुत जटिल हो रही है हो सकता है, और अतिरिक्त मूल्य वस्तुओं इसके लिए में देखा जाना चाहिए।
विचार?
उत्कृष्ट जिओबार्टम। उसने मुझे "डुह" पल दिया। हाँ, डोमेन में इंटरफेस को परिभाषित करें, रिपोजिटरी को पृथक असेंबली में लागू किया जाना चाहिए (MySQLProviver, MsSqlProvider, एक्सएमएलप्रोवाइडर, आदि)। और कुछ प्रकार के आईओसी कंटेनर (कैसल विंडसर आई लव) ऐप लेयर पर इसे तार करने के लिए इस्तेमाल किया जाता है। बिल्कुल सही। – eduncan911
एएसपी.नेट एमवीसी के मामले में, नियंत्रक (यूआई) में रिपोजिटरी इंजेक्ट करना वास्तव में आसान है परत) कैसल विंडोसर के माध्यम से। स्टीवन सैंडर्सन का एएसपी.नेट एमवीसी फ्रेमवर्क पूर्वावलोकन में इसका एक अच्छा उदाहरण था। डोमेन -डिवन डिजाइन त्वरित रूप से पुस्तक मैंने कहा है कि यूआई, ऐप और डोमेन इन्फ्रा का उपयोग कर सकते हैं। – eduncan911
मेरे साथ एकमात्र मुद्दा यह है कि मेरी पुस्तक कहती है कि इंफ्रास्ट्रक्चर कभी भी कुछ भी संदर्भित नहीं करता है। यूआई-> ऐप, डोमेन, और इन्फ्रा। ऐप-> डोमेन और इन्फ्रा। और, डोमेन-> इन्फ्रा। मुझे पता है मुझे पता है, यह सब किसी भी तरह दिशानिर्देश होने का अनुमान है। – eduncan911