Я давно начал проект и создал в своем проекте проект Data Access Layer, но в нем ничего не было. Какова цель слоя доступа к данным? Есть ли хорошие источники, которые я мог бы узнать больше о Уровне доступа к данным?
Какова цель уровня доступа к данным?
Ответ 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. Это может быть большой помощью.