SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Dapper + QueryObject
     Александр Бындю
      www.byndyu.ru
Обо мне
       1.   Владелец компании ByndyuSoft
            http://www.byndyusoft.com

       2.   Консультант по вопросам разработки приложений и организации работы
            IT компаний

       3.   Внештатный сотрудник Академии АйТи

       4.   Технический блог http://blog.byndyu.ru

       5.   Преподаю в ЮУрГУ

       6.   Тренер на AgileCamp

       7.   Организую конференции .NET-разработчиков
            http://www.dotnetconf.ru

       8.   Веду группу по проблемам разработки приложений
            https://groups.google.com/forum/?hl=ru&fromgroups#!forum/dotnetconf



«Dapper + QueryObject», Александр Бындю, ByndyuSoft                               2
Проблематика
      1.    Скорость
      2.    Гибкость запросов
      3.    Утечки памяти
      4.    Много чтения, мало записи




«Dapper + QueryObject», Александр Бындю, ByndyuSoft   3
Dapper = Data Mapper
      1. GitHub: https://github.com/SamSaffron/dapper-dot-net

      2. Nuget: https://nuget.org/packages/Dapper

      3. DataMapper: http://martinfowler.com/eaaCatalog/dataMapper.html



      «Dapper is a single file you can drop in to
      your project that will extend your
      IDbConnection interface»

«Dapper + QueryObject», Александр Бындю, ByndyuSoft                  4
Ключевая особенность
      1. Высокая скорость
         маппинга
      2. Низкоуровневое
         управление запросами
      3. Отсутствие накладных
         расходов



«Dapper + QueryObject», Александр Бындю, ByndyuSoft   5
Примеры




      Полный список примеров:
      https://github.com/SamSaffron/dapper-dot-
      net/blob/master/Tests/Tests.cs
«Dapper + QueryObject», Александр Бындю, ByndyuSoft   6
QueryObject
      Описание шаблона:
      http://martinfowler.com/eaaCatalog/queryObject.html


      • Инкапсулируем логику составления
        запроса




«Dapper + QueryObject», Александр Бындю, ByndyuSoft         7
Примеры с QueryObject




      Полный список примеров:
      https://github.com/AlexanderByndyu/ByndyuSoft.Infrastructure/tree/master/
      source/Infrastructure.Dapper.Tests/CRUD

«Dapper + QueryObject», Александр Бындю, ByndyuSoft                         8
Кэширование запросов в MSSQL
      • Точный кэш запроса
      • Использование параметров




      Как SQL Server компилирует динамический SQL
      http://www.somewheresomehow.ru/fast-in-ssms-slow-in-app-part3


«Dapper + QueryObject», Александр Бындю, ByndyuSoft                   9
Профилирование

      • Стандартный MSSQL профайлер
      • MiniProfiler:
        https://nuget.org/packages/MiniProfiler




«Dapper + QueryObject», Александр Бындю, ByndyuSoft   10
Преимущества
      1. Высокая скорость работы
      2. Стабильность, отсутствие утечек памяти;
      3. Гибкость при создании запросов;
      4. Легок для работы приложения, не
         требователен к ресурсам;
      5. Чистый домен приложения, без
         дополнительных интерфейсов и
         изменения кода для работы ORM;
      6. Надо больше думать при работе с
         данными.
«Dapper + QueryObject», Александр Бындю, ByndyuSoft   11
Недостатки
      1. Написание SQL-кода вручную;
      2. Нет готового кэша и готовых
         провайдеров для кэширования;
      3. Надо больше думать при работе с
         данными;
      4. Сложно работать с вложенными
         сущностями;
      5. SQL-код будет зависеть от СУБД.
«Dapper + QueryObject», Александр Бындю, ByndyuSoft   12
Расширения для Dapper
      1.    Dapper.Rainbow
      2.    Dapper Async
      3.    Dapper.Contrib
      4.    Dapper.Extensions




«Dapper + QueryObject», Александр Бындю, ByndyuSoft   13
Аналоги
      •   Massive
      •   PetaPoco
      •   OrmLite
      •   Simple.Data
      •   BLToolkit

      Примеры использования разных microORM:
      http://yobriefca.se/blog/2011/06/21/microorms-for-dotnet-
      inserts-updates-deletes

«Dapper + QueryObject», Александр Бындю, ByndyuSoft               14
Ссылки:
      1. Пример использования:
         https://github.com/AlexanderByndyu/ByndyuSoft.Infrast
         ructure/tree/master/source/Infrastructure.Dapper
      2. Описание причин перехода:
         http://blog.byndyu.ru/2013/03/dapper-queryobject-
         orm.html
      3. Обертка в NuGet:
         https://nuget.org/packages/Infrastructure.Dapper




«Dapper + QueryObject», Александр Бындю, ByndyuSoft         15
Спасибо за внимание!

      Буду рад ответить на ваши
      вопросы лично или через:
                  blog.byndyu.ru

                  alexanderbyndyu

                  alexander.byndyu@gmail.com



«Dapper + QueryObject», Александр Бындю, ByndyuSoft   16

Weitere ähnliche Inhalte

Was ist angesagt?

Денис Паясь
Денис ПаясьДенис Паясь
Денис ПаясьCodeFest
 
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...Ontico
 
Поиск наизнанку
Поиск наизнанкуПоиск наизнанку
Поиск наизнанкуNikolay Sivko
 
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)Ontico
 
Антон Турецкий
Антон ТурецкийАнтон Турецкий
Антон ТурецкийCodeFest
 
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)Badoo Development
 
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...Ontico
 
Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"Fwdays
 
Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Ontico
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Vadim Madison
 
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...Ontico
 
Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Fwdays
 
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...Fwdays
 
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«Ещё один Поиск Яндекса» Александр Кошелев, Яндексit-people
 
мифы о спарке
мифы о спарке мифы о спарке
мифы о спарке Evgeny Borisov
 
Полный цикл разработки на Python + Django
Полный цикл разработки на Python + DjangoПолный цикл разработки на Python + Django
Полный цикл разработки на Python + DjangoAzamat Tokhtaev
 
MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?Alexey Tokar
 
Денис Иванов
Денис ИвановДенис Иванов
Денис ИвановCodeFest
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPITimur Shemsedinov
 
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения /  Дмитрий До...NoSQL внутри SQL: приземленные вопросы практического применения /  Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...Ontico
 

Was ist angesagt? (20)

Денис Паясь
Денис ПаясьДенис Паясь
Денис Паясь
 
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
 
Поиск наизнанку
Поиск наизнанкуПоиск наизнанку
Поиск наизнанку
 
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
 
Антон Турецкий
Антон ТурецкийАнтон Турецкий
Антон Турецкий
 
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
 
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
 
Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"
 
Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?
 
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
 
Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"
 
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
 
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
 
мифы о спарке
мифы о спарке мифы о спарке
мифы о спарке
 
Полный цикл разработки на Python + Django
Полный цикл разработки на Python + DjangoПолный цикл разработки на Python + Django
Полный цикл разработки на Python + Django
 
MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?
 
Денис Иванов
Денис ИвановДенис Иванов
Денис Иванов
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
 
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения /  Дмитрий До...NoSQL внутри SQL: приземленные вопросы практического применения /  Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
 

Ähnlich wie Dapper + QueryObject

Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word pressvovasik
 
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...Stas Vyschepan
 
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupДоклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupBadoo Development
 
Gennadiy Dubina - Android: Reverse engineering
Gennadiy Dubina - Android: Reverse engineeringGennadiy Dubina - Android: Reverse engineering
Gennadiy Dubina - Android: Reverse engineeringDataArt
 
My Open Source (Sept 2017)
My Open Source (Sept 2017)My Open Source (Sept 2017)
My Open Source (Sept 2017)Roman Dvornov
 
Как использовать JupyterHub на 100% на примере ML-школы DataGym и компании La...
Как использовать JupyterHub на 100% на примере ML-школы DataGym и компании La...Как использовать JupyterHub на 100% на примере ML-школы DataGym и компании La...
Как использовать JupyterHub на 100% на примере ML-школы DataGym и компании La...Mail.ru Group
 
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрМониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрsportgid
 
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)Ontico
 
Protrarctor and Angular
Protrarctor and AngularProtrarctor and Angular
Protrarctor and AngularSQALab
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaAlex Chistyakov
 
Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Alexey Kachayev
 
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"Fwdays
 
Среды и инструменты для управления проектами. IKRA. Digital-продюсер'14/1, СПб
Среды и инструменты для управления проектами. IKRA. Digital-продюсер'14/1, СПбСреды и инструменты для управления проектами. IKRA. Digital-продюсер'14/1, СПб
Среды и инструменты для управления проектами. IKRA. Digital-продюсер'14/1, СПбAndrasz Husti
 
Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Ontico
 
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...ZFConf Conference
 
Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush
 
Вячеслав Бахмутов
Вячеслав БахмутовВячеслав Бахмутов
Вячеслав БахмутовCodeFest
 
инструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэлинструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэлdrupalconf
 

Ähnlich wie Dapper + QueryObject (20)

Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word press
 
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
 
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupДоклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
 
Gennadiy Dubina - Android: Reverse engineering
Gennadiy Dubina - Android: Reverse engineeringGennadiy Dubina - Android: Reverse engineering
Gennadiy Dubina - Android: Reverse engineering
 
My Open Source (Sept 2017)
My Open Source (Sept 2017)My Open Source (Sept 2017)
My Open Source (Sept 2017)
 
Как использовать JupyterHub на 100% на примере ML-школы DataGym и компании La...
Как использовать JupyterHub на 100% на примере ML-школы DataGym и компании La...Как использовать JupyterHub на 100% на примере ML-школы DataGym и компании La...
Как использовать JupyterHub на 100% на примере ML-школы DataGym и компании La...
 
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрМониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
 
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
 
Protrarctor and Angular
Protrarctor and AngularProtrarctor and Angular
Protrarctor and Angular
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на Java
 
Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)
 
Этичный хакинг
Этичный хакингЭтичный хакинг
Этичный хакинг
 
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
 
Среды и инструменты для управления проектами. IKRA. Digital-продюсер'14/1, СПб
Среды и инструменты для управления проектами. IKRA. Digital-продюсер'14/1, СПбСреды и инструменты для управления проектами. IKRA. Digital-продюсер'14/1, СПб
Среды и инструменты для управления проектами. IKRA. Digital-продюсер'14/1, СПб
 
Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)
 
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
 
Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush Toster
Pavel Dovbush Toster
 
Вячеслав Бахмутов
Вячеслав БахмутовВячеслав Бахмутов
Вячеслав Бахмутов
 
инструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэлинструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэл
 
Intro
IntroIntro
Intro
 

Mehr von Alexander Byndyu

Инфраструктура для совместной предпроктной работы IT-компаний и реального ...
Инфраструктура для совместной предпроктной работы IT-компаний и реального ...Инфраструктура для совместной предпроктной работы IT-компаний и реального ...
Инфраструктура для совместной предпроктной работы IT-компаний и реального ...Alexander Byndyu
 
Применение low-code платформ в энтерпрайзе
Применение low-code платформ в энтерпрайзеПрименение low-code платформ в энтерпрайзе
Применение low-code платформ в энтерпрайзеAlexander Byndyu
 
Антихрупкость в IT или как полюбить изменения
Антихрупкость в IT или как полюбить измененияАнтихрупкость в IT или как полюбить изменения
Антихрупкость в IT или как полюбить измененияAlexander Byndyu
 
Карта гипотез как метод стратегического планирования
Карта гипотез как метод стратегического планированияКарта гипотез как метод стратегического планирования
Карта гипотез как метод стратегического планированияAlexander Byndyu
 
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработки
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработкиКак перейти от проектного мышления к продуктовому. Опыт из заказной разработки
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработкиAlexander Byndyu
 
История о том, как техническое задание подменяет цель проекта
История о том, как техническое задание подменяет цель проектаИстория о том, как техническое задание подменяет цель проекта
История о том, как техническое задание подменяет цель проектаAlexander Byndyu
 
Шпаргалка по IT-миру для предпринимателя
Шпаргалка по IT-миру для предпринимателяШпаргалка по IT-миру для предпринимателя
Шпаргалка по IT-миру для предпринимателяAlexander Byndyu
 
Микросервисы, чистый PaaS и конкурс Мисс Россия
Микросервисы, чистый PaaS и конкурс Мисс РоссияМикросервисы, чистый PaaS и конкурс Мисс Россия
Микросервисы, чистый PaaS и конкурс Мисс РоссияAlexander Byndyu
 
IT-директор на аутсорсе
IT-директор на аутсорсеIT-директор на аутсорсе
IT-директор на аутсорсеAlexander Byndyu
 
Бизнес-гибкость через микросервисную архитектуру
Бизнес-гибкость через микросервисную архитектуруБизнес-гибкость через микросервисную архитектуру
Бизнес-гибкость через микросервисную архитектуруAlexander Byndyu
 
Impact Mapping на практике v2
Impact Mapping на практике v2Impact Mapping на практике v2
Impact Mapping на практике v2Alexander Byndyu
 
Кнопочное мышление против целостного IT-продукта
Кнопочное мышление против целостного IT-продуктаКнопочное мышление против целостного IT-продукта
Кнопочное мышление против целостного IT-продуктаAlexander Byndyu
 
Пять самых важных составляющих процесса выпуска продуктов
Пять самых важных составляющих процесса выпуска продуктовПять самых важных составляющих процесса выпуска продуктов
Пять самых важных составляющих процесса выпуска продуктовAlexander Byndyu
 
Пять самых важных составляющих процесса выпуска проектов
Пять самых важных составляющих процесса выпуска проектовПять самых важных составляющих процесса выпуска проектов
Пять самых важных составляющих процесса выпуска проектовAlexander Byndyu
 
Impact mapping in practice
Impact mapping in practiceImpact mapping in practice
Impact mapping in practiceAlexander Byndyu
 
Impact Mapping на практике
Impact Mapping на практикеImpact Mapping на практике
Impact Mapping на практикеAlexander Byndyu
 
Customer satisfaction для программистов
Customer satisfaction для программистовCustomer satisfaction для программистов
Customer satisfaction для программистовAlexander Byndyu
 
CQRS на практике. В поиске точки масштабирования и новых метафор
CQRS на практике. В поиске точки масштабирования и новых метафорCQRS на практике. В поиске точки масштабирования и новых метафор
CQRS на практике. В поиске точки масштабирования и новых метафорAlexander Byndyu
 
Как размножается Sphinx
Как размножается SphinxКак размножается Sphinx
Как размножается SphinxAlexander Byndyu
 

Mehr von Alexander Byndyu (20)

Инфраструктура для совместной предпроктной работы IT-компаний и реального ...
Инфраструктура для совместной предпроктной работы IT-компаний и реального ...Инфраструктура для совместной предпроктной работы IT-компаний и реального ...
Инфраструктура для совместной предпроктной работы IT-компаний и реального ...
 
Применение low-code платформ в энтерпрайзе
Применение low-code платформ в энтерпрайзеПрименение low-code платформ в энтерпрайзе
Применение low-code платформ в энтерпрайзе
 
Антихрупкость в IT или как полюбить изменения
Антихрупкость в IT или как полюбить измененияАнтихрупкость в IT или как полюбить изменения
Антихрупкость в IT или как полюбить изменения
 
Карта гипотез как метод стратегического планирования
Карта гипотез как метод стратегического планированияКарта гипотез как метод стратегического планирования
Карта гипотез как метод стратегического планирования
 
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработки
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработкиКак перейти от проектного мышления к продуктовому. Опыт из заказной разработки
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработки
 
История о том, как техническое задание подменяет цель проекта
История о том, как техническое задание подменяет цель проектаИстория о том, как техническое задание подменяет цель проекта
История о том, как техническое задание подменяет цель проекта
 
Шпаргалка по IT-миру для предпринимателя
Шпаргалка по IT-миру для предпринимателяШпаргалка по IT-миру для предпринимателя
Шпаргалка по IT-миру для предпринимателя
 
Микросервисы, чистый PaaS и конкурс Мисс Россия
Микросервисы, чистый PaaS и конкурс Мисс РоссияМикросервисы, чистый PaaS и конкурс Мисс Россия
Микросервисы, чистый PaaS и конкурс Мисс Россия
 
IT-директор на аутсорсе
IT-директор на аутсорсеIT-директор на аутсорсе
IT-директор на аутсорсе
 
Бизнес-гибкость через микросервисную архитектуру
Бизнес-гибкость через микросервисную архитектуруБизнес-гибкость через микросервисную архитектуру
Бизнес-гибкость через микросервисную архитектуру
 
Impact Mapping на практике v2
Impact Mapping на практике v2Impact Mapping на практике v2
Impact Mapping на практике v2
 
Кнопочное мышление против целостного IT-продукта
Кнопочное мышление против целостного IT-продуктаКнопочное мышление против целостного IT-продукта
Кнопочное мышление против целостного IT-продукта
 
Пять самых важных составляющих процесса выпуска продуктов
Пять самых важных составляющих процесса выпуска продуктовПять самых важных составляющих процесса выпуска продуктов
Пять самых важных составляющих процесса выпуска продуктов
 
Пять самых важных составляющих процесса выпуска проектов
Пять самых важных составляющих процесса выпуска проектовПять самых важных составляющих процесса выпуска проектов
Пять самых важных составляющих процесса выпуска проектов
 
Час Кода 2015
Час Кода 2015Час Кода 2015
Час Кода 2015
 
Impact mapping in practice
Impact mapping in practiceImpact mapping in practice
Impact mapping in practice
 
Impact Mapping на практике
Impact Mapping на практикеImpact Mapping на практике
Impact Mapping на практике
 
Customer satisfaction для программистов
Customer satisfaction для программистовCustomer satisfaction для программистов
Customer satisfaction для программистов
 
CQRS на практике. В поиске точки масштабирования и новых метафор
CQRS на практике. В поиске точки масштабирования и новых метафорCQRS на практике. В поиске точки масштабирования и новых метафор
CQRS на практике. В поиске точки масштабирования и новых метафор
 
Как размножается Sphinx
Как размножается SphinxКак размножается Sphinx
Как размножается Sphinx
 

Dapper + QueryObject

  • 1. Dapper + QueryObject Александр Бындю www.byndyu.ru
  • 2. Обо мне 1. Владелец компании ByndyuSoft http://www.byndyusoft.com 2. Консультант по вопросам разработки приложений и организации работы IT компаний 3. Внештатный сотрудник Академии АйТи 4. Технический блог http://blog.byndyu.ru 5. Преподаю в ЮУрГУ 6. Тренер на AgileCamp 7. Организую конференции .NET-разработчиков http://www.dotnetconf.ru 8. Веду группу по проблемам разработки приложений https://groups.google.com/forum/?hl=ru&fromgroups#!forum/dotnetconf «Dapper + QueryObject», Александр Бындю, ByndyuSoft 2
  • 3. Проблематика 1. Скорость 2. Гибкость запросов 3. Утечки памяти 4. Много чтения, мало записи «Dapper + QueryObject», Александр Бындю, ByndyuSoft 3
  • 4. Dapper = Data Mapper 1. GitHub: https://github.com/SamSaffron/dapper-dot-net 2. Nuget: https://nuget.org/packages/Dapper 3. DataMapper: http://martinfowler.com/eaaCatalog/dataMapper.html «Dapper is a single file you can drop in to your project that will extend your IDbConnection interface» «Dapper + QueryObject», Александр Бындю, ByndyuSoft 4
  • 5. Ключевая особенность 1. Высокая скорость маппинга 2. Низкоуровневое управление запросами 3. Отсутствие накладных расходов «Dapper + QueryObject», Александр Бындю, ByndyuSoft 5
  • 6. Примеры Полный список примеров: https://github.com/SamSaffron/dapper-dot- net/blob/master/Tests/Tests.cs «Dapper + QueryObject», Александр Бындю, ByndyuSoft 6
  • 7. QueryObject Описание шаблона: http://martinfowler.com/eaaCatalog/queryObject.html • Инкапсулируем логику составления запроса «Dapper + QueryObject», Александр Бындю, ByndyuSoft 7
  • 8. Примеры с QueryObject Полный список примеров: https://github.com/AlexanderByndyu/ByndyuSoft.Infrastructure/tree/master/ source/Infrastructure.Dapper.Tests/CRUD «Dapper + QueryObject», Александр Бындю, ByndyuSoft 8
  • 9. Кэширование запросов в MSSQL • Точный кэш запроса • Использование параметров Как SQL Server компилирует динамический SQL http://www.somewheresomehow.ru/fast-in-ssms-slow-in-app-part3 «Dapper + QueryObject», Александр Бындю, ByndyuSoft 9
  • 10. Профилирование • Стандартный MSSQL профайлер • MiniProfiler: https://nuget.org/packages/MiniProfiler «Dapper + QueryObject», Александр Бындю, ByndyuSoft 10
  • 11. Преимущества 1. Высокая скорость работы 2. Стабильность, отсутствие утечек памяти; 3. Гибкость при создании запросов; 4. Легок для работы приложения, не требователен к ресурсам; 5. Чистый домен приложения, без дополнительных интерфейсов и изменения кода для работы ORM; 6. Надо больше думать при работе с данными. «Dapper + QueryObject», Александр Бындю, ByndyuSoft 11
  • 12. Недостатки 1. Написание SQL-кода вручную; 2. Нет готового кэша и готовых провайдеров для кэширования; 3. Надо больше думать при работе с данными; 4. Сложно работать с вложенными сущностями; 5. SQL-код будет зависеть от СУБД. «Dapper + QueryObject», Александр Бындю, ByndyuSoft 12
  • 13. Расширения для Dapper 1. Dapper.Rainbow 2. Dapper Async 3. Dapper.Contrib 4. Dapper.Extensions «Dapper + QueryObject», Александр Бындю, ByndyuSoft 13
  • 14. Аналоги • Massive • PetaPoco • OrmLite • Simple.Data • BLToolkit Примеры использования разных microORM: http://yobriefca.se/blog/2011/06/21/microorms-for-dotnet- inserts-updates-deletes «Dapper + QueryObject», Александр Бындю, ByndyuSoft 14
  • 15. Ссылки: 1. Пример использования: https://github.com/AlexanderByndyu/ByndyuSoft.Infrast ructure/tree/master/source/Infrastructure.Dapper 2. Описание причин перехода: http://blog.byndyu.ru/2013/03/dapper-queryobject- orm.html 3. Обертка в NuGet: https://nuget.org/packages/Infrastructure.Dapper «Dapper + QueryObject», Александр Бындю, ByndyuSoft 15
  • 16. Спасибо за внимание! Буду рад ответить на ваши вопросы лично или через: blog.byndyu.ru alexanderbyndyu alexander.byndyu@gmail.com «Dapper + QueryObject», Александр Бындю, ByndyuSoft 16