我正在努力实现基本的CQRS + ES应用程序.我见过很多例子,但我不明白命令处理程序和聚合之间的路由.
在某些示例中,工作以这种方式完成:
XCommandHandler:
void Handle(XCommand command) {
var aggregate = this.repository.Find<Aggregate>(command.aggId);
aggregate.InvokeSomeBusinessLogic(command.property1, command.property2);
this.repository.Save(aggregate);
}
Run Code Online (Sandbox Code Playgroud)
但其他人以另一种方式做:
XCommandHandler:
void Handle(XCommand command) {
var aggregate = this.repository.Find<Aggregate>(command.aggId);
aggregate.InvokeSomeBusinessLogic(command);
this.repository.Save(aggregate);
}
Run Code Online (Sandbox Code Playgroud)
什么是最好的方法,尤其是当命令中有许多属性(15个或更多)时?
我正在研究多层感知器,一种神经网络。当我读到反向传播算法时,我看到一些作者建议在计算特定层的所有错误后立即更新权重,但另一位作者解释说我们需要在获得所有层的所有错误后更新权重。正确的做法有哪些?
第一种方法:
function void BackPropagate(){
ComputeErrorsForOutputLayer();
UpdateWeightsOutputLayer();
ComputeErrorsForHiddenLayer();
UpdateWeightsHiddenLayer();
}
Run Code Online (Sandbox Code Playgroud)
第二种方法:
function void BackPropagate(){
ComputeErrorsForOutputLayer();
ComputeErrorsForHiddenLayer();
UpdateWeightsOutputLayer();
UpdateWeightsHiddenLayer();
}
Run Code Online (Sandbox Code Playgroud)
感谢一切。