Использование MicroORM для слоя чтения в CQRS - PullRequest
3 голосов
/ 08 февраля 2012

Folks, Я рассматриваю возможность использования microORM, такого как Dapper.net, для компонента доступа для чтения в приложении CQRS (Asp.Net MVC), где Entity Framework используется для управления доменом.

Это CQRS light, я не использую источник событий и т. Д. Я уже несколько раз упоминал, что модель только для чтения в CQRS должна быть легкой / простой, как это возможно, для запросов к слою данных, возможно с использованием чего-то вроде ADO.net Это подразумевает потенциально жесткое кодирование строк SQL-запросов в нашем коде или в некотором XML-файле. Как мне оправдать этот подход, когда мы должны поддерживать сопоставления доменов с одной стороны и операторы SQL с другой?

Кто-нибудь использовал MicroORM в решении CQRS таким образом? Спасибо Мик

1 Ответ

7 голосов
/ 10 февраля 2012

Да, вы можете использовать Dapper, PetaPoco, Massive, Simple.Data или любые другие микро-ORM, которые вам нужны.В прошлом мы использовали NHibernate для решения этой проблемы, но это было 10000 фунтов.gorilla по сравнению с тем, что нам было нужно.

Одна вещь, которая нам действительно понравилась в Simple.Data и Petapoco при оценке этих библиотек, заключается в том, что каждый из них может адаптировать ваши запросы к различным механизмам баз данных (включая Mongo) с минимальной настройкой.необходимо, в то время как Dapper был в основном одной большой связкой строк SQL - это было "строго типизировано".Не поймите меня неправильно, Даппер великолепен, очень, очень быстр и будет отлично работать.Просто оцените свои функциональные и нефункциональные требования перед фиксацией.

Ниже приведено относительное количество загрузок с использованием NuGet для каждого из основных микро-ORM (по состоянию на 01.01.2012).Для нас всегда необходимо иметь хорошее сообщество с большим количеством загрузок, чтобы помочь сгладить проблемы при их возникновении:

  • 5568 Simple.Data
  • 4990 Petapoco
  • 4913 Dapper
  • 2203 Massive
  • 1152 OrmLite

Наконец, одна вещь, которую вы, возможно, захотите исследовать, - это ваши аргументы в пользу SQL для моделей чтения.Если ваш домен публикует события (независимо от источника событий), и вы пишете в простые модели с плоским / нереляционным представлением, вам, возможно, удастся получить что-то такое же простое, как файлы JSON, которые передаются в браузер, которыйбраузер затем интерпретирует и использует для заполнения ваших шаблонов HTML.Доступны всевозможные варианты, вам просто нужно определить, что лучше всего подходит для вашего сценария.

...