Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc CQR将域/业务逻辑放在何处_Asp.net Mvc_Domain Driven Design_Cqrs_Solid Principles - Fatal编程技术网

Asp.net mvc CQR将域/业务逻辑放在何处

Asp.net mvc CQR将域/业务逻辑放在何处,asp.net-mvc,domain-driven-design,cqrs,solid-principles,Asp.net Mvc,Domain Driven Design,Cqrs,Solid Principles,我正在为MVC应用程序开发框架。作为框架的一部分,我创建了一个虚拟应用程序。我遵循洋葱架构和坚实的原则与CQRS。这是我与MVC和CQRS的第一个项目。我还遵循CQR的责任链 目前,我不确定我应该保留业务逻辑的部分 例如。 我已从银行账户获得借记账户的指令。我已经将命令创建为DebitAccount,将处理程序创建为IDebitAccountHandler。IDebitAccountHandler将在基础架构层实现,并具有DebitAccountHandler所需的依赖项 在这里,我有一个在借记

我正在为MVC应用程序开发框架。作为框架的一部分,我创建了一个虚拟应用程序。我遵循洋葱架构和坚实的原则与CQRS。这是我与MVC和CQRS的第一个项目。我还遵循CQR的责任链

目前,我不确定我应该保留业务逻辑的部分

例如。 我已从银行账户获得借记账户的指令。我已经将命令创建为DebitAccount,将处理程序创建为IDebitAccountHandler。IDebitAccountHandler将在基础架构层实现,并具有DebitAccountHandler所需的依赖项

在这里,我有一个在借记账户之前检查余额的核心逻辑。我希望在核心中实现这一点,因为它不会随着基础设施的变化而改变

现在我应该在哪里实现这个逻辑并加载所需的依赖项。我的命令是没有任何方法体的接口,它们也只包含Handle/Execute方法


我觉得这是一个新手问题,因为我对模式的理解有限。

每个命令都代表一个用例。命令处理程序不包含任何逻辑;它负责处理基础设施问题,并向该领域授权

您希望所有逻辑都位于域模型中:聚合、实体、值对象、服务。。。在您的示例中,逻辑将由
帐户
聚合封装

public class Account
{
    private Balance _balance;

    public void Debit(Amount amount) 
    {
        if (_balance.IsSufficient())
                // debit..
    }
}

我对域不熟悉,但一般来说,您可以实现签入域模型(如帐户)或域服务(如果涉及多个模型),然后调用checker-in处理程序。