Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
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

More Related Content

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