2016-03-23 59 views
0

我最近一直在嘗試CQRS模式,並且在很多文檔中,似乎人們使用隊列將命令從應用程序外部發送到命令處理程序。CQRS應用中命令的數據格式/架構

我感興趣的一件事是人們發送命令的格式是什麼?我可以看到JSON是一種很好的表示格式,但是如何管理傳入命令的版本?

我假設有些東西需要從命令隊列讀取,反序列化命令的參數,然後通過CommandHandler實現執行它們。

回答

1

這是一個很好的問題。思考版本時需要考慮幾件事情。我喜歡遵循一系列原則:

  1. 切勿重命名場
  2. 切勿刪除字段

但是,您可能只需要退休或完全不同的形式。在這種情況下,我喜歡使用修補程序。例如_V2

要記住的關鍵是保持命令的內容爲簡單類型。當你想要複雜的類型時,可能會有特殊情況,但我會盡量避免這種情況。

從長遠來看,更改命令不是一個問題(除非您記錄命令)而不是更改/版本化事件。

如果有幫助,我有關於版本控制事件的博客文章,而不會破壞您的事件流。你可以找到它:here

希望它有幫助!

+0

感謝您的回答!當你在做CQRS時,你是否使用隊列來發送命令? – Aidos