【发布时间】:2012-06-08 14:19:48
【问题描述】:
您好,我正在使用Simple Injector DI 库,并且一直在关注一些关于围绕命令模式设计的架构模型的非常有趣的材料:
- Meanwhile... on the command side of my architecture
- Meanwhile... on the query side of my architecture
容器将管理UnitOfWork 的生命周期,我正在使用命令对数据库执行特定功能。
我的问题是,如果我有一个命令,例如 AddNewCustomerCommand,它又对另一个服务执行另一个调用(即发送一条短信),从设计的角度来看这是可以接受的还是应该在更高级别,如果是这样,如何最好地做到这一点?
示例代码如下:
public class AddNewBusinessUnitHandler
: ICommandHandler<AddBusinessUnitCommand>
{
private IUnitOfWork uow;
private ICommandHandler<OtherServiceCommand> otherHandler;
AddNewBusinessUnitHandler(IUnitOfWork uow,
ICommandHandler<OtherServiceCommand> otherHandler)
{
this.uow = uow;
this.otherHandler = otherHandler;
}
public void Handle(AddBusinessUnitCommand command)
{
var businessUnit = new BusinessUnit()
{
Name = command.BusinessUnitName,
Address = command.BusinessUnitAddress
};
var otherCommand = new OtherServiceCommand()
{
welcomePostTo = command.BusinessUnitName
};
uow.BusinessUnitRepository.Add(businessUnit);
this.otherHandler.Handle(otherCommand);
}
}
【问题讨论】:
标签: c# .net architecture dependency-injection unit-of-work