2008-08-08 24 views
5

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

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

ответ

7

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

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

2

Он стремится взять неопытную команду дольше, чтобы построить 3-tier.It больше кода, поэтому больше ошибок. Хотя я просто играю адвоката дьявола.

1

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

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

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

0

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

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

1

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

0

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

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

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