यहाँ से मेरे लिए जाने का रास्ता है मैं वास्तव में काम करने के 3 + 1 स्तरीय तरीका पसंद है। यूआई के लिए एक स्तर, व्यापार तर्क के लिए एक, और लगातार डेटा के लिए। आखिरी बार आप कहते हैं? डोमेन ऑब्जेक्ट्स और इंटरफेस। इससे किसी भी एक या दो मुख्य स्तरों को डोमेन "टियर" लोड करना संभव हो जाता है, और कोड को काम करना चाहिए।
यह dependency injection और Inversion of Control सिद्धांतों पर भारी निर्भर करता है। डेटा/दृढ़ता स्तर केवल दो चीजें करता है। यह डेटा बनाता है, पढ़ता है, अद्यतन करता है और हटा देता है, और इसे डोमेन ऑब्जेक्ट प्रारूप में मैप करता है।
UI स्तर सटीक विपरीत करता है। यह डेटा को प्रदर्शित करता है और प्राप्त करता है जिस तरह से उपयोगकर्ता संबंधित हो सकता है, और डोमेन ऑब्जेक्ट प्रारूप से उस आउटपुट/इनपुट को मानचित्र करता है।
व्यवसाय तर्क स्तर को केवल एक चीज़ को जानने की आवश्यकता है। व्यापार का तर्क। यह इस बात पर परवाह नहीं करता कि डेटा कहां से है, और यह इस बात पर परवाह नहीं करता कि डेटा स्तर कहां रखा जा रहा है। यह जानता है कि इसे एक ऐसे खाते को ध्वजांकित करना चाहिए जो अभी खत्म हो गया था, शारीरिक रूप से ऐसा कैसे करना है जो वास्तव में अपने काम का हिस्सा नहीं है।
डोमेन ऑब्जेक्ट्स में कोई तर्क नहीं है, वे केवल स्तर के बीच डेटा पास करने के लिए कंटेनर हैं। इसका मतलब यह है कि आप निर्भरताओं के बारे में सोचने के बिना डोमेन ऑब्जेक्ट्स और इंटरफेस लोड कर सकते हैं।
दिन के अंत में मुझे लगता है कि मेरे पास स्पष्ट रूप से अलग-अलग स्तरों के साथ एक स्पष्ट स्पष्ट कोड आधार है। और कुछ सख्त इंटरफेस और अच्छी बेस क्लास के साथ कोडिंग का अधिकांश हिस्सा सिर्फ सॉफ्टवेयर को बता रहा है कि एक्स होने पर क्या करना है। बस यह कैसे होना चाहिए।
</rant>
संपादित करें: ओह, हाँ। यह LINQ, SubSonic, और अन्य ORM दोनों के लिए सच है।
स्रोत
2008-08-11 19:24:44
क्या होगा यदि आप डेटाबेस से 10000 पंक्तियां पढ़ना चाहते हैं और कुल मिलाकर स्टोर करना चाहते हैं? जब आप कर सकते थे नेटवर्क पर सब कुछ खींचें: कुल में डालें .. विवरण से चुनें? –
एक ओआरएम के साथ, आपको कुल प्राप्त करने के लिए 10000 पंक्तियों को पढ़ने की आवश्यकता नहीं है। उदाहरण के लिए, LinqToSql में एक संपत्ति का योग बनाने के लिए एक Sum विधि का उपयोग करना संभव है, जिसे तब उचित SQL में परिवर्तित किया जाता है जो SQL सर्वर को सभी पंक्तियों को वापस किए बिना योग की गणना करने देता है। –
@Ole: LinqToSql (जो केवल SQL सर्वर का समर्थन करता है, और एंटीटी फ्रेमवर्क के पक्ष में पहले से ही मर चुका है) अभी भी एक ब्लैक बॉक्स है, क्यों स्वयं SQL को नहीं लिखते? और यदि आप एक संग्रहीत प्रक्रिया में सारांश तर्क डालते हैं, तो आपको एप्लिकेशन को अपनी तालिकाओं में कच्ची पहुंच देने की आवश्यकता नहीं है। – ObiWanKenobi