2008-09-12 24 views
13

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

+5

Я знал, что эти типы комментариев превратится, если я отправил это.Я просто хотел посмотреть, что сообщество Stack Overflow подумало об этом вопросе. – 2008-09-12 21:07:38

ответ

0

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

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

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

4

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

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

+0

> Это позволяет вам более легко изменить технологию хранения физических данных (например, переход от файлов XML к базе данных или от SQL Server к Oracle или MySQL) Действительно ли это происходит в качестве запоздалой мысли? Я сомневаюсь в этом. – 2008-09-12 22:24:24

+0

@Grauenwolf: В то время как изменения баз данных не так часто, разделение вещей по-прежнему «Хороший способ сделать», что более распространено на практике, вы можете и можете изменить способ доступа к вашим данным, или настроить некоторые функции, и все это в одном месте. – Slartibartfast 2008-09-12 22:41:47

2

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

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

+0

Что делать, если я поместил свой доступ к данным в свой БАЛ? – 2008-09-12 21:14:31

13

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

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

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

+0

> Таким образом, если вам нужно изменить хранилища данных, вы не переписываете все это. Вы действительно собираетесь менять хранилища данных? Если вы не планируете это с самого начала, я сомневаюсь. – 2008-09-12 22:25:15

+0

Ну, в некоторых проектах я делаю все время. В моей среде dev я использую SQLite, а в производстве это MySQL. Рамка, которую я использую, делает это легко (Pylons). – swilliams 2008-09-12 22:32:25

1

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

1

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

1

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

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

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

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

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

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

7

Есть две основных целей слоя доступа к данным

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

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

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

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

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

GetOrdersForCustomer(42) 

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

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

The Purpose and function of a Data Access Layer

 Смежные вопросы

  • Нет связанных вопросов^_^