Akıcı Doğrulama ve Veri Ek Açıklamaları [kapalı]


124

ASP.NET MVC doğrulaması için kullanıldığında bu iki doğrulama paketi arasındaki işlemsel farklılıklar nelerdir? Nesne adlarına kadar benzer nesnelere sahip gibi görünüyorlar. Biri diğeriyle ilişkili mi? Farkları nelerdir? Bu farklılıklar hangi şekilde farklı kullanım durumlarını ifade ediyor?


52
Yapıcı olmadığı için kapatılan soruların genellikle çok fazla olumlu oyu olduğunu ve bu yüzden aslında insanlara yardımcı OLDUĞUNU belirtmek de ilginçtir. Bu şeyde bir sorun olmalı
Dmitry Efimenko

2
Bu tür soruların yararlı olduğuna katılıyorum, ancak aşağıdaki yanıtlar bana daha çok fikir gibi görünüyor, gerçekler değil.
Ian Warburton

3
Ben de tamamen aynı fikirdeyim, ancak "tercihleriniz nelerdir" yerine "farklılıklar nelerdir" sorusu muhtemelen durumdan kaçınırdı.
Jeremy A. West

Sanırım anlaşma, cevapların gerçeklerden ziyade fikirlere dayalı olması için bunu söylemeniz gerektiğidir. "En sevdiğin ne?" Diye sorma. ama "Aralarındaki operasyonel farklar nelerdir?" O zaman "Akıcı Doğrulamayı tercih ederim" gibi yanıtlar almazsınız. ama bunun yerine önce farklılıkları ön plana çıkaran ve ikinci olarak bulguları sunan şeyler.
2019

Yanıtlar:


113

Akıcı Doğrulamayı tercih ederim :

  1. Doğrulama kurallarımın çok daha iyi kontrolünü sağlıyor
  2. Farklı özellikler üzerinde koşullu doğrulama yapmak, Veri Ek Açıklamalarına kıyasla çok daha kolaydır
  3. Doğrulamayı görüş modellerimden ayırır
  4. Veri Ek Açıklamaları ile karşılaştırıldığında birim testi çok daha kolaydır
  5. Çoğu standart doğrulama kuralı için mükemmel istemci tarafı doğrulama desteğine sahiptir

6
Bu makaleden ( webdevbros.net/2010/12/03/… ) birkaç puan daha : 1. Çok fazla ek açıklama, modelinizin çirkin görünmesine neden olur (3. noktaya benzer) 2. Daha iyi yeniden kullanılabilirlik 3. Daha iyi performans (Yansıma olmadığı gibi) )
SiberianGuy

2
@Idsa Performans noktası şüpheli görünüyor. Yansımanın model başına yalnızca bir kez olması gerekir. Bu iyi bir uygulama olduğunu varsayıyor, bu özel uygulamanın nasıl çalıştığını bilmiyorum.
CodesInChaos

@CodeInChaos, haklısın gibi görünüyor. Ama nasıl uygulandığından da emin olmadığım (ve bulacak kadar tembel) olduğu için onu orada tutacağım.
SiberianGuy

2
Ben FluentValidation'ı ikinci sıraya koyuyorum ... harika. Kod OKB perspektifinden bakıldığında, onaylama sorumluluğunu görüşlerden kaldırmasını ve ona kendi sınıflarını vermesini seviyorum. MVC1'de bir süre xVal'i denedim ... Veri Ek Açıklamaları basit şeyler için iyiydi, ancak bir avuç kurala sahip olduğunuzda, ViewModel'in neyi temsil etmesi gerektiğini zar zor söyleyebilirsiniz.
Brandon Linton

@Darin görünümdeki hata mesajlarını nasıl iletirsiniz? nasıl yapılacağına dair bir örnek verebilir misin?
Jaime Sangcap

32

Veri Ek Açıklamalarını açıkça tercih ediyorum çünkü ...

  1. tüm doğrulama kuralları, kodda tek bir yerde (model meta veri sınıfı içinde) yapılandırılabilir ve başka hiçbir yerde tekrar edilmesine gerek yoktur.
  2. Veri Ek Açıklama özniteliklerini kullanırken istemci tarafı doğrulama için mükemmel bir destek vardır (yine - doğrulama kurallarının tekrarı olmadan!) .
  3. Veri Ek Açıklama öznitelikleri, orada olduklarından emin olmak için test edilebilir .
  4. topluluk tarafından oluşturulan güzel ek doğrulama özellikleri vardır (örn. Veri Ek Açıklama Uzantıları ).

2
Bu özelliklerin çoğunun bir tür akıcı doğrulama ile elde edilebileceğini düşünüyorum. OP'deki kütüphanenin bunu destekleyip desteklemediğini bilmiyorum ama prensipte mümkün ve çok da zor değil.
CodesInChaos

Özniteliklerin varlığını test etmenin amacı nedir? Bu temelde doğrulama kurallarını tekrarlamak değil mi?
Sam

30
@Sam: Özelliklerin Veri Ek Açıklama öznitelikleriyle dekore edilip edilmediğini test ederek, özniteliğin kendi işlevselliğini test etmezsiniz; sadece orada olduğundan emin oluyorsun. Şimdi, iki yıl sonra, Darin'in tarafındayım ve onun cevabına katılıyorum.
Marius Schulz

@Sam, çünkü muhtemelen birinin onu modelinizden kaldırıp kaldırmadığını bilmek istiyorsunuz.
Steve

3
Harika yorum Marius. Bugünlerde EF öğreticilerinin çoğunda Veri Açıklamaları ile yapılan doğrulamanın gösterilmesi çok kötü. Başlangıçta ek açıklamaların basitliğinden de etkilenmiştim, ancak özel bir doğrulama kuralını uygulamaya çalıştıktan kısa bir süre sonra, Akıcı Doğrulama ekibine hemen atladım ... Bu arada, Darin'in göndermeyi bırakması çok kötü :( Çoğu StackOverflow'daki yorumları 5 yıldan fazla bir süredir devam ediyor !!!
Koshera
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.