DataAnnotations против IDataErrorInfo - PullRequest
       25

DataAnnotations против IDataErrorInfo

7 голосов
/ 20 января 2010

Аннотации данных против IDataErrorInfo

Плюсы и минусы обоих? Преимущества одного над другим? (особенно относится к MVC)

Ответы [ 3 ]

6 голосов
/ 10 июня 2010

Поздний вход в обсуждение, так как я не хочу начинать новый вопрос. Я пришел к тому, чтобы определить наилучшую практику применения проекта ASP.NET MVC среднего размера.

Позвольте мне сначала обобщить наши варианты: -

1) IDataErrorInfo прост в реализации. Все, что вам нужно, это получить IDataErrorInfo в вашем классе Model. Суть в том, что вы позволяете привязке вашей модели обеспечивать соблюдение ваших бизнес-правил. Бизнес-правила должны соблюдаться моделью. Другой улов для IDataErrorInfo (и аналогично для DataAnnotations) заключается в том, что (перефразируя книгу Стивена Сандерсона , он не мог сообщать о множественных ошибках, относящихся к одному свойству, или множественных ошибках, относящихся к единой объектной модели.

2) DataAnnotation для меня, как проверка схемы (проверка). Это первая проверка, которую должно сделать ваше приложение. Однако (ИМХО) он не подходит для реализации ваших бизнес-правил.

3) Реализуйте свой собственный ModelBinder. Хотя это можно сделать, но, если говорить серьезно, использование ModelBinder для анализа и привязки ваших данных к вашей модели, а не для выполнения сложных проверок и проверок бизнес-правил. Я бы оставил проверку бизнес-правил на уровне вашей модели / домена.

4) Roll your own - Проверка с помощью сервисного уровня (см. this . Преимущество показанного примера состоит в том, что он отделяется от Controller и Model State с помощью класса интерфейса. Другой вариант - бросить соответствующий исключение из уровня модели. Последний вариант полезен при реализации уровня обслуживания в отдельном приложении (например, приложении WCF).

Что вы думаете? Для проектов среднего и большого размера, какой из перечисленных выше вариантов вы использовали (или намереваетесь принять) и почему?

Приветствия

5 голосов
/ 20 января 2010

Похоже, что DataAnnotations получают официальную поддержку в MVC 2.0. Скотт Гатри опубликовал хорошую статью о проверке модели в 2.0 с использованием DataAnnotations. Учитывая, что команда, похоже, движется в этом направлении, вы можете считать, что голосование в ее пользу.

4 голосов
/ 20 января 2010

DataAnnotations проще в реализации и получают непосредственную поддержку в MVC 2.0.

Однако IDataErrorInfo позволяет выполнять более сложную проверку (например, проверку, которая порождает несколько свойств и т. Д.).

Однако оба могут быть смешаны и использованы вместе. Ничто не мешает вам реализовать оба метода.

...