Бизнес-логика + ASP.NET MVC

У меня есть приложение MVC, которое разделено на 3 уровня: - Презентация - ASp.NET MVC - Деловая логика - Здесь у нас есть сущности и сервисы объектов. У нас также есть сопоставители между объектами DAL и объектами BL - уровень доступа к данным - мы используем EF для запроса базы данных. Теперь мы создали фабрику для объектных сервисов, и позже фабрика внедряется в презентацию с помощью Unity. Каждый раз, когда мне нужно выполнить какую-то логику, я вызываю соответствующую службу, которая использует репозитории DAL для выполнения каких-то действий. Теперь, глупый вопрос, предположим, что я хочу проверить, могу ли я добавить пользователя с предоставленным ником. Псевдоним уникален в базе данных, поэтому перед добавлением пользователя я проверяю, существует ли пользователь с указанным ником. Итак, это простой запрос, который возвращает истину / ложь. Поскольку у меня нет никакой связи между уровнем представления и бизнес-уровнем, я проверяю это в сервисе. Но код служебного метода выглядит просто так:

var exists = repository.NicknameExists(nickname);
return exists;

Приведенный выше код выглядит странно, потому что он ничего не делает, просто вызывает метод и возвращает его значение. С другой стороны, у меня есть разделение проблем, поэтому мое решение хорошо организовано. Может кто-нибудь дать мне несколько советов, как мне решать подобные проблемы?




Ответы (1)


Я не вижу здесь никаких проблем. Для меня это идеальный метод:

public bool IsUserExists(string nickname)
{
    return repository.NicknameExists(nickname);
}

Я рекомендую вам прочитать это сообщение в блоге о веских причинах для создания подпрограммы или в главе 7.1 Code Complete 2ed

person bniwredyc    schedule 27.05.2011
comment
Можно ли его переименовать в DoesUserNicknameExist, чтобы моя внутренняя грамматика нацистской не взорвалась? ;) - person Glenn Slaven; 27.05.2011