$30 off During Our Annual Pro Sale. View Details »

Dapper + QueryObject

Dapper + QueryObject

Alexander Byndyu

March 20, 2013
Tweet

More Decks by Alexander Byndyu

Other Decks in Technology

Transcript

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

  2. «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
  3. «Dapper + QueryObject», Александр Бындю, ByndyuSoft Проблематика 1. Скорость 2.

    Гибкость запросов 3. Утечки памяти 4. Много чтения, мало записи
  4. «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»
  5. «Dapper + QueryObject», Александр Бындю, ByndyuSoft Ключевая особенность 1. Высокая

    скорость маппинга 2. Низкоуровневое управление запросами 3. Отсутствие накладных расходов
  6. «Dapper + QueryObject», Александр Бындю, ByndyuSoft Примеры Полный список примеров:

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

    queryObject.html • Инкапсулируем логику составления запроса
  8. «Dapper + QueryObject», Александр Бындю, ByndyuSoft Примеры с QueryObject Полный

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

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

    профайлер • MiniProfiler: https://nuget.org/packages/ MiniProfiler
  11. «Dapper + QueryObject», Александр Бындю, ByndyuSoft Преимущества 1. Высокая скорость

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

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

    Dapper.Rainbow 2. Dapper Async 3. Dapper.Contrib 4. Dapper.Extensions
  14. «Dapper + QueryObject», Александр Бындю, ByndyuSoft Аналоги • Massive •

    PetaPoco • OrmLite • Simple.Data • BLToolkit Примеры использования разных microORM: http:// yobriefca.se/blog/2011/06/21/microorms-for-dotnet-inserts- updates-deletes
  15. «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
  16. «Dapper + QueryObject», Александр Бындю, ByndyuSoft Спасибо за внимание! 


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