मुझे वास्तव में चीजों को करने का 3 + 1 स्तर पसंद है।
यूआई के लिए एक स्तर, एक व्यापार तर्क के लिए, और लगातार डेटा के लिए। आखिरी बार आप कहते हैं? डोमेन ऑब्जेक्ट्स और इंटरफेस। इससे किसी भी एक या दो मुख्य स्तरों को डोमेन "टियर" लोड करना संभव हो जाता है, और कोड को काम करना चाहिए।
यह निर्भरता इंजेक्शन और नियंत्रण में उलटा सिद्धांत।
डेटा/दृढ़ता स्तर केवल दो चीजें करता है। यह डेटा बनाता है, पढ़ता है, अद्यतन करता है और हटा देता है, और इसे डोमेन ऑब्जेक्ट प्रारूप में मैप करता है।
यूआई टियर सटीक विपरीत करता है। यह डेटा को प्रदर्शित करता है और प्राप्त करता है जिस तरह से उपयोगकर्ता संबंधित हो सकता है, और डोमेन ऑब्जेक्ट प्रारूप से उस आउटपुट/इनपुट को मानचित्र करता है।
व्यापार तर्क स्तर को केवल एक चीज़ जानने की जरूरत है। व्यापार का तर्क। यह इस बात पर परवाह नहीं करता कि डेटा कहां से है, और यह इस बात पर परवाह नहीं करता कि डेटा स्तर कहां रखा जा रहा है। यह जानता है कि इसे एक ऐसे खाते को ध्वजांकित करना चाहिए जो अभी खत्म हो गया था, शारीरिक रूप से ऐसा कैसे करना है जो वास्तव में अपने काम का हिस्सा नहीं है।
डोमेन ऑब्जेक्ट्स में उनके पास कोई तर्क नहीं है, वे केवल स्तर के बीच डेटा पास करने के लिए कंटेनर हैं। इसका मतलब यह है कि आप निर्भरताओं के बारे में सोचने के बिना डोमेन ऑब्जेक्ट्स और इंटरफेस लोड कर सकते हैं।
दिन के अंत में मुझे लगता है कि मेरे पास स्पष्ट रूप से अलग-अलग स्तरों के साथ एक स्पष्ट स्पष्ट कोड आधार है। और कुछ सख्त इंटरफेस और अच्छी बेस क्लास के साथ कोडिंग का अधिकांश हिस्सा सिर्फ सॉफ्टवेयर को बता रहा है कि एक्स होने पर क्या करना है। बस यह कैसे होना चाहिए।
संपादित करें: ओह, हाँ। यह LINQ, सबसोनिक और अन्य ORMs दोनों के लिए सच है।