मैं पूरे दिन स्टैक ओवरव्लो और अन्य साइटों पर लेखों को सर्वोत्तम वास्तुकला प्रथाओं के बारे में पढ़ रहा हूं और वहां बहुत सारे विवादित विचार और राय हैं।यदि इकाई फ्रेमवर्क/डीबीकॉन्टेक्स्ट डीएएल/रिपोजिटरी है, तो यह 3-स्तरीय आर्किटेक्चर के भीतर फिट है?
मैं अंततः एक दृष्टिकोण पर बस गया हूं, लेकिन मुझे यह तय करने में वास्तव में कठिन समय है कि ईएफ ऑब्जेक्ट्स (डीबीकॉन्टेक्स्ट, फ्लुएंट एपीआई, सीडिंग डेटा इत्यादि) कहां रखा जाए। यहां मेरे पास वर्तमान में है:
एएसपी.नेट एमवीसी प्रोजेक्ट: वास्तविक वेब प्रोजेक्ट। मानक दृश्य, नियंत्रक और दृश्य मॉडल शामिल हैं (मॉडल फ़ोल्डर के अंदर)।
डोमेन मॉडल प्रोजेक्ट: डेटाबेस (डोमेन) ऑब्जेक्ट्स को परिभाषित करने वाले सभी पीओसीओ वर्ग शामिल हैं। वर्तमान में, किसी भी ईएफ वस्तुओं का उल्लेख या संदर्भ नहीं है।
सेवा परत परियोजना: प्रत्येक प्रकार के डोमेन ऑब्जेक्ट (उदाहरण के लिए, आईपॉडक्ट सेवा, IOrderService, आदि) के लिए सेवा ऑब्जेक्ट्स शामिल हैं। प्रत्येक सेवा ईएफ ऑब्जेक्ट्स जैसे डीबीसेट्स और हैंडल बिजनेस नियमों का संदर्भ देती है - उदाहरण के लिए, एक उत्पाद जोड़ें, उत्पाद प्राप्त करें, ऑर्डर में उत्पाद संलग्न करें, आदि
तो सवाल यह है कि, इस कॉन्फ़िगरेशन में, ईएफ कक्षाएं कहां जाती हैं? शुरुआत में मैंने सेवा परत में सोचा था, लेकिन ऐसा लगता है कि यह समझ में नहीं आता है। मैंने उन्हें डोमेन मॉडल लेयर में रखने का विचार किया, लेकिन फिर यह डोमेन मॉडल को ईएफ से जोड़ता है, जो अनिवार्य रूप से एक डीएएल/रिपोजिटरी है। आखिरकार, मैंने सिर्फ ईएफ के लिए एक अलग डीएएल प्रोजेक्ट बनाने के बारे में सोचा, लेकिन ऐसा लगता है कि इसमें बड़ी कचरे की तरह लगता है कि इसमें 3-4 फाइलें होंगी (डीबीकॉन्टेक्स्ट और कुछ अन्य छोटी फाइलें)।
कोई भी कोई मार्गदर्शन प्रदान कर सकता है?
केवल एक की बजाय तीन परियोजनाएं बनाने के लिए आपको क्या चल रहा है? –
बेहतर विस्तारशीलता। डोमेन मॉडल और सेवाओं के लिए एक अलग परियोजना के साथ, आपके पास एक और एप्लिकेशन हो सकता है (उदाहरण के लिए, एक WinForms ऐप) जो कोड को डुप्लिकेट किए बिना आसानी से डोमेन और व्यावसायिक तर्क का उपभोग कर सकता है। इसके अलावा, यदि WinForms ऐप और एक एमवीसी ऐप है, तो व्यापार नियमों जैसी चीजें केवल दो जगहों के बजाय एक स्थान पर होने की आवश्यकता होती है। – Amberite