patterns by igor menkov part 1a

13
ВЯЖЕМ УЗОРЫ Игорь Меньков

Upload: anton-arhipov

Post on 01-Nov-2014

1.990 views

Category:

Technology


4 download

DESCRIPTION

design patterns

TRANSCRIPT

Page 1: Patterns By Igor Menkov   Part 1a

ВЯЖЕМ УЗОРЫИгорь Меньков

Page 2: Patterns By Igor Menkov   Part 1a

ПОСТАНОВКА ЗАДАЧИ

Задача создать приложение имеющее базу данных, пользовательский интерфейс и бизнес логику

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

одновременного доступа к данным несколькими пользователями

Обеспечить целостность данных

Наши руки не для скуки Мы не знаем о существовании фреймворков Или считаем, что фреймворк – это для ленивых

Page 3: Patterns By Igor Menkov   Part 1a

PATTERN – ЗАЧЕМ ЭТО НУЖНО?

Одна из основных задач шаблонов – избежать изобретения велосипеда

Многие шаблоны используются во всевозможных фреймворках

Page 4: Patterns By Igor Menkov   Part 1a

ИХ МНОГО, А ВРЕМЕНИ МАЛО…

Используем: Identity && Identity map Record set Optimistic Offline Lock Unit of Work

Теория: Fowler, M.

Patterns of Enterprise Application Architecture.

Page 5: Patterns By Igor Menkov   Part 1a

IDENTITY

Identity AKA Identity Field Хранит первичный ключ из БД в объекте

Как? Integer String Guid (Да, я работаю на платформе

Microsoft!)

Области использования: База данных и объект (Entity) Интеграция со внешними системами

Page 6: Patterns By Igor Menkov   Part 1a

IDENTITY MAP

Обеспечивает однократную загрузку объекта

Как? Типичный пример – hashtable

Области использования: Кэширование объектов Name-Value data storage

(Name == Identity) Оптимизация loop’ов

Page 7: Patterns By Igor Menkov   Part 1a

RECORD SET Суть Record Set в предоставлении

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

Как? Обычно представляют собой классы,

сгенерированные исходя из схемы базы данных

Области использования: Приложения с небольшим

количеством таблиц

Page 8: Patterns By Igor Menkov   Part 1a

OPTIMISTIC OFFLINE LOCK

Предотвращение конфликтов между конкурирующими бизнес-транзакциями

Как? Timestamp, version WHERE id = ? and version = ?

Область применения: Многопользовательские системы Интеграция

Page 9: Patterns By Igor Menkov   Part 1a

UNIT OF WORK

Обслуживает набор объектов, изменяемых в бизнес-транзакции (бизнес-действии)

Как? Можно сделать самому – очень интересно, но

стоит ли? Практически все существующие на данный день

фреймворки имеют данную функциональность

Области применения: Бизнес транзакции любом приложении Бизнес транзакции в распределенных системах

Page 10: Patterns By Igor Menkov   Part 1a

КАК ЭТО РАБОТАЕТ?

sd Getting data

UI DatabaseUnitOfWork

User

Get data()

Get data()

Transform to SQL statment()

Get data from SQL()

Transform to record set()

Store identity and timestamp(version)

Display data to user()

Page 11: Patterns By Igor Menkov   Part 1a

КАК ЭТО РАБОТАЕТ? sd Sav ing data

UI DatabaseUnitOfWork

User

Save data()Get latest data()

Get latest data()

Update record set values()

Update timestamp(version) field

Save data()

Open transaction()

Commit changes()

Page 12: Patterns By Igor Menkov   Part 1a

КАК ЭТО РАБОТАЕТ? sd Business logic

UnitOfWork IdentityMap Database

Request data object()

Check in IndentityMap by Identity()

[if not exists in IdentityMap]:Get from database()

Store to IdentityMap()

Page 13: Patterns By Igor Menkov   Part 1a

СПАСИБО ЗА ВНИМАНИЕ!

ВОПРОСЫ?