Thứ Bảy, 31 tháng 3, 2018



  • Command chỉ nên là 1 DTO với các properties với các kiểu dữ liệu thuần tuý của ngôn ngữ như: string, int, float, array. Không nên là 1 object điều này giúp 
  • Command có khả năng di chuyển nhanh trong hệ thống, lưu xuống queue hay phục hồi lên dễ dàng.
  • Command nên bảo đảm tính không thể thay đổi được của nó, các thuộc tính chỉ nên được set value vào 1 lần tại hàm construct. Không nên thực hiện các hàm set value cho command. Điều này đảm bảo tính đúng đắn của 1 Command ngay từ đầu.
  • Command chỉ gắn với 1 Command Handler mà thôi, nó giúp dễ kiểm soát và thực thi. Tất cả công việc trong command phải đảm bảo chỉ thực hiện trong 1 transaction mà thôi, để đảm bảo tính consistent của hệ thống.
  • Command phải luôn là đúng. “Đúng” ở đây được định nghĩa là tính đúng đắn về mặt dữ liệu. Ví dụ như một email thì phải đạt chuẩn email, 
  •     Điều 1: Command phải đúng, 
  •     Điều 2: nếu command sai thì nhìn lại điều 1 mà đi fix code. do vậy nên validate ngay khi tạo 1 command để đảm bảo nó đúng, và với tính không thể thay đổi, nó sẽ luôn đúng khi di chuyển trong hệ thống.
  • Command chỉ nên là Edit state không nên là Query (CQRS)

Reactions: