2010-04-14 3 views
1

Я смущен о разных возможностях выразить трехмерную архитектуру.3-уровневая архитектура-расслоение и термин-mishmash

Data-Access-Layer 
Business-Layer 
Presentation Layer (User Interface) 

или

Database (aka Backend) 
Business-Layer 
Presentation Layer (User Interface) 

Почему вы можете пропустить базу данных в 1-ом подходе? Оба используют базу данных! Является ли база данных слоем или нет?

Что не так и что правильно?

Может кто-то из вас разъяснить это?

ответ

3
Data-Access-Layer 
Business-Layer 
Presentation Layer (User Interface) 

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

Так что это на самом деле:

[Data-Source] 
Data-Access-Layer 
Business-Layer 
Presentation Layer (User Interface) 

где [Data-Source] является база данных, XML, RSS, независимо от ... Я предпочитаю думать о источнике данных самого в качестве водителя, а не слой.

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

+0

термин источник данных является предметом интереса. Для меня этот термин говорит, что в базе данных нет логики. Правильно ли это предположение? Что такое, когда моя база данных содержит всю бизнес-логику? У меня все еще есть бизнес-уровень? – Rookian

+0

Вы найдете много дискуссий о том, «правильно ли» помещать бизнес-логику в базу данных. Что делать, если вы решили изменить серверы баз данных с MS SQL на MySQL? Внезапно вам придется переписать свою бизнес-логику. Что делать, если вы вообще удаляете базу данных и вместо этого используете XML? Твоя логика исчезла. Плюс, если у вас есть бизнес-логика, которая не имеет смысла находиться в базе данных, вы поддерживаете бизнес-логику в двух местах - плохая идея. В других случаях бизнес-логика может функционировать только в контексте базы данных. Вы должны приспособить абстракцию к вашей конкретной ситуации. –

+0

http://en.wikipedia.org/wiki/Business_logic предлагает статьи с обеих точек зрения. –

0

Считаете ли вы, что ваш dal не может использовать db, он может использовать xml-файл?

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

Материал, который входит в каждый слой, зависит от реализации уровней. Юо может обнаружить, что вы смешиваете свои слои между программами GUI/DB/BizLogic, но в реферате вы все еще поддерживаете эти слои.

данных Access-Layer
Бизнес-Layer
Presentation Layer (User Interface)

Учитывая выше, вы можете wirte код, который подключается к БД. Это DAL или логика?

Я бы подумал, что DAL, поскольку вы пишете код для доступа к данным.

0

Презентационный уровень
Это самый верхний уровень приложения. Уровень презентации отображает информацию, связанную с такими услугами, как просмотр товаров, покупку и содержимое корзины покупок. Он взаимодействует с другими уровнями, выводя результаты на уровень браузера/клиента и все остальные уровни в сети.
Уровень приложения (Business Logic/Logic Tier/Data Access Tier/Middle Tier)
Логический уровень выведен из уровня представления, и в качестве собственного уровня он управляет функциональностью приложения, выполняя детальную обработку.
Информационный ярус
Этот уровень состоит из серверов баз данных. Здесь информация сохраняется и извлекается. Этот уровень сохраняет данные нейтральными и независимыми от серверов приложений или бизнес-логики. Предоставление данных собственного уровня также повышает масштабируемость и производительность.

Смотрите следующие для более подробной информации:
http://en.wikipedia.org/wiki/Multitier_architecture

0

Группа шаблонов и практик Microsoft имеет отличный architecture guide, который проходит через все варианты этой проблемы. Он немного ориентирован на .NET, но очень применим к любой среде. Настоятельно рекомендуется.