Разработать прикладной уровень, который не имеет зависимостей от уровня представления? - PullRequest
0 голосов
/ 31 июля 2011

Я изучаю общие стратегии развития, но у меня в голове много вопросов о них. Один из них касается создания прикладного уровня, у которого не должно быть зависимостей уровня представления. Например, в приложении MVC, допустим, у нас есть сервисы приложений, но эти сервисы приложений не проверяют проверку для входящих моделей данных из уровня презентации. Он проверяется только в контроллере с помощью проверок ASP.NET MVC, а сервисный уровень не содержит никаких элементов авторизации внутри Вся работа выполняется на уровне презентации. Как вы думаете, это правильная архитектура? Нужно ли мне снова включать все проверки и авторизации в сервисный уровень? Если вы скажете да, но как?

Как включить авторизацию в сервисный слой? Я действительно не знаю, как контролировать ауторизации внутри сервисного уровня. Дублирование проверок на уровне сервиса также может быть в порядке?

В конце концов, стоит ли делать такие, как дизайн, если я уверен, что уровень представления никогда не изменится?

1 Ответ

1 голос
/ 03 августа 2011

Проверка должна быть на уровне домена.В приложении DDD доменный (бизнес) уровень должен владеть проверкой, поскольку он знает о себе больше всего.Уровень обслуживания работает на домене и должен обрабатывать ошибки, в том числе ошибки проверки, возникающие на уровне домена.Обработка ошибки в этом случае может означать оборачивание ее в исключение уровня обслуживания и возврат кода ошибки, запись ошибки и т. Д. Авторизация также должна быть ответственностью уровня обслуживания.Это не означает, что уровень представления (ASP.NET MVC) не должен выполнять проверку или проверку авторизации.Проверка на уровне представления, как правило, является более легкой, чем проверка на уровне домена и службы, и выполняется для улучшения взаимодействия с пользователем.В конце концов, если большая часть проверки может быть выполнена на стороне клиента, почему бы не сделать это и сохранить поездку на уровень обслуживания?Та же логика применяется для авторизации.

В отношении дублирования логики проверки не существует решения, которое бы удовлетворяло всем случаям, и иногда вам приходится принимать небольшое дублирование, чтобы уменьшить общую сложность и улучшить удобство обслуживания.Самым простым способом проверки на уровне домена является использование стандартных средств защиты и создание экземпляров ArgumentException.В ASP.NET MVC самый простой способ проверки - использование атрибутов аннотаций данных.Часто бывает проще до некоторой степени дублировать логику проверки, чем реализовать всеобъемлющую систему проверки.Кроме того, может иметь место проверка, которая может быть выполнена только на уровне домена, что является еще одним аргументом для их разделения.

Авторизация на уровне сервиса может быть осуществлена ​​разными способами и зависит от используемой базовой технологии.При использовании WCF существует множество рекомендаций для выполнения авторизации.

...