Принцип архитектурного шаблона CQS заключается в том, что вы отделяете свои запросы и команды от разных путей. В идеале, ваш хранилище персистентности можно разделить на разделы «чтение/запись», но в моем случае есть единственная нормализованная база данных.Как выполняется разделение запросов команд (CQS) при использовании ORM?
Если вы используете ORM (NHibernate в моем случае), ясно, что ORM используется при выдаче команд. Но как насчет всех различных запросов, которые нужно выполнить для формирования данных (DTO) для пользовательских экранов, является ли обычной практикой прерывать ORM при выполнении Query-стороны CQS?
Где я должен выполнять свои запросы и проекции DTO? Прямой ADO.NET (datareaders, dtos, datatables, хранимые процедуры)? Некоторые запросы совершенно уникальны и связаны с множеством попыток собрать все вместе. Я не хочу денормализовать базу данных для запросов, но я мог бы создавать представления (денормализация бедных).
Да, я имею в виду CQRS. Я думаю, что архитектурный подход имеет большой смысл, и я бы хотел использовать ORM по причинам, которые вы даете. Но как бы вы затронули вопросы, которые я затронул в отношении сложных сопоставлений DTO? Например, мне нужно сгладить иерархические и многие-ко-многим отношения, которые зависят от типов в дереве наследования. Я знаю, что это расплывчато, но просто предположим, что NHibernate (или любое ORM) сопоставление является неприятным в этих случаях. Не могли бы вы отобразить хранимую процедуру или точку зрения в этот момент или что? – pfries
Простите меня, если вы уже знаете об этом: NH может отображать из представлений и procs. Таким образом, вы можете использовать представление или proc в БД, но все еще есть поиск/запрос через NH. –
Да, это то, где я склоняюсь - сопоставление с представлениями и/или процессами. Я полагаю, что можно рассматривать представления/procs как модель db только для чтения. Это то, что я считаю денормализацией бедных. В CQRS вы можете использовать эти представления в таблицах в read-slaves, но в настоящее время они просто реализуются как представления. Может быть, это лучший способ подумать об этом. – pfries