Архитектура информационных систем
Порядок работы приложения и СУБД - Отключение
3.18M

аис 2 лекция

1. Архитектура информационных систем

Data Access Patterns

2.

Работа с источником данных
х
Представлени
е (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.

Dapper
Dapper – это система (полу)автоматического
маппинга данных. Позволяет писать 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 Framework
EntityFramework уже предоставляет
реализованные паттерны Repository и
UnitOfWork. Только реализованы они
следующими классами:
DataSet – это репозиторий
DbContext – единица работы
https://habr.com/ru/articles/335856/

43.

Порядок работы приложения и СУБД
- Отключение

44. Порядок работы приложения и СУБД - Отключение

Использование using, во время подключения

45.

2 лабораторная
• К предыдущей лабораторной добавить
новый слой – Data Access Layer
• Вам необходимо подключить базу
данных
• Доступ к базе должен осуществляться
как через Dapper, так и через EF
English     Русский Правила