Разрешить создание команд вне среды cqrs
У меня есть необходимость позволить разработчикам пользовательского интерфейса работать с использованием проекта MVC, который связан только с средой NCQRS через службу WCF.
Чтобы сэкономить на ненужных сопоставлениях и сложности, я использую команды в качестве параметров службы WCF, а служба просто передает их в среду:
var cmd = input.MapTo<CreateUserAccountCommand>();
_commandService.BeginWcfCall(x => x.ExecuteCreateUserAccountCommand(cmd));
Это все хорошо, когда приложение mvc находится в том же sln, что и служба wcf, но когда они разделены и служба WCF находится на удаленном сервере, у меня возникают проблемы с командой, пытающейся использовать NcqrsEnvirnment для GetKnownTypes:
public static IEnumerable<Type> GetKnownTypes()
{
var knownCommandsEnumerator =
NcqrsEnvironment.Get<IKnownCommandsEnumerator>();
if (knownCommandsEnumerator == null)
{
throw new InvalidOperationException("No
Ncqrs.Commanding.IKnownCommandsEnumerator implementation registered
with the NcqrsEnvironment.");
}
return knownCommandsEnumerator.GetAllCommandTypes();
}
Мое единственное предложение для этого - разрешить создание команды на клиенте, изменив приведенный выше код на:
public static IEnumerable<Type> GetKnownTypes()
{
if (NcqrsEnvironment.IsConfigured)
{
var knownCommandsEnumerator = NcqrsEnvironment.Get<IKnownCommandsEnumerator>();
if (knownCommandsEnumerator == null)
{
throw new InvalidOperationException("No Ncqrs.Commanding.IKnownCommandsEnumerator implementation registered
with the NcqrsEnvironment.");
}
return knownCommandsEnumerator.GetAllCommandTypes();
}
return null;
}
Будет ли это жизнеспособным изменением?