Разработка программного обеспечения - трехуровневая архитектура - PullRequest
2 голосов
/ 02 мая 2011

Уровень 3 - Интерфейс

Уровень 2 - Бизнес-логика (получить ввод от пользователя, проверить правильность, отправить в функцию базы данных)

Уровень 1 - База данных (создает, обновляет, получает записи и т. Д.)


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

Когда первая запись телефонного номера создается в базе данных, какой слой отвечает за проверку, должен ли телефонный номер быть установлен на основной или нет?

Ответы [ 5 ]

5 голосов
/ 02 мая 2011

Бизнес уровень.База данных должна хранить данные, а не принимать решения.Интерфейс просто взаимодействует с пользователем.Бизнес-уровень устанавливает правила.

3 голосов
/ 02 мая 2011

Ваша бизнес-логика должна обрабатывать это, когда телефонный номер добавляется пользователю.Вы можете убедиться, что он работает, предоставив для него модульные / интеграционные тесты.

2 голосов
/ 02 мая 2011

Я думаю, это зависит от того, к чему вы стремитесь. Так как это ваш бизнес уровень должен обрабатывать телефон проверяется / устанавливается в качестве основного. База данных все еще должна была бы хранить эту информацию некоторым образом, я думаю.

Однако в некоторых случаях, например при проверке безопасности, вам необходимо выполнить некоторые проверки на уровне интерфейса, логики и базы данных. Да, это избыточно, но я думаю, что вы захотите гарантировать, что хакеры, нарушающие ваш интерфейс или логику, не смогут возиться с вашими базовыми данными.

1 голос
/ 02 мая 2011

Уровень данных в N-уровневом приложении на самом деле не должен делать ничего, кроме как вводить значения и получать значения. Думайте об этом как о службе сохранения.

Все остальное входит в то, чтоизвестный как бизнес и / или логический уровень, за исключением кода пользовательского интерфейса (вы должны хранить эти вещи отдельно, следуя чему-то вроде MVP, MVC или MVVM).

Хотя эта простая проблема на самом деле вызывает проблему с транзакциямиваша модель данных должна в конечном итоге предотвратить это, но если вы не можете завершить операцию как элементарный блок, всегда есть вероятность, что два телефонных номера будут введены одновременно, и оба они окажутся первичными (в зависимости от задержки между приложением ибаза данных).Чтобы корректно обрабатывать эти ситуации, вам нужно, по крайней мере, подумать о восстановлении ошибок (обработке ошибок), которое распространяет эти проблемы осмысленным образом.Не просто сбой вашего приложения.

0 голосов
/ 07 августа 2015

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

...