Описание тега command-query-separation

Разделение команд и запросов (CQS) - это принцип императивного компьютерного программирования. Не путать с разделением ответственности команд-запросов (CQRS), распределенным шаблоном проектирования, полученным из CQS.
0 ответов

Понимание событий, управляемых в приложении Spring MVC

Я прочитал код из этого приложения Spring MVC: https://github.com/spring-guides/tut-rest/tree/master/6/complete/src/main/java/com/yummynoodlebar/core/events Я не понимаю роль этих классов из папки событий. Как я могу поймать такое событие в другом м…
1 ответ

Как читать и писать с использованием CQS

Я собираюсь начать новый проект с CQS (как один из аспектов его дизайна), но без CQRS + Event Sourcing, или Streaming, или Historical Modeling. Когда я сталкиваюсь с ситуацией, в которой у меня будет большой набор людей, использующих небольшой набор…
1 ответ

Шаблон CQS против выходной переменной

В паттерне разделения запросов команд указывается, что должно быть очевидно, является ли метод командой или запросом (я имею в виду простой принцип, а не CQRS с источником событий и т. Д.) Поэтому команда должна быть voidтогда как запрос должен возв…
2 ответа

Реализация подхода Event-Sourcing / CQRS в api-платформе

На официальном веб-сайте Api-Platform есть страница " Общие вопросы дизайна". Наконец, что не менее важно, для создания систем на основе Event Sourcing, удобный подход: сохранить данные в хранилище событий, используя пользовательские данные сохраняю…
2 ответа

Клиент WPF - Должен ли я звонить в службу WCF в фоновом потоке?

У меня есть клиент WPF, который делает вызовы 2 служб WCF. Один сервис предназначен только для запросов, а другой - для команд ( шаблон CQS). Как мне сделать звонки в службу команд? Я где-то читал, что все операции в службе команд должны быть одност…
12 май '12 в 09:57
1 ответ

CQS и обновление существующего объекта

Я просто пытаюсь понять, как происходит обновление сущности с помощью CQS. Скажем, пользовательский интерфейс позволяет пользователю обновлять несколько свойств конкретной сущности, а при отправке в серверной части создается и отправляется команда о…
2 ответа

Разделение запросов команд: команды должны возвращать void?

Если CQS не позволяет командам возвращать переменные состояния, как можно написать код для команд, которые могут быть неудачными? Допустим, вы не можете полагаться на исключения. Кажется, что все, что запрос / ответ является нарушением CQS. Таким об…
07 фев '15 в 12:32
2 ответа

Является ли выполнение запроса из команды нарушением разделения команд и запросов?

При наличии реальной анонимной корзины покупок рабочий процесс AddToCart должен выполнить следующие шаги: Поиск текущего продукта из базы данных. Получите цену от продукта или воспользуйтесь услугой для расчета цены по выбору пользователя и другим с…
3 ответа

Разделение команд / запросов при использовании ORM

В своих проектах я использую шаблон разделения команд и запросов и использую NHibernate в качестве ORM. В общем, я храню свои команды и запросы в отдельных проектах, относящихся к определенному набору действий, таких как UserManagement, TagManagemen…
0 ответов

Шаблон запроса C#: запрос должен возвращать IEnumerable или один результат в универсальном интерфейсе

У меня есть интерфейс, который выполняет запрос на основе параметра запроса и результата запроса public interface IQueryParam {} public interface IQueryResult {} public interface IQuery<in TQueryParam, out TResult> where TQueryParam : IQueryPa…
9 ответов

Как можно применить разделение командного запроса (CQS), когда от команды требуются данные результата?

В определении разделения командного запроса в Википедии говорится, что Более формально, методы должны возвращать значение, только если они прозрачны по ссылкам и, следовательно, не имеют побочных эффектов. Если я выполняю команду, как мне определить…
10 сен '10 в 20:21
3 ответа

Злоупотребление затворами? Нарушения различных принципов? Или хорошо?

Редактировать: исправлены некоторые проблемы с синтаксисом и согласованностью, чтобы сделать код немного более понятным и близким к тому, что я на самом деле делаю. У меня есть код, который выглядит следующим образом: SomeClass someClass; var finalR…
2 ответа

Почему принцип CQS требует, чтобы команда не возвращала никакого значения?

Принцип CQS гласит, что каждый метод должен быть либо командой, выполняющей действие, либо запросом, который возвращает данные вызывающей стороне, но не обоими. Для Query имеет смысл не делать ничего другого, потому что вы не ожидаете, что запрос из…
13 ноя '14 в 05:44
2 ответа

CQS и CRUD операция

Я работаю над веб-сайтом с высокой масштабируемостью для целей обучения. Я решил использовать шаблон CQS и некоторые идеи CQRS. У меня есть отдельные слои записи и чтения, используемые обработчиками команд и обработчиками событий, которые система от…
16 мар '14 в 17:48
3 ответа

Является ли возврат Задачи нарушением принципа CQS?

Принцип CQS ( https://en.wikipedia.org/wiki/Command%E2%80%93query_separation) гласит, что команда должна возвращать void. Для асинхронных методов рекомендуется никогда не возвращать void ( https://msdn.microsoft.com/en-us/magazine/jj991977.aspx), а …
23 ноя '15 в 14:56
0 ответов

CQS шаблон с Spring / Hibernate

Я разрабатываю Java / Spring / Hibernate приложение, которое придерживается CQS (Query Command Separation) шаблон. Проще говоря: наш domain model используется только Commands которые описывают некоторую операцию, которая должна быть сделана на модел…
3 ответа

Одиночные функциональные классы (называемые глаголами)

Я пробую новую структуру кода, в которой я делю все свои гигантские репозитории и фабрики на множество небольших классов, каждый из которых несет единую ответственность. Кроме того, я использую глаголы для имен классов, так как считаю, что это лучши…
3 ответа

Использование принципа разделения команд и запросов в контроллерах MVC

Мне нравится идея разделения командных запросов, но я не вижу, как использовать ее в действии контроллера MVC, который добавляет объект и нуждается в новом идентификаторе объекта после добавления. Например, в приведенном ниже упрощенном примере служ…
03 май '12 в 14:45
0 ответов

Путаница во взаимодействии с другими доменами

Мы создаем новое приложение для совершенно нового domain model (а также Bounded Context) 'Appointment". Мы решили объединить CQS с Hexagonal Architecture (используя порты и адаптеры) для нашего нового домена. Наша структура пакета в основном выгляди…
4 ответа

Нарушение разделения командного запроса

О чем вы думаете if(!DoSomething()) return; В чистом коде это рассматривается как нарушение разделения командных запросов. Но как понять, что что-то в команде DoSomething() пошло не так? А как насчет команды sql (например, void Delete(Table))? Как м…