Patterns By Igor Menkov   Part 1a
Upcoming SlideShare
Loading in...5
×
 

Patterns By Igor Menkov Part 1a

on

  • 1,928 views

design patterns

design patterns

Statistics

Views

Total Views
1,928
Views on SlideShare
930
Embed Views
998

Actions

Likes
0
Downloads
8
Comments
0

2 Embeds 998

http://www.devclub.eu 997
http://www.slideshare.net 1

Accessibility

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Основы современного программирования – большинство систем имеют данные требования.Отказ от фреймворков, чтобы объяснить – а как это работает.Повторение – мать учения.
  • Коротенько: что есть паттерн, для чего он нужен, нужно ли их знать
  • Сегодня говорим о следующих шаблонах – советы бывалого. Упор на паттерны используемых для манипулирования данными.Вопросы по теории перенаправить к Фаулеру. Есть и другие хорошие авторы и книги, но о них в другой раз.
  • Коротко definitionСпросить у зала области использованияДождаться ответов о primaryключеМожет быть дождаться слов о интеграции, если да похвалить и расширитьЕсли нет рассказатьКогда хорошо simpleтипы, а когда нет
  • Спросить у народа об области использованияУменьшает нагрузку на базу данныхName/Value – модный подход для хранения данныхLoop – на пальцах объяснить, если надо, бумага под рукой
  • Да, слово recordsetвызывает не всегда позитивную реакцию. Но, для небольших систем, без интеграцийОчень удобная вещь для быстроты програмирования.
  • Сначала спросить, потом рассказать. Основной упор на интеграционные системы.
  • Рассказать об основной идее – все в одной транзакции, проверка concurrency, DB трансакцию открывать только на момент update/delete/insertв базе данных. Использует: identity, identitymap. OOL
  • Получаем данные – ничего сложного и неизвестного.Ньюанс – сохранение timestampдля использования OOL
  • Сохранение данных:Timestamp, трансакция, сбор измененных данных и очередность записи в базу.
  • Cachesavesyourperformance

Patterns By Igor Menkov   Part 1a Patterns By Igor Menkov Part 1a Presentation Transcript

  • Вяжем узоры
    Игорь Меньков
  • Постановка задачи
    Задача создать приложение имеющее базу данных, пользовательский интерфейс и бизнес логику
    Дополнительные требования
    Уменьшить нагрузку на базу данных
    Многопользовательская система с возможностью одновременного доступа к данным несколькими пользователями
    Обеспечить целостность данных
    Наши руки не для скуки
    Мы не знаем о существовании фреймворков
    Или считаем, что фреймворк – это для ленивых
  • Pattern – зачем это нужно?
    Одна из основных задач шаблонов – избежать изобретения велосипеда
    Многие шаблоны используются во всевозможных фреймворках
  • Их много, а времени мало…
    Используем:
    Identity&&Identitymap
    Recordset
    OptimisticOfflineLock
    UnitofWork
    Теория:
    Fowler, M. Patterns of Enterprise Application Architecture.
  • Identity
    Identity AKA IdentityField
    Хранит первичный ключ из БД в объекте
    Как?
    Integer
    String
    Guid (Да, я работаю на платформеMicrosoft!)
    Области использования:
    База данных и объект (Entity)
    Интеграция со внешними системами
  • IdentityMap
    Обеспечивает однократную загрузку объекта
    Как?
    Типичный пример – hashtable
    Области использования:
    Кэширование объектов
    Name-Valuedatastorage(Name == Identity)
    Оптимизация loop’ов
  • Recordset
    Суть RecordSet в предоставлении структуры данных, которая выглядит в точности как результат SQL-запроса, но может управляться и обрабатываться любыми частями системы
    Как?
    Обычно представляют собой классы, сгенерированные исходя из схемы базы данных
    Области использования:
    Приложения с небольшим количеством таблиц
  • OptimisticOfflineLock
    Предотвращение конфликтов между конкурирующими бизнес-транзакциями
    Как?
    Timestamp, version
    WHERE id = ? and version = ?
    Область применения:
    Многопользовательские системы
    Интеграция
  • UnitofWork
    Обслуживает набор объектов, изменяемых в бизнес-транзакции(бизнес-действии)
    Как?
    Можно сделать самому – очень интересно, но стоит ли?
    Практически все существующие на данный день фреймворки имеют данную функциональность
    Области применения:
    Бизнес транзакции любом приложении
    Бизнес транзакции в распределенных системах
  • Как это работает?
  • Как это работает?
  • Как это работает?
  • Спасибо за внимание!Вопросы?