簡體   English   中英

CQRS和ES設計查詢

[英]CQRS and ES Design query

這更多是一個設計問題,如果在錯誤的位置,請您道歉。 也就是說,我正在設計一個包含WPF用戶界面和WCF服務層的應用程序,該服務層提供對應用程序數據和業務邏輯的訪問。 我有幾種需要CQRS和ES的方案,而這正是我的問題所在。

CQRS是關於命令和查詢分離的,所以我的問題是WCF服務是否也應分離,所以我在一個服務中有Command方法,而在另一服務中有Query方法。 例如:

public class PatientCommandService
{
    public void AddPatient(AddPatientDto patient) { }
}

public class PatientQueryService
{
    public PatientDto GetById(int id) { }
}

我是CQRS和ES的新手,一直努力在互聯網上找到可以回答此問題的有形東西,尤其是圍繞Web服務(例如WCF和WebAPI)。

將所有服務方法都包含在同一服務中並在每種服務方法的實現中通過存儲庫層將命令和查詢分開似乎是明智的。 但這似乎無視CQRS的分離部分,而且我也與圍繞“單一職責”的SOLID原則相沖突。

有沒有人在WCF服務之后實現CQRS,並處理了這種情況,我實際上是在尋求有關實現CQRS最佳方法的建議。

CQRS與命令/查詢分離無關,而與責任分離有關。 使用CQRS,您的數據庫不再是ACID,而是最終的一致性方法。

原因是讀/寫代碼是分開的,這也意味着必須使用寫模型中的事件來填充讀模型。

Your write transaction -> change event is published -> read model updates it's data

我強烈建議您使用涉及UI的基於任務的方法。 命令應該包裝業務事務而不是數據庫操作。 我的意思是,一個命令通常涉及多個根聚合。

如果這對您不起作用,則只需使用審核表,而不要介紹CQRS附帶的所有復雜性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM