Pull to refresh

Comments 11

Парадигма CQRS в том или ином виде предполагает, что вызовы Query не будут менять состояние приложения. То есть многократные вызовы одной и той же query, в рамках одного запроса, будут иметь один и тот же результат.

НЕЕЕЕ, НУ ТАК НЕ ИНТЕРЕСНО....

А кстати с чего вдруг такое допущение? Геттеры не меняют, а вот параллельно вызванные сеттеры очень даже.
Не обязательно было разделять на IQuery и IAsyncQuery, можно в out передать Task.

Это не очень хорошее решение, работа с асинхронным кодом отличается даже на уровне компилятора. Поэтому не стоит объединять это под одним интерфейсом, интерфейс должен быть явным. Да и каждый раз оборачивать возвращаемое значение IQuery в Task ужасно.
Написать один раз вот так легче:


public interface IAsyncQuery<TIn, TOut>: IQuery<TIn, Task<TOut>
{
}
Код хендлера
Контроллер
Закостыливание разделением портит картину. Отсутствие ковариации. И метод кстати все равно у вас асинхронный. На уровне компилятора все так же будет, напишите await — сгенерится стейтмашина.
Пытался прочесть статью внимательно.

Не смог. Попахивает велосипедом, щедро сдобренным непонятными абстракциями.

При этом не видно
1) Универсальности кода
2) Простоты синтаксиса
3) Прозрачной архитектуры

Может быть написано сумбурно, но я не нашел ничего такого, что нельзя было сделать не выходя за рамки архитектуры EF и LINQ. Абстракции ради абстракция лишь утяжеляют код.
но я не нашел ничего такого, что нельзя было сделать не выходя за рамки архитектуры EF и LINQ.


Интерфейсы, описанные в статье, не имеют отношения к слою доступа данных. Это более высокий слой приложения
Что мешает тогда оформить все это в виде сервиса/датасервиса?
Реализации данных интерфейсов по сути и представляют application services. Единообразный интерфейс необходим, чтобы единообразно применять cross-cutting concerns.

Как с помощью датасета неявно закешировать результаты Query? Тут скорее вопрос методологии и вам CQRS не нравится

Подход прикольный, но добавление чего-то нового призывает делать рутину, которую можно было избежать. К тому же сервисы имеют побочные эффекты, и нечего им делать в домене.
По моему мнению в домене должна лежать чистая логика, которую можно легко тестить, а заниматся моками для домена это как то странно.
Я стараюсь придерживаться такого принципа: домен — калькулятор.
Sign up to leave a comment.

Articles