2010-05-29 3 views
1

Является ли архитектура N-Tier только физическим разделением кода или что-то еще для этого?Является ли N-Tier Architecture только физическое разделение кода или что-то еще для него?

Какие типы кодирования мы помещаем в слой презентации, уровень приложения, уровень бизнес-логики, логику пользовательского интерфейса, уровень доступа к данным, объект доступа к данным?

Могут ли все упомянутые слои дать полностью функциональную архитектуру N-уровня?

Один случай:

Всякий раз, когда пользователь нажимает на кнопку, чтобы загрузить контент через AJAX, они нам кодирования для извлечения конкретного вывода HTML, а затем обновить элемент, так ли это кодирование JavaScript также лежат на другой уровень? Потому что если N-уровневая архитектура действительно касается физического разделения кода, я думаю, что лучше отделить кодировку JavaScript.

ответ

4

Уровни и слои - это совершенно разные вещи.

N-уровень меньше о разделении кода и о масштабируемости. Идея состоит в том, что вы можете легко масштабировать различные «ярусы» по мере необходимости. Большинство веб-сайтов - 2 уровня: веб-сервер и сервер баз данных. Иногда они идут до 3, с сервис-ориентированной архитектурой.

Слои - это все, что касается разделения кода и повторного использования. MVC - хороший пример многоуровневого кода.

Помимо всего этого и прежде, чем вы с радостью разместите барьеры между различными частями вашего кода, вам действительно нужно задать себе два вопроса: что вы разделяете и почему вы обеспокоены этим? Если вы не можете дать твердые ответы рок-н-роллерам (особенно второй), я бы сказал, что прекратите свое дело и отступите от клавиатуры. И по какому-то твердому ответу я не имею в виду «потому что bob сказал, что так оно и должно работать».

Потратьте время, чтобы действительно понять, что происходит, как на код, так и на ваше здравомыслие повлияет воздействие этих барьеров. Если они помогут, отлично; если они этого не делают, то хорошо.

+0

Какие типы кодирования мы помещаем в слой презентации, уровень приложения, уровень бизнес-логики, логику пользовательского интерфейса, уровень доступа к данным, объект доступа к данным ,? – Starx

+0

@Starx: На этот вопрос может быть трудно ответить без очень хорошего понимания того, что именно вы выполняете, и чего может потребовать проект в более поздний срок. Кроме того, инструменты, которые вы используете, такие как ORM (если есть), сервер базы данных (реляционный, nosql, даже бренд) и т. Д. Будут влиять на то, где вы вкладываете вещи. Короткий ответ, хотя должен спросить себя: «Что делает этот код?» Специфический код пользовательского интерфейса (например, большинство javascript, html, css, wpf, flash и т. Д.) Принадлежит к уровню представления. Валидация данных, принудительное выполнение отношений и т. Д. Могут быть на уровне бизнес-логики или в другом месте. – NotMe

1

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

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

Добавление

Сретение ярус содержит бы все, что связано с отображением информации для пользователя. Например, в MVC этот уровень подразделяется на контроллер, который извлекает информацию из уровня бизнес-логики (модели) и представления, которое отображает самую информацию. Уровень доступа к данным будет содержать код, используемый для извлечения информации из уровня данных.Уровни (ы) бизнес-логики будут содержать код, который извлекает информацию из уровня данных, обрабатывает эту информацию в объектной модели, которая учитывает бизнес-правила, и делает ее доступной для уровней выше нее, как уровень представления.

Причина, лежащая в основе уровней, заключается в том, что они обеспечивают степень отделения от уровня ниже. Например, предположим, что слой данных изменился или, более конкретно, продукт базы данных изменился. Это потребует обновления уровня данных, а не всей базы кода.

Использование определений, которые я предоставил, стандартный веб-сайт, основанный на базе данных, например, без вызовов услуг, действительно имеет только уровень представления и уровень данных (база данных), даже если он имеет несколько уровней представления, средние уровни и уровни данных. Если у вас есть служебные вызовы, в зависимости от того, где они вызваны, они будут представлять собой другой слой.

+0

Какие типы кодирования мы помещаем в слой презентации, уровень приложения, уровень бизнес-логики, логику пользовательского интерфейса, уровень доступа к данным, объект доступа к данным? – Starx

+0

@ Starx- Я изменил свое сообщение, чтобы ответить на ваш вопрос. Хотя я не упоминал об этом, объект доступа к данным можно использовать во многих контекстах. Как правило, он используется как средство для передачи информации между средним уровнем и уровнем данных. I.e., уровень данных извлекает данные из уровня данных и переходит к уровню выше, используя объект доступа к данным. Если ваш уровень данных возвращает DataTables, то DataTable является вашим объектом доступа к данным. – Thomas