हर बार जब मैं एक नए एएसपी.नेट एमवीसी वेब एप्लिकेशन पर काम करना शुरू करता हूं, तो मुझे यकीन नहीं है कि DataAnnotations
सत्यापन का उपयोग करना है या नहीं। इसके बारे में कुछ गलत लगता है।डेटाअनोटेशन या सेवाओं में मैन्युअल रूप से मान्य करें?
उदाहरण के लिए, मान लें कि मेरे पास UserService
है जो Create
AccountController
की क्रिया से CreateUserModel
पारित किया गया है। यह सुनिश्चित करने के लिए कि उपयोगकर्ता हमेशा एक नाम प्रदान करता है, मैंने [Required]
विशेषता रखने के लिए मॉडल की Name
संपत्ति सेट की है। अब मैं इस ज्ञान में सुरक्षित हूं कि मॉडल बाइंडर मुझे कभी भी CreateUserModel
नहीं देगा जब तक कि इसका नाम न हो।
मेरी समस्या यह है कि मेरे सिस्टम का पुन: प्रयोज्य घटक होने के लिए मेरे UserService
के लिए, यह इस तथ्य पर भरोसा नहीं कर सकता कि ऊपर की परत वैध डेटा की आपूर्ति कर रही है, और निश्चित रूप से इस डेटा को भी सत्यापित करना होगा। इसकी आवश्यकता तब होती है जब आप मानते हैं कि आप एक ऐसी वेब सेवा लिखना चाहेंगे जो पूरी तरह से UserService
का पुन: उपयोग करे (और उसके लिए सभी डेटा एनोटेशन सत्यापन करने के लिए मॉडल बाइंडर नहीं होगा)।
तो मेरा सवाल है: इस स्थिति के लिए सबसे अच्छा अभ्यास क्या है? डेटा एनोटेशन के साथ मान्य करें और सेवाओं में उस सत्यापन को दोहराएं? केवल सेवाओं में मान्य करें और अपवाद फेंक दें? दोनों का मिश्रण?
मुझे आशा है कि मेरा प्रश्न बहुत ही व्यक्तिपरक नहीं है, मैं मुख्य रूप से इस बात पर सर्वसम्मति स्थापित करने की कोशिश कर रहा हूं कि डेटा एनोटेशन के सत्यापन को अंत में मुझे समाप्त करने के लिए खत्म हो रहा है या नहीं।
यह वही है जो हम करते हैं, सिवाय इसके कि हम एक सीवीस परत को IVIIalidationDictionary पास करते हैं जिसे मॉडलस्टेट रैपर के रूप में कार्यान्वित किया जाता है, इसलिए सेवा परत सीधे मॉडलस्टेट में त्रुटियों को जोड़ने में सक्षम है लेकिन एएसपी.नेट एमवीसी पर निर्भरता के बिना। नियंत्रक को फिर मॉडलस्टेट में लौटाई गई त्रुटियों को जोड़ने के प्रबंधन के बारे में चिंता करने की आवश्यकता नहीं है। –