我正在为MVC应用程序开发框架。作为框架的一部分,我创建了一个虚拟应用程序。我正在遵循使用CQRS的Onion Architecture和SOLID原则。这是我的第一个MVC和CQRS项目。我也在关注CQRS中的责任链。
目前我不确定应该保持业务逻辑的部分。
实施例。 我有银行账户的借记账户命令。我已将命令DebitAccount和处理程序创建为IDebitAccountHandler。 IDebitAccountHandler将在基础架构层中实现,并具有所需的依赖关系DebitAccountHandler。
这里我有核心逻辑,在借记帐户之前检查余额。我想在Core中实现它,因为它不会随着Infrastructure而改变。
现在我应该在哪里实现此逻辑并加载所需的依赖项。我的命令是没有任何方法体的接口,它们只包含Handle / Execute方法。
我觉得这是新手问题,因为我对模式的理解有限。
答案 0 :(得分:2)
每个命令代表一个用例。命令处理程序不包含任何逻辑;它负责基础设施问题,并代表域名。
您希望所有逻辑都在您的域模型中:聚合,实体,值对象,服务......在您的示例中,逻辑将由Account
聚合封装。
public class Account
{
private Balance _balance;
public void Debit(Amount amount)
{
if (_balance.IsSufficient())
// debit..
}
}