Похожие презентации:
аис 2 лекция
1. Архитектура информационных систем
Data Access Patterns2.
Работа с источником данныхх
Представлени
е (UI - front)
WindowsForm
s
C#
\/
Добавить
Удалить
MainForm.CS
Слой-адаптер
Слой модели
C#
C#
???
DataProcessin
g
Utility.CS
C#
FileUtility.CS
C#
Item.CS
БД
3.
Источник данных – файл вфайловой системе
Данный вариант чаще всего неприменим в реальных
приложениях из-за того, что файловая система часто
блокирует файл, к которому необходим доступ
программе. Нет возможности проводить несколько
операций над файлом разом.
XML
Data.XML
TXT
Data.TXT
Но данный вариант применим для случая с малым
количеством данных и низкой интенсивностью их
изменения в однопользовательских приложениях.
4.
Источник данных – реляционнаябаза данных
База данных – специализированное хранилище, которое имеет
ряд преимуществ:
• За счёт использования СУБД не происходит блокировки данных
• Транзакции в некоторых БД защищают от блокировки даже в
случае нескольких пользователей
• Уровень абстракции – данные хранятся в виде отношений –
таблиц, которые намного проще преобразовывать в объекты,
нежели строки.
• Унифицированность. SQL – технология, которая занимает
половину рынка СУБД, большая часть программистов его знают
хотя бы на базовом уровне
• Кроссплатформенность – обращение к файлам в разных ОС
сделано по разному, но СУБД одинаков для всех.
5.
Зачем нам БД и СУБД?Уровень абстракции - отношения
6.
Порядок работы приложения и СУБД1.Подключение
2.Создание канала запросов
3.Взаимодействие через запросы
4.Отключение
7.
Подключение и создание канала Предоставляет возможность открыть соединение сбазой данных и отправить туда SQL запрос. Всё
остальное остаётся за программистом
ADO
8.
ADO. ПримерПредоставляет возможность открыть соединение с
базой данных и отправить туда SQL запрос. Всё
остальное остаётся за программистом
Пример с сайта Metanit.com
9.
ADО+
• Максимально возможный
контроль над
запросами
• Больше возможностей
для оптимизации
• Серьёзные требования
к уровню знания SQL
помимо основного
языка приложения
• Необходимость явного
маппинга
10.
Маппинг данныхЭто процесс сопоставления полей данных из одного
набора данных с соответствующими полями в другом
наборе данных.
C
#
БД
11.
Источник данных – реляционнаябаза данных
Самые распространенные команды в
запросах:
• Select – выборка из таблицы
• Insert – вставить строку в таблицу
• Update – обновление всех данных в
таблице после завершения операций
• Delete – удаление строк из таблицы
12.
CRUD-операцииПри работе с источником данных
выделяют несколько стандартных
операций:
• Create – добавление записи в БД
• Read – чтение данных из БД
• Update – изменение данных в записи
• Delete – удаление записи
13.
Паттерн репозиторий(Repository)
14.
Паттерн репозиторий(Repository)
Репозиторий – класс, что инкапсулирует
необходимую для доступа к источником
данных логику. Этот паттерн ориентирован
на работу с доменными объектами,
разделяя технологию доступа к источнику
данных и модель предметной области.
15.
Паттерн репозиторий(Repository)
16.
Паттерн репозиторий(Repository)
17.
Паттерн репозиторий(Repository)
https://habr.com/ru/companies/custis/articles/2657
18.
Паттерн репозиторий(Repository)
19.
IDудалено
добавлено
20.
Паттерн репозиторий(Repository)
+
-
Выше
ремонтопригодность
• Увеличенный объём
кода
Легче описание
объектов
• Сложности с
нешаблонными
запросами
Больше модульность
приложения
• Проблема с явным
маппингом никуда не
делась
• Не решает проблему с
изменением БД
• Существует проблема с
перегрузкой БД
21.
А как?22.
А вот так! Слой доступа к даннымСлой доступа к данным (Data
Access Layer — DAL) в
программном обеспечении — это
слой компьютерной программы,
который предоставляет упрощенный
доступ к данным, хранимым в
постоянном хранилище какого-либо
типа, таком как реляционная база
данных, файл или другие типы
хранилищ
23.
Подключение к источнику данныхСлой доступа к
данным
C#
БД
TestDataGenerator
.CS
TXT
XML
Data.TXT
Data.XML
24.
Слой доступа к даннымх
Представлени
е
WindowsForm
s
C#
\/
Слой-адаптер
Слой модели
Библиотека
классов
C#
C#
???
DataProcessin
g
Utility.CS
MainForm.CS
Удалить
C#
ItemsRepo.CS
C#
FileUtility.CS
Добавить
Слой-адаптер
DAL
БД
25.
СЛОН в комнате1 сущность = 1 репозиторий = 1 строка подключения
26.
Множество репозиториевХранение репозиториев
Подключение к БД, через множество репозиториев
Постоянная эксплуатация подключений
Сохранение и откат изменений
27.
Сохранение и откат измененийБД, запиши
эти
изменения
ок
приложение
БД
(((
А нет,
откати
приложение
Не
могу
(
БД
(((
приложение
БД
28.
Паттерн единица работы(Unit of Work)
Паттерн Unit of Work позволяет упростить
работу с различными репозиториями и дает
уверенность, что все репозитории будут
использовать один и тот же контекст
данных.
В более сложных вариациях он также
управляет высвобождением памяти,
позволяет «накапливать» изменения в
разных репозиториях и только потом
отправлять их в базу одной транзакцией
или вообще откатить.
29.
Паттерн единица работы(Unit of Work)
30.
Repository и Unit of Work проблемы• Добавление всё большего количества
уникальных запросов
• Запросы с объединением таблиц
• Сокрытие уникальных особенностей
технологии доступа к данным, которые
можно было бы использовать
31.
Object-Relational Mapping• ORM - технология программирования, которая
связывает базы данных с концепциями объектноориентированных языков программирования, создавая
«виртуальную объектную базу данных»
32.
DapperDapper – это система (полу)автоматического
маппинга данных. Позволяет писать SQL-запросы к
БД, сопоставляя их с классами в C#.
33.
Dapper – добавление и удалениеобъекта
34.
Dapper – чтение из базы35.
Dapper – редактирование данных36.
Dapper+
-
• Оставляет гибкость
при работе с SQLзапросами
• Необходимость вручную
прописывать шаблонные
SQL-запросы
• Оставляет достаточно
высокую скорость
работы
• Трудности при
выполнении запросов,
требующих объединения
данных из нескольких
таблиц
37.
EntityFrameworkЭто полноценная ORM-система, что берёт на
себя задачи маппинга и предоставляет
возможность взаимодействия с объектами как
посредством LINQ в виде LINQ to Entities, так
и с использованием Entity SQL.
Данное решение позволяет абстрагироваться от
SQL и работать в привычной объектноориентированной парадигме программирования.
38.
EntityFramework – начало работы39.
EntityFramework – начало работы40.
EntityFramework – операции41.
EntityFramework+
Добавляет абстракцию
от SQL и позволяет
работать с привычным
кодом C#
Имеет предоставленные
возможности для
стандартных запросов
Имеет «буферную зону»,
которая накапливает
изменения, и потом
сохраняет их одним
запросом
Умеет объединять
данные
• Реализация
нестандартных
запросов может
оказаться трудоёмкой
• Скорость работы
значительно падает
из-за массивности
решения
42.
Entity FrameworkEntityFramework уже предоставляет
реализованные паттерны Repository и
UnitOfWork. Только реализованы они
следующими классами:
DataSet – это репозиторий
DbContext – единица работы
https://habr.com/ru/articles/335856/
43.
Порядок работы приложения и СУБД- Отключение
44. Порядок работы приложения и СУБД - Отключение
Использование using, во время подключения45.
2 лабораторная• К предыдущей лабораторной добавить
новый слой – Data Access Layer
• Вам необходимо подключить базу
данных
• Доступ к базе должен осуществляться
как через Dapper, так и через EF