Должна ли операция CRUD всегда проходить через BO? - PullRequest
0 голосов
/ 18 февраля 2010

У меня есть архитектура, которая выглядит так

Репозиторий -> BO -> WCF -> Web

и стих vica

Репозиторий <- BO <- WCF <- Web </p>

У меня вопрос: если бы у меня была простая операция CRUD, например, просто удалить запись по ее идентификатору, было бы приемлемо пропустить BO и перейти прямо в хранилище?

Репозиторий <- WCF <- Web </p>

Ответы [ 3 ]

1 голос
/ 19 февраля 2010

Нет, недопустимо - всегда выбирайте один и тот же путь:)

Как говорит Понт, в общем, все в порядке;но вы должны выбрать один метод и придерживаться его;быть последовательным.Если вы смешаете оба, вы почти гарантированно будете укушены.

Что касается того, какой из них взять - любой из них в порядке, если он отвечает вашим потребностям, предостережение знает, какие соответствующие риски могут вас укусить в долгосрочной перспективе.,Я бы почти всегда использовал подход "BO", так как накладные расходы невелики, и очень вероятно, что вы избежите много переделок, если требования к системе изменятся;наличие БО определенно безопаснее в долгосрочной перспективе.

1 голос
/ 19 февраля 2010

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

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

1 голос
/ 18 февраля 2010

Ответ, как всегда в архитектуре, «это зависит». Вы можете иметь архитектурные слои с или без разрешения обходов, при условии, что вы ясно знаете, что вы разрешаете, когда.

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

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

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