Một trong những nguyên lý cơ bản của CQRS, như tôi hiểu, là các lệnh nên tập trung vào hành vi và có giá trị trong doanh nghiệp hoặc UL và không tập trung vào dữ liệu, tức là CRUD . Thay vì tập trung vào việc cập nhật một khách hàng, chúng tôi có các lệnh như CustomerHasMoved. Điều gì xảy ra nếu bạn có màn hình CRUD ở đó để sửa một số dữ liệu nhất định. Ví dụ: chúng tôi cần thay đổi tên của khách hàng bị viết sai chính tả. Điều này thực sự không có nhiều giá trị trong kinh doanh. Điều này có nên được đặt dưới sự bảo trợ của lệnh UpdateCustomer không?Màn hình CQRS và CRUD
Trả lời
Thực tế, có thể có nhiều lý do khác nhau để cập nhật tên của khách hàng. Như bạn đã nói, nó có thể sai chính tả hoặc ... bạn có thể kết hôn và đổi tên thành chồng của bạn.
Nếu bạn chỉ có lệnh UpdateCustomer, bạn sẽ mất ý định ban đầu và bạn sẽ không thể có các hành vi khác nhau cho mỗi người trong số họ. Nếu tên đã bị viết sai, nó có thể đơn giản như cập nhật cơ sở dữ liệu, trong khi nếu khách hàng của bạn kết hôn, bạn có thể cần phải thông báo về việc khởi hành tiếp thị để họ có thể giảm giá.
Trong trường hợp thực thể của bạn hoàn toàn là CRUD, đó là không có ý định mà bạn có thể liên kết với việc sửa đổi các thuộc tính, sau đó có thể có UpdateEntityCommand. Sau đó, bạn có thể chuyển từ từ sang một số công việc khác dựa trên
Chính xác, vậy bạn phải làm gì? Tạo một lệnh cho mỗi kịch bản có thể có? – blockhead
Có hoặc ít nhất cho mỗi trường hợp bạn muốn xử lý. Trong ví dụ của tôi, bạn sẽ bắt đầu với CorrectMisspelledCustomerName sau đó, nếu bạn cần, bạn sẽ thêm một lệnh MakeCustomerMarried. CQRS là về hành vi, không phải về cập nhật dữ liệu. Do đó, bạn không nên có các lệnh chung để cập nhật nội dung trong hệ thống của mình – Julien
Điều gì sẽ xảy ra nếu tôi có màn hình lớn với tất cả các trường cho khách hàng của mình. Tôi sẽ bắn ra một số lệnh để xử lý điều đó, hoặc bằng cách nào đó đưa ra một số loại "hành vi" cho điều đó. Có lẽ tôi chỉ nên không bao giờ hiển thị tất cả các lĩnh vực. – blockhead
CustomerHasMoved là sự kiện được kích hoạt sau khi bạn đã cập nhật vị trí của khách hàng. Sự kiện này cập nhật cơ sở dữ liệu đọc/cơ sở dữ liệu bộ đệm. Lệnh từ gui nên là MoveCustomer hoặc một cái gì đó như thế. Tôi nghĩ rằng tôi sẽ đặt bản cập nhật của tên khách hàng trong một lệnh như UpdateCustomer.
Tôi chỉ muốn đưa ra nhận xét về điều này một cách nhanh chóng khi nó xuất hiện.
Điều quan trọng cần lưu ý là một số đối tượng thực sự là CRUD và đó là ok. Tôi có thể không thực sự quan tâm lý do tại sao một tên đang thay đổi trong tên miền của tôi, nơi tôi gửi sản phẩm cho mọi người và chỉ cần dữ liệu đó để in nhãn gửi thư. Bí quyết là làm cho hành vi mặc định và THEN trở lại giao diện CRUD một khi bạn chắc chắn bạn thực sự không quan tâm đến những lý do trái ngược với ngược lại.
Greg
Cảm ơn bạn đã nhập @Greg. Tôi đã googling trên tất cả để xem những gì bạn đã nói về các loại kịch bản CRUD. Tôi đoán CRUD thường xuyên vẫn là ok để sử dụng trong một cách tiếp cận DDD, miễn là hoàn toàn không có hành vi bạn muốn chụp cùng với nó. –
Upvote. Chúng tôi đang tiêu tiền ở đây để có được chức năng (với khả năng duy trì thứ hai). Muốn làm một cái gì đó hoàn hảo và xinh đẹp, hãy trở thành một nghệ sĩ. Được trả tiền như một, quá. Xem bình luận của tôi cho câu trả lời của Julien. – FastAl
- 1. công cụ java nhanh nhất để tạo màn hình CRUD từ lược đồ DB là gì?
- 2. CQRS và sự kiện miền
- 3. Sự kiện lệnh ý định CQRS
- 4. CQRS và thông báo qua email
- 5. PhoneGap và màn hình Retina
- 6. Xác nhận và sửa lỗi trong CQRS
- 7. CQRS với Legacy Systems
- 8. Màn hình Retina iPad Màn hình Suffix
- 9. CQRS: Đọc mô hình được xây dựng theo yêu cầu?
- 10. Swing và bitmap trên màn hình thường
- 11. Nên sử dụng Disruptor (LMAX) với mô hình lớn trong bộ nhớ và CQRS?
- 12. Hình nền và kích thước màn hình lớn
- 13. android: bộ thu phát sóng cho màn hình bật và tắt màn hình
- 14. đơn giản CRUD hệ
- 15. Kiến trúc CQRS đa người thuê nhà
- 16. Scala CQRS Framework
- 17. Lớp phủ màn hình cho ảnh chụp màn hình
- 18. Màn hình kiểm tra màn hình đơn vị scraper
- 19. Chụp màn hình của màn hình Hiện tại
- 20. Sử dụng màn hình riêng biệt trên màn hình ngoài?
- 21. Ứng dụng CRUD mẫu Kohana
- 22. Chụp màn hình màn hình hiện tại của thiết bị
- 23. Chơi khung CRUD
- 24. Android - Tắt hỗ trợ màn hình x màn hình lớn
- 25. Phát hiện chiều rộng màn hình cho nhiều màn hình
- 26. iOS Ảnh chụp màn hình một phần của màn hình
- 27. Node.js Mongoosejs Giàn giáo Crud
- 28. dai dẳng: CRUD TypeClass
- 29. Tìm hiểu xem các hình nền màn hình chính và màn hình khóa khác có được đặt là
- 30. Phiên bản sự kiện CQRS
Làm cách nào để có đúng tên khách hàng không có giá trị cho doanh nghiệp? Lấy tên sai có thể có nghĩa là hàng hóa không được giao và có các tình huống khác ... – Oded