Slide 1

Slide 1 text

Dapper + QueryObject Александр Бындю www.byndyu.ru

Slide 2

Slide 2 text

«Dapper + QueryObject», Александр Бындю, ByndyuSoft Обо мне 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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

«Dapper + QueryObject», Александр Бындю, ByndyuSoft 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»

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

«Dapper + QueryObject», Александр Бындю, ByndyuSoft QueryObject Описание шаблона: http://martinfowler.com/eaaCatalog/ queryObject.html • Инкапсулируем логику составления запроса

Slide 8

Slide 8 text

«Dapper + QueryObject», Александр Бындю, ByndyuSoft Примеры с QueryObject Полный список примеров: https://github.com/AlexanderByndyu/ByndyuSoft.Infrastructure/tree/master/ source/Infrastructure.Dapper.Tests/CRUD

Slide 9

Slide 9 text

«Dapper + QueryObject», Александр Бындю, ByndyuSoft Кэширование запросов в MSSQL • Точный кэш запроса • Использование параметров Как SQL Server компилирует динамический SQL http://www.somewheresomehow.ru/fast-in-ssms-slow-in-app-part3

Slide 10

Slide 10 text

«Dapper + QueryObject», Александр Бындю, ByndyuSoft Профилирование • Стандартный MSSQL профайлер • MiniProfiler: https://nuget.org/packages/ MiniProfiler

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

«Dapper + QueryObject», Александр Бындю, ByndyuSoft Недостатки 1. Написание SQL-кода вручную; 2. Нет готового кэша и готовых провайдеров для кэширования; 3. Надо больше думать при работе с данными; 4. Сложно работать с вложенными сущностями; 5. SQL-код будет зависеть от СУБД.

Slide 13

Slide 13 text

«Dapper + QueryObject», Александр Бындю, ByndyuSoft Расширения для Dapper 1. Dapper.Rainbow 2. Dapper Async 3. Dapper.Contrib 4. Dapper.Extensions

Slide 14

Slide 14 text

«Dapper + QueryObject», Александр Бындю, ByndyuSoft Аналоги • Massive • PetaPoco • OrmLite • Simple.Data • BLToolkit Примеры использования разных microORM: http:// yobriefca.se/blog/2011/06/21/microorms-for-dotnet-inserts- updates-deletes

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

«Dapper + QueryObject», Александр Бындю, ByndyuSoft Спасибо за внимание! 
 
 Буду рад ответить на ваши вопросы лично или через: blog.byndyu.ru 
 alexanderbyndyu [email protected]