在一個新的新建項目我使用的是命令總線的方式,問題我遇到是我應該如何處理人際關係處理與命令總線方式的關係。如何使用DTO的
例如,一個訂單有多個OrderLines,一個航運和發票地址。
由於我使用的是命令總線的方法,我想一個DTO傳遞給我的命令總線持有所有必要的信息來創建一個訂單。
如果這一命令也持關係(即一個CreateOrderTask,CreateOrderAddress)?
我的目錄/文件結構如下:
- Infrastructure
-- Ui
--- Web
---- CreateOrderController.php
-- ....
- Application
-- CreateOrder
--- CreateOrder.php
--- CreateOrderHandler.php
--- CreateOrderLine.php (?)
- Domain
-- Order
--- Order.php
--- OrderLine.php
--- Address.php
-- ...
使應CreateOrder類是這樣的:
// CreateOrder.php
<?php
class CreateOrder {
/** @var CreateOrderLine[] */
protected $createOrderLines;
public function __construct(array $createOrderLines)
{
$this->createOrderLines = $createOrderLines;
}
public function getCreateOrderLines()
{
return $this->createOrderLines;
}
}
雖然我認爲有很多正確答案,我在尋找一個最佳實踐。你怎麼看?
沒有。只需傳遞其他實體的ID,並讓該消息的「接收者」重新使用read-model中的實體。 – kayess
@kayess所以我最終會得到一個CreateOrder用例,CreateOrderLine用例,CreateAddress用例等等?如果命令是異步執行的(這可以解決課程) –
@ kayess我不認爲我們在同一行;-)通過我的控制器我會創建一個CreateOrder DTO,我將它傳遞到命令總線,這個DTO是否也包含命令行等,或者應該通過命令總線執行不同的命令? –