Xác thực thông thạo so với chú thích dữ liệu [đã đóng]


123

Sự khác biệt hoạt động giữa hai gói xác nhận này khi được sử dụng để xác thực ASP.NET MVC là gì? Họ dường như có các đối tượng tương tự, tất cả các cách để tên đối tượng của họ. Là một liên quan đến người khác? Sự khác biệt của họ là gì? Những cách khác nhau này biểu thị các trường hợp sử dụng khác nhau?


52
Một điều thú vị cần lưu ý là các câu hỏi được đóng vì không mang tính xây dựng thường có rất nhiều câu hỏi, vì vậy chúng thực sự hữu ích với mọi người. Có điều gì đó không ổn với điều này
Dmitry Efimenko

2
Tôi đồng ý rằng loại câu hỏi này hữu ích nhưng các câu trả lời dưới đây có vẻ giống ý kiến ​​của tôi hơn và không phải là sự thật.
Ian Warburton

3
Tôi cũng hoàn toàn đồng ý, tuy nhiên việc hỏi "sự khác biệt là gì" thay vì "sở thích của bạn là gì" có lẽ sẽ tránh được tình huống này.
Jeremy A. West

Tôi nghĩ rằng thỏa thuận là bạn phải từ nó để câu trả lời ít dựa trên ý kiến ​​hơn là thực tế. Đừng hỏi, "Sở thích của bạn là gì?" nhưng "sự khác biệt hoạt động giữa là gì?" Sau đó, bạn không nhận được câu trả lời như "Tôi thích Xác thực Thông thạo". nhưng thay vào đó, những thứ tạo ra sự khác biệt trước tiên và hiện tại phát hiện thứ hai.
ruffin

Câu trả lời:


113

Tôi thích Xác thực thông thạo :

  1. Nó cho phép tôi kiểm soát tốt hơn các quy tắc xác thực của mình
  2. Thực hiện xác nhận có điều kiện trên các thuộc tính khác nhau dễ dàng hơn nhiều so với Chú thích dữ liệu
  3. Nó tách xác thực khỏi các mô hình xem của tôi
  4. Kiểm tra đơn vị dễ dàng hơn nhiều so với Chú thích dữ liệu
  5. Nó có hỗ trợ xác thực phía máy khách tuyệt vời cho hầu hết các quy tắc xác thực tiêu chuẩn

6
Một số điểm khác từ bài viết này ( webdevbros.net/2010/12/03/ trên ): 1. Quá nhiều chú thích làm cho mô hình của bạn trông xấu xí (tương tự như điểm 3 của bạn) 2. Khả năng sử dụng lại tốt hơn 3. Hiệu suất tốt hơn (vì không có Phản xạ )
SiberianGuy

2
@Idsa Điểm hiệu suất nghe có vẻ đáng ngờ. Sự phản ánh chỉ cần xảy ra một lần cho mỗi mô hình. Điều này giả định việc triển khai tốt, tôi không biết cách triển khai cụ thể này hoạt động.
CodeInChaos

@CodeInChaos, có vẻ như bạn đúng. Nhưng tôi sẽ giữ nó ở đó vì tôi cũng không chắc chắn (và đủ lười biếng để tìm hiểu) cách nó được thực hiện.
SiberianGuy

2
Tôi thứ hai FluentValidation ... nó đá. Từ quan điểm mã OCD, tôi thích rằng nó loại bỏ trách nhiệm xác nhận khỏi các khung nhìn và cung cấp cho nó các lớp riêng. Tôi đã thử xVal một thời gian trong MVC1 ... Chú thích dữ liệu vẫn ổn đối với những thứ đơn giản, nhưng một khi bạn có nhiều hơn một số quy tắc, bạn hầu như không thể biết ViewModel sẽ đại diện cho cái gì.
Brandon Linton

@Darin làm thế nào để bạn vượt qua các thông báo lỗi trong chế độ xem? bạn có thể cung cấp một ví dụ làm thế nào để làm điều đó?
Jaime Sangcap

32

Tôi rõ ràng thích Chú thích dữ liệu vì ...

  1. tất cả các quy tắc xác thực có thể được cấu hình ở một nơi trong mã (trong lớp siêu dữ liệu mô hình) và không cần phải lặp lại ở bất kỳ nơi nào khác.
  2. có sự hỗ trợ tuyệt vời cho xác thực phía máy khách (một lần nữa - không lặp lại các quy tắc xác thực!) khi sử dụng các thuộc tính Chú thích dữ liệu .
  3. Thuộc tính chú thích dữ liệu có thể được kiểm tra để đảm bảo chúng ở đó.
  4. các thuộc tính xác thực bổ sung tốt đẹp được tạo bởi cộng đồng (ví dụ: Tiện ích mở rộng chú thích dữ liệu ).

2
Tôi nghĩ rằng hầu hết các tính chất này có thể đạt được với một số hình thức xác nhận thông thạo. Tôi không biết thư viện trong OP có hỗ trợ điều này không, nhưng về nguyên tắc thì điều đó là có thể, và cũng không khó lắm.
CodeInChaos

Điểm kiểm tra cho sự hiện diện của các thuộc tính là gì? Đó không phải là về cơ bản lặp lại quy tắc xác nhận?
Sam

30
@Sam: Bằng cách kiểm tra xem các thuộc tính có được trang trí bằng các thuộc tính Chú thích dữ liệu hay không, bạn không kiểm tra chức năng của chính thuộc tính đó; bạn chỉ chắc chắn rằng nó ở đó. Tôi nên nói rằng bây giờ, hai năm sau, tôi đứng về phía Darin và đồng ý với câu trả lời của anh ấy.
Marius Schulz

@Sam, bởi vì bạn có thể muốn biết nếu ai đó loại bỏ nó khỏi mô hình của bạn.
Steve

3
Nhận xét tuyệt vời Marius. Quá tệ, hầu hết các hướng dẫn của EF hiện nay đều cho thấy việc xác thực được thực hiện với Chú thích dữ liệu. Ban đầu tôi cũng bị cuốn hút bởi sự đơn giản của các chú thích, nhưng ngay sau khi tôi cố gắng thực hiện quy tắc xác thực tùy chỉnh, tôi đã nhảy vào nhóm Xác thực thông thạo ngay lập tức ... Nhân tiện, thật tệ khi Darin ngừng đăng :( Hầu hết những bình luận của anh ấy trong StackOverflow được phát hiện sau hơn 5 năm !!!
Koshera
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.