Есть ли какие-либо негативные причины для использования решения N-уровня? - PullRequest
5 голосов
/ 08 августа 2008

Я довольно новичок в своей компании (2 недели), и мы запускаем новую платформу для нашей системы, используя .NET 3.5 Team Foundation от DotNetNuke. Наш «архитектор» предлагает использовать один проект класса. Конечно, я возвращаюсь с «трехуровневой» архитектурой (бизнес, данные, проекты веб-класса).

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

Ответы [ 6 ]

7 голосов
/ 08 августа 2008

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

Все зависит от размера проекта, ожидаемого срока действия окончательного проекта и бюджета! Иногда, когда делать что-то «должным образом» является привлекательным, делать что-то более «легкое» может быть правильным коммерческим решением!

2 голосов
/ 08 августа 2008

неопытной команде требуется больше времени для создания 3-х уровней. Чем больше кода, тем больше ошибок. Я просто играю адвоката дьявола.

1 голос
/ 27 августа 2008

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

1 голос
/ 08 августа 2008

Я бы настаивал на N-уровневом подходе, даже если это небольшой проект. Если вы используете инструмент ORM, такой как codemith + nettiers, вы сможете быстро настроить проекты и разрабатывать код, который быстро решит ваши бизнес-проблемы.

Меня убивает, когда вы начинаете новый проект, и вы целыми днями сидите у вращающихся колес, обсуждая, как должна строиться «архитектура». Вы хотите тратить время на решение бизнес-задач, а не на решение проблем, которые другие люди решили для вас. Использование ORM (не важно, какой именно, просто выберите один и придерживайтесь его), чтобы помочь вам получить начальную тягу, поможет вам сосредоточиться на целях проекта, а не отвлекать вас от попыток решить проблемы «архитектуры».

Если, в конце концов, архитектор хочет использовать подход, основанный на одном проекте, то нет причин, по которым вы не можете создать папку app_code с папками BLL и DAL, чтобы разделить код на данный момент, что поможет вам перейдите к решению N-Tiered позже.

0 голосов
/ 08 сентября 2008

Единственный недостаток - сложность, но на самом деле трудно добавить некоторые доменные объекты и связать их со списком, а не использовать набор данных. Вам даже не нужно создавать три отдельных проекта, вы можете просто создать 3 отдельные папки в веб-приложении и дать каждому из них пространство имен, например, YourCompany.YourApp.Domain, YourCompany.YourApp.Data и т. Д.

Большим преимуществом является более гибкое решение. Если вы начнете писать свое приложение как приложение, ориентированное на данные, тесно связывая страницы веб-форм с наборами данных, вы в конечном итоге будете выполнять гораздо больше работы, а затем перейдете к более доменной модели, поскольку ваша бизнес-логика усложняется.

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

0 голосов
/ 08 августа 2008

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

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

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