Проверка правильности ввода данных пользователем и проверки бизнес-объектов - PullRequest
1 голос
/ 14 января 2011

Я пытаюсь обернуть голову вокруг проверки ввода пользователя и проверки бизнес-объекта.Допустим, я работаю с объектом Customer.Он имеет следующие свойства: CustomerId, FirstName и LastName.FirstName и LastName требуются, и их длина не может превышать 50 символов.

Я использую ASP.NET MVC 3. Я также экспериментирую с Fluent Validation (но не обязательно должен быть этот механизм проверки).

Когда я нахожусь в представлении Создать клиента, я передаю представление CustomerViewModel:

[Validator(typeof(CustomerViewModelValidator))]
public class CustomerViewModel
{
   public string FirstName { get; set; }
   public string LastName { get; set; }
}

В CustomerViewModelValidator я устанавливаю необходимые правила для проверки, как описано выше.Это все хорошо подтверждает на вид.Теперь у меня есть вопрос.В моем приложении у меня есть сервисный уровень, здесь я хочу применить всю логику приложения.Допустим, я хочу сохранить нового клиента, тогда у меня будет метод Save customer в CustomerService, который вызывает метод Save в CustomerRepository.

У меня может быть другое приложение (кроме описанного выше веб-приложения), которое будет использоватьмой уровень обслуживания.Так что это будет означать, что мне придется проверять объект Customer, если он был создан.Возникают следующие вопросы:

  • Нужно ли проверять объект Customer в CustomerService, а также проверять FirstName и LastName?
  • Было бы лучше создать новый класс валидатора дляпроверить класс клиента?Или я должен поделиться им?
  • Нужно ли проверять также CustomerId?Я имею в виду, что он должен быть больше нуля, но как бы я действовал для нового Клиента, где Id равен 0?

Если кто-то может поделиться некоторыми идеями / статьями по этому поводу, он будет признателен.* Я хотел бы добавить некоторые бизнес-правила, где бы это было?Где и как мне реализовать бизнес-правила?

1 Ответ

0 голосов
/ 15 января 2011

Нужно ли проверять объект Customer в CustomerService, а также проверять FirstName и LastName?

По этому вопросу могут быть разные мнения, и мое мнение таково: если вы создаете повторно используемую службу, правильнее будет проверить объект Customer на уровне службы.

Было бы лучше создать новый класс валидатора для валидации класса Customer? Или я должен поделиться этим?

Вы должны создать новый валидатор. Помните, что CustomerViewModel и Customer - это два разных класса. Модель представления является определенной для данного представления и может содержать подмножество или расширенный набор свойств класса модели. Проверка на уровне службы должна проверять только бизнес-правила. Если вы используете SQL-сервер, эта проверка может выполняться даже на уровне базы данных (путем задания длины столбцов), и будет выдано исключение, если некоторые из этих бизнес-правил нарушается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...