Вяжем узоры<br />Игорь Меньков<br />
Постановка задачи<br />Задача создать приложение имеющее базу данных, пользовательский интерфейс и бизнес логику<br />Допо...
Pattern – зачем это нужно?<br />Одна из основных задач шаблонов – избежать изобретения велосипеда<br />Многие шаблоны испо...
Их много, а времени мало…<br />Используем:<br />Identity&&Identitymap<br />Recordset<br />OptimisticOfflineLock<br />Unito...
Identity<br />Identity AKA IdentityField<br />Хранит первичный ключ из БД в объекте<br />Как?<br />Integer<br />String<br ...
IdentityMap<br />Обеспечивает однократную загрузку объекта<br />Как?<br />Типичный пример – hashtable<br />Области использ...
Recordset<br />Суть RecordSet в предоставлении структуры данных, которая выглядит в точности как результат SQL-запроса, но...
OptimisticOfflineLock<br />Предотвращение конфликтов между конкурирующими бизнес-транзакциями<br />Как?<br />Timestamp, ve...
UnitofWork<br />Обслуживает набор объектов, изменяемых в бизнес-транзакции(бизнес-действии)<br />Как?<br />Можно сделать с...
Как это работает?<br />
Как это работает?<br />
Как это работает?<br />
Спасибо за внимание!Вопросы?<br />
Upcoming SlideShare
Loading in...5
×

Patterns By Igor Menkov Part 1a

1,631

Published on

design patterns

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,631
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Основы современного программирования – большинство систем имеют данные требования.Отказ от фреймворков, чтобы объяснить – а как это работает.Повторение – мать учения.
  • Коротенько: что есть паттерн, для чего он нужен, нужно ли их знать
  • Сегодня говорим о следующих шаблонах – советы бывалого. Упор на паттерны используемых для манипулирования данными.Вопросы по теории перенаправить к Фаулеру. Есть и другие хорошие авторы и книги, но о них в другой раз.
  • Коротко 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

    1. 1. Вяжем узоры<br />Игорь Меньков<br />
    2. 2. Постановка задачи<br />Задача создать приложение имеющее базу данных, пользовательский интерфейс и бизнес логику<br />Дополнительные требования<br />Уменьшить нагрузку на базу данных<br />Многопользовательская система с возможностью одновременного доступа к данным несколькими пользователями<br />Обеспечить целостность данных<br />Наши руки не для скуки<br />Мы не знаем о существовании фреймворков<br />Или считаем, что фреймворк – это для ленивых<br />
    3. 3. Pattern – зачем это нужно?<br />Одна из основных задач шаблонов – избежать изобретения велосипеда<br />Многие шаблоны используются во всевозможных фреймворках<br />
    4. 4. Их много, а времени мало…<br />Используем:<br />Identity&&Identitymap<br />Recordset<br />OptimisticOfflineLock<br />UnitofWork<br />Теория:<br />Fowler, M. Patterns of Enterprise Application Architecture.<br />
    5. 5. Identity<br />Identity AKA IdentityField<br />Хранит первичный ключ из БД в объекте<br />Как?<br />Integer<br />String<br />Guid (Да, я работаю на платформеMicrosoft!)<br />Области использования:<br />База данных и объект (Entity)<br />Интеграция со внешними системами<br />
    6. 6. IdentityMap<br />Обеспечивает однократную загрузку объекта<br />Как?<br />Типичный пример – hashtable<br />Области использования:<br />Кэширование объектов<br />Name-Valuedatastorage(Name == Identity)<br />Оптимизация loop’ов<br />
    7. 7. Recordset<br />Суть RecordSet в предоставлении структуры данных, которая выглядит в точности как результат SQL-запроса, но может управляться и обрабатываться любыми частями системы<br />Как?<br />Обычно представляют собой классы, сгенерированные исходя из схемы базы данных<br />Области использования:<br />Приложения с небольшим количеством таблиц<br />
    8. 8. OptimisticOfflineLock<br />Предотвращение конфликтов между конкурирующими бизнес-транзакциями<br />Как?<br />Timestamp, version<br />WHERE id = ? and version = ? <br />Область применения:<br />Многопользовательские системы<br />Интеграция<br />
    9. 9. UnitofWork<br />Обслуживает набор объектов, изменяемых в бизнес-транзакции(бизнес-действии)<br />Как?<br />Можно сделать самому – очень интересно, но стоит ли?<br />Практически все существующие на данный день фреймворки имеют данную функциональность<br />Области применения:<br />Бизнес транзакции любом приложении<br />Бизнес транзакции в распределенных системах<br />
    10. 10. Как это работает?<br />
    11. 11. Как это работает?<br />
    12. 12. Как это работает?<br />
    13. 13. Спасибо за внимание!Вопросы?<br />
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×