Command, CommandHandler и CommandInvoker
Недавно я увидел новый шаблон (новый для меня) в проекте с открытым исходным кодом ASP.NET MVC 3
, который содержит несколько Command
, CommandHandler
и CommandInvoker
с их интерфейсами, и я не могу понять шаблон! Можете ли вы рассказать мне, что это за образцовое имя, и где я могу узнать об этом? И в чем его преимущества, пожалуйста? Спасибо заранее.
Обновление: Я говорю об этом проекте:
Галерея изображений с RavenDB
Ответы
Ответ 1
Посмотрите на эту статью:
Между тем... на командной стороне моей архитектуры
Он содержит подробное объяснение того, почему вы хотите использовать команды и обработчики команд как часть вашей архитектуры. Архитектурный шаблон, такой как CQRS, основан на командах и событиях, но даже без применения CQRS использование команд в вашей архитектуре очень ценно, как объясняется в статье.
Проект RavenGallery, однако, слишком мал, чтобы действительно увидеть преимущества этой модели команд/обработчиков. Эта модель начинает сиять, когда проект становится больше.
Более подробное обсуждение этой темы можно найти в главе 10 моей книги.
Ответ 2
Это часть шаблона разделения запросов команд (CQS) или даже младшего брата CQRS.
https://en.wikipedia.org/wiki/Command-query_separation
http://codebetter.com/gregyoung/2009/08/13/command-query-separation
Ответ 3
Чтобы продолжить мысль Стивена, шаблон команда, обработчик, вызов предоставляет возможность вызывать команды, объект SOLID за один раз, которые могут вызываться непосредственно из пользовательского интерфейса или другого верхнего уровня, с которым пользователь или служба могут напрямую взаимодействовать.
Я полагаю, что его цель состоит в том, чтобы уменьшить сложность, обычно встречающуюся в приложениях N-уровня, где есть несколько уровней (т.е. уровень обслуживания, уровень DataAcces), требуемых для вызова команд (то есть сохранить объект в базе данных).
Из множества "ароматов" архитектуры, вот мое мнение: https://github.com/mrogunlana/command-handler-pattern