धाराप्रवाह सत्यापन बनाम डेटा एनोटेशन [बंद]


123

ASP.NET MVC सत्यापन के लिए इन दो सत्यापन पैकेजों के बीच ऑपरेटिव अंतर क्या हैं? उन्हें समान वस्तुएं लगती हैं, जो उनके वस्तु नामों के लिए सभी तरह की हैं। क्या एक दूसरे से संबंधित है? उनके मतभेद क्या हैं? किस तरह से ये अंतर अलग-अलग उपयोग के मामलों को दर्शाता है?


52
यह भी ध्यान रखना दिलचस्प है, कि जो प्रश्न रचनात्मक नहीं होते हैं, वे आमतौर पर बहुत अधिक होते हैं, इसलिए वे वास्तव में लोगों के लिए मददगार होते हैं। इस चीज़ में कुछ गड़बड़ है
दिमित्री एफिमेंको

2
मैं इस बात से सहमत हूं कि इस प्रकार का प्रश्न उपयोगी है लेकिन नीचे दिए गए उत्तर मुझे अधिक लगते हैं और तथ्य नहीं।
इयान वारबटन

3
मैं पूरी तरह से सहमत हूं, हालांकि "क्या आपकी प्राथमिकताएं हैं" के बजाय "क्या अंतर हैं" पूछते हुए शायद स्थिति से बचा होगा।
जेरेमी ए। वेस्ट

मुझे लगता है कि यह सौदा आपको करना है, ताकि इसका उत्तर तथ्यात्मक के बजाय कम राय आधारित हो। मत पूछो, "आपका पसंदीदा क्या है?" लेकिन "ऑपरेटिव अंतर क्या हैं?" फिर आपको ऐसे जवाब नहीं मिलते, जैसे "मैं धाराप्रवाह सत्यापन पसंद करता हूं।" लेकिन इसके बजाय जो चीजें पहले से अलग हो जाती हैं वे पहले और दूसरे निष्कर्षों को अलग करती हैं।
रफिन

जवाबों:


113

मुझे धाराप्रवाह सत्यापन पसंद है :

  1. यह मुझे मेरे सत्यापन नियमों का बेहतर नियंत्रण देता है
  2. विभिन्न गुणों पर सशर्त सत्यापन करना डेटा एनोटेशन की तुलना में बहुत आसान है
  3. यह मेरे दृश्य मॉडल से मान्यता को अलग करता है
  4. डेटा एनोटेशन की तुलना में यूनिट टेस्टिंग कहीं अधिक आसान है
  5. इसमें अधिकांश मानक सत्यापन नियमों के लिए उत्कृष्ट ग्राहक पक्ष सत्यापन समर्थन है

6
इस से कुछ और बिंदु ( webdevbros.net/2010/12/03/… ) लेख: 1. बहुत अधिक एनोटेशन आपके मॉडल को बदसूरत बनाते हैं (आपकी बात 3 के समान) 2. बेहतर पुन: प्रयोज्यता 3. बेहतर प्रदर्शन (कोई प्रतिबिंब के रूप में) )
साइबेरियाई

2
@Idsa प्रदर्शन बिंदु संदिग्ध लगता है। प्रतिबिंब को केवल प्रति मॉडल एक बार होने की आवश्यकता है। यह एक अच्छा कार्यान्वयन मानता है, मुझे नहीं पता कि यह विशेष कार्यान्वयन कैसे काम करता है।
कोडइन्चोस

@ कोडकोड, लगता है कि आप सही हैं। लेकिन मैं इसे वहां रखूंगा क्योंकि मुझे भी यकीन नहीं है (और यह पता लगाने के लिए पर्याप्त आलसी है) कि यह कैसे लागू किया जाता है।
साइबेरियाईगू

2
मैं फ्लुएंटवैलिडेशन को दूसरा ... यह चट्टानों। एक कोड OCD परिप्रेक्ष्य से मुझे यह पसंद है कि यह विचारों से सत्यापन की जिम्मेदारी को हटा देता है और इसे अपनी कक्षाएं देता है। मैंने MVC1 में थोड़ी देर के लिए xVal की कोशिश की ... डेटा एनोटेशन साधारण सामान के लिए ठीक थे, लेकिन एक बार जब आप एक मुट्ठी भर से अधिक नियम प्राप्त कर लेते हैं, तो आप मुश्किल से बता सकते हैं कि ViewModel का प्रतिनिधित्व करने वाला क्या था।
ब्रैंडन लिंटन

@Darin आप दृश्य में त्रुटि संदेशों को कैसे पास करते हैं? क्या आप इसे करने के लिए एक उदाहरण प्रदान कर सकते हैं?
Jaime Sangcap

32

मैं स्पष्ट रूप से डेटा एनोटेशन को प्राथमिकता देता हूं क्योंकि ...

  1. सभी सत्यापन नियमों को कोड (मॉडल मेटाडेटा वर्ग के भीतर) में एक स्थान पर कॉन्फ़िगर किया जा सकता है और कहीं और दोहराए जाने की आवश्यकता नहीं है।
  2. डेटा एनोटेशन विशेषताओं का उपयोग करते समय क्लाइंट पक्ष सत्यापन के लिए उत्कृष्ट समर्थन है (फिर से - सत्यापन नियमों की पुनरावृत्ति के बिना!) ।
  3. डेटा एनोटेशन विशेषताओं को यह सुनिश्चित करने के लिए परीक्षण किया जा सकता है कि वे वहां हैं।
  4. समुदाय द्वारा निर्मित अच्छे अतिरिक्त सत्यापन गुण हैं (जैसे डेटा एनोटेशन एक्सटेंशन )।

2
मुझे लगता है कि इनमें से अधिकांश गुण धाराप्रवाह सत्यापन के कुछ रूप के साथ प्राप्त किए जा सकते हैं। मुझे नहीं पता कि ओपी में पुस्तकालय इसका समर्थन करता है, लेकिन सिद्धांत रूप में यह संभव है, और बहुत कठिन भी नहीं है।
कोडइन्चोस 19

विशेषताओं की उपस्थिति के लिए परीक्षण का क्या मतलब है? क्या यह मूल रूप से मान्यता नियम नहीं है?
सैम

30
@ सम: यह परीक्षण करके कि क्या गुणों को डेटा एनोटेशन विशेषताओं के साथ सजाया गया है, आप विशेषता की कार्यक्षमता का परीक्षण नहीं करते हैं; आप बस यह सुनिश्चित कर रहे हैं कि यह वहाँ है। मुझे कहना चाहिए कि अब, दो साल बाद, मैं डारिन के पक्ष में हूं और उनके जवाब से सहमत हूं।
मारियस शुल्ज

@Sam, क्योंकि आप शायद जानना चाहते हैं कि क्या कोई इसे आपके मॉडल से हटाता है।
स्टीव

3
शानदार टिप्पणी। ईएफ ट्यूटोरियल के बहुत बुरे दिन अब डेटा एनोटेशन के साथ किए गए सत्यापन दिखाते हैं। मुझे शुरू में एनोटेशन की सादगी ने भी झुका दिया था, लेकिन जल्द ही मैंने एक कस्टम सत्यापन नियम को लागू करने की कोशिश की, मैंने तुरंत टीम फ्लुएंट वैलिडेशन पर छलांग लगा दी ... वैसे, डारिन ने पोस्ट करना बंद कर दिया: StackOverflow में उनकी टिप्पणियाँ 5 से अधिक वर्षों के बाद हाजिर हैं
कोषेरा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.