3

Что-то, что я заметил, глядя на несколько наборов .NET для начинающих, заключается в том, что построение бизнес-объектов часто обрабатывается на уровне клиента. Затем бизнес-объект передается бизнес-уровню для манипулирования, сериализации в базу данных и т. Д. Не следует ли абстрагировать этот код на бизнес-уровень, чтобы клиенту только нужно передать необходимые данные? Есть ли преимущество иметь бизнес-уровень с абстракциями CRUD, которые принимают объекты только в качестве аргументов?Строительство объекта на клиенте или на бизнес-уровне?

ответ

3

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

Я могу представить себе сценарии, где построение относительно сложных типов в этом пункте было бы законным. Чем меньше сайт, тем более вероятно, что < 3 уровня могут быть лучше, чем строгий 3 уровня. Поэтому, чтобы быть откровенным в отношении комплектов стартеров, которые вы видите: возможно, масштаб настолько мал, что строгое разделение проблем будет излишним, и их подход вполне может быть подходящим для ситуации. Или, что они делают, так это complex, что это лучший способ справиться с этим. Чем сложнее проводка или интеграция, или если есть подключаемая модель или что-то еще, то, казалось бы, слишком сложный тип может быть тем, что обеспечивает согласованный гибкий интерфейс. Иногда небольшая сложность в одном месте экономит вам массу сложности в другом месте. Но чаще это не так. Я предполагаю, что на самом деле то, что вы видите как плохое. , , плохой.

  1. Многие Microsoft быстро начала демки и шаблоны имеют очень плохую архитектуру. Модель веб-форм сама по себе не поддается хорошему Разделение проблем. Вы увидите много официальных примеров: spaghetti code кошмары. Бизнес, DB и пользовательский интерфейс живущих вместе - это ужасная гармония.
  2. Если вы говорите о 3-й партии SDKs: многие из них требуют сложных типов, передаваемых в бизнес-объекты , потому что они были перенесены из C++ , но никогда не пересмотренные быть объектно-ориентированным. Пару раз мне приходилось делать какие-то безумные типы, чтобы перейти к некоторым объектам программного обеспечения для обработки изображений, где логически потребовалось только два простых значения параметров.
2

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

Смежные вопросы