2009-04-15 33 views
7

Tôi đang cố gắng chọn một trong các khung xác thực cho một ứng dụng lớn, và trong khi cả hai tùy chọn dường như hấp dẫn, tôi đã tự hỏi liệu có bất kỳ ưu và khuyết điểm cụ thể nào mà tôi cần biết trước khi cam kết với một hay khác.Khung xác thực nào cần chọn: Khối xác thực mùa xuân hoặc Khối ứng dụng xác thực (Enterprise LIbrary 4.0)?

+0

Web hoặc máy tính để bàn? Bạn đang sử dụng các khối entlib khác? Bạn vui lòng chỉ định kiến ​​trúc? – boj

+0

Nó dành cho một ứng dụng web. Tôi có thể sử dụng các khối entlib khác, chẳng hạn như bảo mật và đăng nhập, vì nó sẽ được yêu cầu trong ứng dụng. Tôi sẽ không sử dụng Unity mặc dù, vì bit đó sẽ được xử lý bởi Spring.NET –

+1

Tôi không có kinh nghiệm với Spring.NET nhưng tôi là một fan hâm mộ lớn của khối EntLib. Bạn nên đọc http://weblogs.asp.net/ricardoperes/archive/2009/03/11/asp-net-validation-with-the-enterprise-library-validation-block.aspx và http: //www.davidhayden .com/blog/dave/archive/2007/02/28/PropertyProx – boj

Trả lời

6

Xác thực bằng thuộc tính không phải là giải pháp tốt nhất trong quan điểm của tôi. Thứ nhất, bạn phải tham khảo cơ sở hạ tầng trong mô hình miền. Thứ hai, bạn không có cơ hội để thêm xác nhận vào các lớp được biên dịch. Cuối cùng, bạn không thể xác thực logic phức tạp với các thuộc tính và bạn phải làm cho phương thức Validate thành thực thể và điều đó có vẻ khó xử.

Trong quá trình xác nhận ý kiến ​​của tôi nên được tách riêng với đối tượng khác. Ví dụ IValidator, nơi bạn có thể xác định xác nhận là quy tắc. Sử dụng khung như xVal giúp xác thực trong lớp trình bày bằng JavaScript.

Bạn có thể muốn tìm kiếm xValFluentValidation for .NET. NHibernate Validator 1.2 alpha cũng có cú pháp thông thạo và được tích hợp với xVal (không chắc chắn về alpha, nhưng 1.0 nên là).

Khối xác thực doanh nghiệp cũng có một số mặt tiêu cực. Thuộc tính của thực thể của tôi đã kết thúc có 3 hàng thuộc tính và làm cho khả năng đọc trở nên tồi tệ hơn. Việc cố gắng thêm xác nhận bằng các toán tử AND hoặc OR cũng khá đau.

+1

Chặn ứng dụng xác thực không được sử dụng với thuộc tính. Nó chứa một phương pháp xác thực dựa trên cấu hình. Đọc bài viết này: http://www.cuttingedge.it/blogs/steven/pivot/entry.php?id=46 – Steven

+1

Mặc dù tôi thích xác thực dựa trên cấu hình hơn cấu hình dựa trên thuộc tính vì cùng lý do như mô tả Marek, VAB 5.0 cho phép bạn xác định tính hợp lệ bằng cách sử dụng kỹ thuật lớp bạn thân đã được DataAnnotations giới thiệu. – Steven

+0

xVal đã được sử dụng với ASP.NET MVC 1.0 và hiện không được chấp nhận –

3

Một điều mà tôi đã tìm thấy với các khối Thư viện doanh nghiệp là nó có thể buộc bạn phải sử dụng các khối khác mà bạn không muốn/cần. Ví dụ, một Validation có thể sử dụng khối đăng nhập, nhưng bạn đã hài lòng với hệ thống đăng nhập của riêng bạn. bây giờ ứng dụng của bạn ghi lại mọi thứ theo những cách khác nhau. Điều đó nói rằng, tôi đã thích giao diện của khối Validation trong Ent Lib. Tôi đã không chơi với Spring.NET tho.

+0

Tôi chưa bao giờ gặp sự cố này với Khối ứng dụng xác thực. Bạn có thể chỉ ra mã hoặc vị trí mà VAB đang gọi Khối đăng ký ứng dụng không? – Steven

+1

Tôi đã xem xét sâu hơn về điều này, nhưng không có cuộc gọi trực tiếp từ các hội đồng xác nhận của Thư viện doanh nghiệp cho bất kỳ hội đồng đăng nhập nào. Tôi nghĩ rằng ứng dụng của bạn đã sử dụng phần ghi nhật ký trực tiếp. Trong các ứng dụng của tôi, tôi chỉ xuất bản các assembly cụ thể cho VAB. Đối với VAB 5.0, bạn cần: 'Common',' Validation', 'ServiceLocation',' Unity', 'Unity.Configuration' và' Unity.Interception'. – Steven

+0

Điều này có thể đã ở trên một phiên bản cũ hơn. Khi tôi nghĩ rằng tôi thấy đây là phiên bản 2.0 của Thư viện doanh nghiệp. – SteveM

Các vấn đề liên quan