Преимущества 3-уровневой архитектуры? - PullRequest
1 голос
/ 26 декабря 2009

Я не совсем убежден в преимуществах 3-уровневой архитектуры. Почему же появился LINQ, который является более легким подходом к доступу к данным? Любой вклад будет оценен.

Ответы [ 3 ]

6 голосов
/ 26 декабря 2009

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

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

5 голосов
/ 26 декабря 2009

Вы должны сделать это наивным способом и потерпеть неудачу, прежде чем поймете проблемы, которые решают эти структуры и шаблоны.

Произошло со мной много вещей. Ветки SVN выглядели как неорганизованный способ сделать что-то, пока однажды я не пожалел, что не разветвился перед моими последними 5 коммитами. Шаблоны C ++ казались бесполезными и запутанными, пока я не стал просветленным; сейчас я использую их довольно часто. И каждая отдельная функция J2EE будет выглядеть бесполезной для всех, пока вы не создадите достаточно большое приложение и у вас не возникнут проблемы; тогда они могут быть именно то, что вам нужно. (таким образом, недостаток «требовать» их использования)

4 голосов
/ 26 декабря 2009

Как и в большинстве областей машиностроения, никогда не бывает идеального универсального решения для разработки или архитектуры. Так же и с n-уровневыми архитектурами.

Например, довольно много приложений отлично работают как одноуровневая или двухуровневая архитектура. Например, Microsoft Word работает достаточно хорошо, как одноуровневая система.

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

Приятная вещь во всех этих слоях:

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

LINQ, Language Integrated Query, тоже очень помогает, поскольку может абстрагироваться от многих более сложных частей работы со слоями персистентности. Например

  • SQL-подобный синтаксис довольно точно отображается в таблицы или представления базы данных SQL
  • Работа с более сложными нереляционными данными, такими как XML-файлы, упрощена

Без LINQ разработка персистентных слоев была неизменно повторяющейся, и никогда не приносила пользы.

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