प्रश्न 1 और 2 के लिए मैथ्यू के उत्तरों के साथ जाते हैं।
मैंने डेस्कटॉप अनुप्रयोगों के डीएएल की संरचना के लिए सबसे अच्छा तरीका जानने की कोशिश में बहुत समय बिताया है। और सबसे अच्छा तरीका वास्तव में आवेदन की जरूरतों पर निर्भर करता है। मैंने अपने एक ऐप में प्रत्येक डेटाबेस तालिका के लिए एक डीए क्लास होने की सड़क को नीचे कर दिया, जिसने खुद को एक केंद्रीय (यानी सिंगलटन) डेटाप्रॉइडर वर्ग के साथ पंजीकृत किया और सीआरयूडी को संभाला। प्रत्येक DA वर्ग तब यह तय कर सकता था कि वह RAM में सभी तालिका डेटा को कैश करना चाहता था या नहीं (प्रदर्शन!) और / या यह अन्य कंप्यूटरों पर चलने वाले अन्य क्लाइंट में स्वचालित क्लाइंट अपडेट को ट्रिगर करने की क्षमता की आवश्यकता है या नहीं (बहु-उपयोगकर्ता सोचें) संगामिति)। इससे नई डीएएल कक्षाओं को जोड़ना बहुत आसान हो जाता है, क्योंकि उन्हें जो करना है, वह पंजीकरण इंटरफ़ेस के अनुरूप है।
प्रत्येक डीएएल को इस तरह की कार्यक्षमता की आवश्यकता नहीं है, लेकिन मैंने सीखा है कि दृष्टिकोण (यानी एकल डेटा प्रदाता और स्थैतिक पंजीकरण के साथ सरल डीएएल कक्षाएं) ने मेरे जीवन को बहुत आसान बना दिया जब मैंने नई कक्षाएं जोड़ना शुरू किया।
मैं निश्चित रूप से उच्च स्तर की कक्षाओं में CRUD के निर्माण की सिफारिश नहीं करूंगा, जब तक कि यह एक बहुत ही सरल अनुप्रयोग न हो। DAL डेटा स्टोरेज का एक अमूर्त हिस्सा है। यदि आप भविष्य में अपने डेटा स्टोरेज को किसी बिंदु पर बदलने का निर्णय लेते हैं (भले ही यह केवल MS SQL के बजाय MySQL का उपयोग करने के लिए हो), तो आप इसके लिए बहुत आभारी होंगे। प्लस: बीएलएल वस्तुओं को उनके व्यापारिक तर्क संबंधों द्वारा संरचित किया जाना चाहिए। डीएएल ऑब्जेक्ट्स को स्टोरेज कंटेनरों के प्रकार से संरचित किया जाता है जो वे प्रतिनिधित्व करते हैं। मतभेद नाटकीय हो सकते हैं।
करो नहीं अपने DAL कक्षाएं स्थिर हैं। आप कोडिंग गति में क्या हासिल करते हैं आप परीक्षण क्षमता और लचीलेपन में कई बार खो देंगे।