2010-01-17 8 views
5

आम परिदृश्य:अच्छा प्रथाओं

Hierachical डोमेन मॉडल प्रस्तुति प्रयोजनों के लिए सपाट दृश्य मॉडल को मैप किया जा रहा है।

मेरे पास मेरे डोमेन में पूर्ण सत्यापन सेटअप है और यह पता लगाने के लिए कि कुछ संपत्ति अमान्य है, मैपिंग व्यू मॉडल को डोमेन ऑब्जेक्ट से मैप करना चाहते हैं। न ही मैं अपने दृश्य मॉडल में अपने सत्यापन तर्क को डुप्लिकेट करना चाहता हूं।

यहां कुछ अच्छे अभ्यास क्या हैं?

मैं दोनों मॉडल और डोमेन ऑब्जेक्ट्स के लिए इंटरफेस के खिलाफ हूं, क्योंकि मॉडल आमतौर पर स्ट्रिंग और फ्लैट होते हैं, जबकि डोमेन ऑब्जेक्ट्स अक्सर घोंसले होते हैं और गुणों के लिए कई अन्य डेटा प्रकार होते हैं।

मैं कुछ प्लग करने योग्य सत्यापनकर्ता के बारे में सोच रहा हूं जो डोमेन ऑब्जेक्ट्स को सत्यापित करने और मॉडलों को देखने के लिए पर्याप्त स्मार्ट होगा लेकिन कार्यान्वयन के बारे में थोड़ा सा संदेहजनक होगा।

लेकिन सादगी के लिए मैं इस दृष्टिकोण की ओर झुकाव रहा हूँ:

सर्वर साइड सत्यापन केवल डोमेन मॉडल में क्या होता है; मॉडल देखें मान्य नहीं हैं, लेकिन जावास्क्रिप्ट के साथ क्लाइंट पर डेटा मान्य है। तो ज्यादातर मामलों में मेरे दृश्य मॉडल मान्य होंगे और सत्यापन तर्क एक ही स्थान पर रहेगा और केवल डोमेन मॉडल में ही होगा। इस दृष्टिकोण में एक कमी है कि एएसपीएनटी एमवीसी 2 सत्यापन इसका समर्थन करने में सक्षम नहीं होगा। आपको क्या लगता है?

धन्यवाद।

उत्तर

1

माइक्रोसॉफ़्ट एंटरप्राइज़ लाइब्रेरी ऐसी 'प्लगिंग योग्यता' लाइब्रेरी प्रदान करती है जो मेमोरी पर आधारित है, तो मेमोरी पर आधारित है।

मुझे यह पसंद नहीं आया कि यह काम करता है, अन्य ईएल घटकों पर निर्भरताओं की संख्या का उल्लेख न करें, लेकिन यह अभी भी एक लायक हो सकता है।

मैं इस क्षेत्र में कोई विशेषज्ञ नहीं हूं लेकिन मुझे दृढ़ता से विश्वास है कि डेटा को इसके साथ कुछ करने के लिए और हमेशा अपने भंडार में आने से पहले सत्यापित किया जाना चाहिए। इसलिए, आपके सत्यापन तर्क के लिए सबसे अच्छी जगह आपका व्यवसाय तर्क परत है। क्लाइंट साइड सत्यापन, हालांकि उपयोगकर्ता के लिए सुखद, कोड रखरखाव को एक दुःस्वप्न बनाता है और इसके परिणामस्वरूप कोड डुप्लिकेशन भी होता है जो लाइन को और नीचे समस्याओं का कारण बन सकता है।

आपकी प्रस्तुति वस्तुओं को मेरी राय में, डीटीओ होना चाहिए।जब कोई उपयोगकर्ता आपके नियंत्रकों (और बीएलएल) पर डेटा वापस सबमिट करता है तो आप प्रेजेंटेशन ऑब्जेक्ट्स को व्यावसायिक ऑब्जेक्ट्स में बदलने के लिए पार्सर्स का उपयोग कर सकते हैं जिसे तब सत्यापित किया जा सकता है।

मैं रुडी लैकोवर के ब्लॉग (उर्फ द एंग्री .NET डेवलपर) के पढ़ने के बारे में बताता हूं। वह इस तरह की चीजों पर कहने के लिए बहुत अच्छी चीजों के साथ एक बहुत ही मामूली झटका है।

HTH

1

There is no validation approach that fits always

आपके मामले में, मैं एमवीसी 2 सत्यापन (क्लाइंट सत्यापन के साथ) का उपयोग करता हूं और डोमेन सत्यापन पर वापस आ जाता हूं, अगर व्यूमोडेल सत्यापन पास हो जाता है।

0

मुझे प्लग करने योग्य/इंजेक्शन योग्य वैधताओं का विचार पसंद है। इस प्रकार मैं आमतौर पर सत्यापन के बारे में जाता हूं (इससे कोई फर्क नहीं पड़ता कि यह वेबफॉर्म, एमवीसी, डब्ल्यूपीएफ, आदि ...) है। क्यूं कर? चूंकि सत्यापन नियम प्रति परिदृश्य और प्रति आवेदन स्तर में भिन्न होते हैं। उदाहरण: आपके व्यू मॉडल में कुछ सत्यापन नियम हो सकते हैं जो डोमेन या आधारभूत संरचना नियमों के बजाय UI लेआउट के कारण हैं। यदि आप नियम और वैधता को संगत बनाते हैं, तो आप प्रत्येक स्तर/परिदृश्य में कई डेटा बाधा नियमों का पुन: उपयोग कर सकते हैं।

हालांकि मुझे लगता है कि जावास्क्रिप्ट सत्यापन उपयोगकर्ता के लिए चीजों को चंचल बनाता है, मैं केवल वीएम में जावास्क्रिप्ट का उपयोग करने के लिए तैयार हूं।

संबंधित मुद्दे