2011-06-07 26 views
21

ASP.NET MVC 3 way üzerinden hangi koşullarda FluentValidation (FV)'u seçersiniz?Neden ASP.NET MVC doğrulaması yerine fluentvalidation kullanılır?

MVC üzerinden FV'nin avantajları nelerdir? Sonuncusuyla çok daha fazla kod yazmamız gerektiğini ve Veri Ek Açıklamaları ile kodu çöpleştirebileceğimizi anlıyorum. Ayrıca, FV kullanarak MVC'den özel doğrulama yazmanın daha kolay olduğu görülecektir. Bununla birlikte, MVC ile veri açıklamasını kullanmak ve jQuery doğrulamasını kullanmak mümkündür.

Görüşünüzde hangisini diğerinden seçersiniz? İkisini de kullanabileceğiniz durumlar var mı?

cevap

28

Akıcı doğrulama, doğrulama mantığını iş mantığından ayrı olarak ele almak istediğinizde kullanacağınız tahsis edilmiş validator nesnelerini kurmanın bir yoludur. Yön yönelimli programlama (AOP) paradigması, bir sistemde kesişen kaygıların ayrılmasını sağlar ve doğrulama, bu tür bir endişedir. Ayırma doğrulaması, alan kodunuzu temizlemeye ve daha tutarlı hale getirmenize yardımcı olur, ayrıca doğrulama mantığını aramanız için size tek bir yer sağlar.

MVC açıklamalı yönlendirmeli doğrulama, bir uygulamada bazı temel geçerliliği elde etmek için çok özel bir 'yol' yolu olup, bağımsız validator nesneleri oluşturma zahmetine girmeden, bunları düzenleyen ve hepsini bir araya getiren bir doğrulama sistemi oluşturur. Kurulumu çok kolaydır, ancak alan adı nesnelerini daha az temiz hale getirebilir.

Tüm doğrulama mantığının ek açıklamalarla işlenebileceği küçük sistemler için, yalnızca ek açıklamaları kullanmanızı öneririm, çünkü kurulumu çok kolaydır. Daha büyük, daha karmaşık sistemler için, validator nesneleri kullanarak doğrulama sorununu ayırmanızı tavsiye ederim.

Şahsen her iki yaklaşımı kullanmak istiyorum: etki alanı katmamda adanmış geçerlilik nesnelerine sahip olmanın yanı sıra, ViewModel sınıfları için doğrulama özniteliklerini ekleme (bu, ek açıklamaların etki alanı nesnelere dağılmadığı anlamına gelir). Bu küçük bir çoğaltma işlemidir, ancak ek açıklamaların kullanılması çok hızlı ve kolaydır, ekstra bakım maliyetine değer buluyorum. Özellikle üçüncü ve dördüncü paragraflar için

+0

+1. İnsanları çoğu zaman çok karmaşık olan şeyleri görüyor ve gerçek dünyada (bir noktada bir şeyi teslim etmek zorunda kalıyorsa), çözümü sorun haline getirmek önemli. Seninkiler çok zevkli pragmatik bir yaklaşım gibi görünüyor. –

+0

Nokta alındı. Ancak, "MVC ek açıklama odaklı doğrulama" bir uygulamada bazı temel doğrulama almak için çok 'ucuz' bir yol olduğunu söylediğinizde, ben kutu doğrulama dışında, yani özel doğrulama DEĞİŞTİRDİĞİNİZ varsayalım. Aksi halde, OP'deki bağlantıda sağlanan gibi MVC yolunda ilerleyen özel geçerliliği elde etmek için zaman ayırdığı için yanlış bir şeyler yapmalıyız. İkinci bağlantıda, elbette bununla ilgili konuştuğunuz endişelerin ayrılığı vardır, ancak elbette, veri ek açıklamaları vardır, ancak özel doğrulama sınıfının kendisi ayrıdır. – DavidS

+2

@DavidS - Ben yerleşik validator türleri demek istedim, evet - özel validators ile çalışma kümesinin üzerinden geçtikten sonra kullanmaları oldukça ucuz olurdu. FV size "geçerlilikleri düzenleyen bir doğrulama sistemi" verir ve sınıf seviyesindeki "Validator" nitelikleriyle güçlükleri azaltır; Hangi rotanın uygulanmasının gerekli olan validasyonun karmaşıklığı olduğuna karar vermede itici faktör olduğunu söyleyebilirim. –

İlgili konular