2012-02-08 4 views
3

Люди, Я рассматриваю использование микромонитуры, такой как Dapper.net, для компонента доступа для чтения приложения CQRS (Asp.Net MVC), при этом Entity Framework используется для управления доменом.Использование MicroORM для чтения слоя в CQRS

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

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

ответ

7

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

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

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

  • 5568 Simple.Data
  • 4990 Petapoco
  • 4913 щеголеватый
  • 2203 Массивная
  • 1152 OrmLite

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

+0

Могу прокомментировать, что мы используем Dapper для нашей читаемой модели. Мы просто возвращаем динамику, конвертируем их в JSON и передаем их в представление. Шаблоны Javascript и jquery создают содержимое страницы на основе JSON. Мы использовали бы базу данных объектов, но в ИТ-отделе все еще есть зависания, которые будут волноваться о том, что не используют SQL. – stimms

+0

@ user769405 Если вы хотите, чтобы стимулы отвечали, вам нужно включить их в свой комментарий для них, чтобы увидеть его. –

+0

@stimms. Если бы вы могли опубликовать фрагмент перехода от dapper к динамике в JSON :) – mikelus

Смежные вопросы