Мне сложно решить, должно ли что-то быть частью домена или приложения.DDD: Что входит в домен и что входит в приложение?
Чтение через это answer помогает с такими понятиями, как авторизация, но я все еще сталкиваюсь с другими вещами.
Чтобы проиллюстрировать мое замешательство, рассмотрите случай публикации комментариев. Вот что должно произойти, прежде чем комментарий может быть опубликован. Я указываю в скобках, где, как мне кажется, эта функциональность должна идти.
- Убедитесь роль пользователя/статус разрешено комментировать этот пост (авторизация, идет к применению)
- Убедитесь, что пост, к которому мы комментирование существует и опубликован (домен)
- Убедитесь, что пользователь не добавил более 5 комментариев в последнюю минуту (дросселирование, интуиция говорит, что оно идет в приложение)
- Удостоверяются, что комментарий не является пустой строкой (Домен)
- Удостоверьтесь, что у комментариев нет грязных слов (Домен?)
- Убедитесь, что комментарий не имеет дубликатов от того же пользователя на этом посту (домен?)
- Формат комментарий (Application)
- Удалите некоторые HTML-теги из комментариев, которые не разрешены для текущего пользователя (Application)
- Check комментарий для спама (заявка?)
Я не могу решить, является ли проверка комментария для спама предметом озабоченности или приложения домена, то же самое касается дросселирования. С моей точки зрения, обе эти проблемы важны для меня и должны присутствовать. Но то же самое касается авторизации, и мы знаем, что это не должно быть в Domain.
Если я разделяю эти проблемы между службой домена и службой приложений, то я чувствую, что мой домен не полностью задействован и фактически полагается на приложение для проведения предварительных проверок. В этом случае, в чем дело, почему бы мне просто не сделать все это в приложении, чтобы уменьшить путаницу?
Моя текущая настройка делает это:
Controller -> App.CommentingService.Comment() -> Domain.CommentingService.Comment()
Было бы полезно, если бы кто-то мог бы пройти через все необходимые шаги, чтобы создать комментарий и назначить его на правый слой дает некоторые рассуждения позади.
Дросселирование - это обеспечение того, чтобы спамеры могли содержаться. Кроме того, проверяет, содержит ли комментарий спам-ссылки для домена? Я хотел бы, чтобы это произошло независимо от того, было ли это в веб-приложении, веб-службе SOAP или настольном приложении. То же самое касается дросселирования. –
Я думаю, что ваш ответ действительно хорош. Это заставило меня задуматься о каждом требовании, когда я спросила себя: «Будет ли домен сломан, если это правило не будет применено?». Поэтому для большинства из них ответ отрицательный. Домен остается неповрежденным, если не задействованы дросселирование, повторяющиеся комментарии, грязные слова, формат, теги html или даже авторизация. Наша безопасность приложений, производительность, удобство, презентация могут завершиться неудачно, но домен будет по-прежнему правильным. Комментарии все равно будут загружаться и работать отлично, хотя и с грубыми словами и уродливым форматированием. –
Однако, если мы не будем настаивать на том, что комментарии должны принадлежать реальному сообщению или этот комментарий не должен быть пустым, это, скорее всего, нарушит домен. Однако неясно, будет ли домен нарушен, если мы разрешим публиковать его в неопубликованной должности или должности, где комментирование было закрыто. Технически говоря, все будет работать нормально, домен будет в такте, но бизнес-правило будет нарушено. Как вы относитесь к этому? –