Подтвердить что ты не робот

Какова цель уровня доступа к данным?

Я давно начал проект и создал в своем проекте проект Data Access Layer, но в нем ничего не было. Какова цель слоя доступа к данным? Есть ли хорошие источники, которые я мог бы узнать больше о Уровне доступа к данным?

4b9b3361

Ответ 1

В двух словах: Loose Coupling

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

В наши дни различные рамки ORM представляют собой смешение DAL с другими слоями. Это обычно упрощает разработку, но изменение хранилищ данных может быть болезненным. Справедливости ради, изменение таких хранилищ данных довольно необычно.

Ответ 2

Существуют две основные цели уровня доступа к данным

  • Аннотация фактического механизма базы данных или другого хранилища данных, приложения могут переключаться с сказать, что Oracle использует сервер MS SQL

  • Аннотация модели логических данных   что ваш бизнес-уровень   отделившись от этих знаний и   агностик. Предоставление вам   способность изменять логические данные   модель без влияния на бизнес   Слой

Большинство ответов здесь дали первую причину. На мой взгляд, это второе, что гораздо важнее. По существу ваш бизнес-уровень не должен знать о используемой модели логических данных. Сегодня с ORM и Linq # 2, кажется, выходит из окна, и люди склонны забывать (или не могут видеть тонкие линии, которые делают и должны существовать) около # 2.

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

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

GetOrdersForCustomer(42)

И он возвращает точно данные, которые ему нужны, не зная, какие таблицы хранят эту информацию или отношения существуют и т.д.

Я написал статью в своем блоге, которая более подробно освещена.

Цель и функция уровня доступа к данным

Ответ 3

Уровень доступа к данным следует за идеей "разделения проблем", в соответствии с которой вся логика, необходимая для взаимодействия вашей бизнес-логики с вашим уровнем данных (база данных), изолирована от одного набора классов (уровня). Это позволяет вам более легко изменять технологию хранения физических данных (например, переходить из XML файлов в базу данных или из SQL Server в Oracle или MySQL), не оказывая большого влияния (и, если это делается с нулевым воздействием) на ваш бизнес-логика.

Существует множество инструментов, которые помогут вам создать свой слой данных. Если вы ищете фразу "объектный реляционный картограф" или "ORM", вы должны найти более подробную информацию.

Ответ 4

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

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

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

Ответ 5

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

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

Ответ 6

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

Ответ 7

Уровень доступа к данным используется для абстрагирования хранения и извлечения данных из его представления. Вы можете больше узнать об этом виде абстракции в 1994 году Шаблоны проектирования

Ответ 8

Цель состоит в том, чтобы отвлечь механизм извлечения данных от использования данных и манипуляции.

Преимущества:

  • Базовое хранилище может измениться (например, переключиться с Oracle на MSSQL), и вам нужен способ локализовать эти изменения.
  • Изменения схемы - см. выше
  • Вы хотите, чтобы режим был отключен от вашего db (демонстрационный режим): добавьте сериализацию/десериализацию файлов в DAL

Ответ 9

Я рекомендую вам прочитать здесь: http://msdn.microsoft.com/en-us/practices/default.aspx Использование DAL поможет вам изолировать доступ к данным из вашей презентации и бизнес-логики. Я использую его много, так что я могу легко поменять местами (через отражение и динамически загружать сборки) поставщиков данных.

Прочитайте, там много хорошей информации.

Также обратите внимание на Блок доступа к данным, если вы планируете использовать .NET. Это может быть большой помощью.