Является ли N-уровневая архитектура только физическим разделением кода или есть что-то большее? - PullRequest
1 голос
/ 29 мая 2010

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

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

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

Один случай:

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

Ответы [ 2 ]

4 голосов
/ 29 мая 2010

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

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

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

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

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

1 голос
/ 29 мая 2010

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

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

Добавление

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

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

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

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