Tôi đã chuyển sang dự án đang tích cực sử dụng nguồn sự kiện CQRS +. Từ cái nhìn đầu tiên nó được thực hiện phù hợp với tất cả những cuốn sách và blog, nhưng cuối cùng tôi nhận ra những gì chính xác là peevish trong việc thực hiện.Đọc các phương pháp triển khai bên sử dụng CQRS
Đây là CQRS kiến trúc:
Nguyên Tôi chụp bức ảnh này từ here.
Như chúng ta có thể thấy trong hình, bên đọc nhận các sự kiện từ hàng đợi và chuyển từng cái một vào các bộ dự khác nhau (các bộ biến đổi) và kết quả là ViewModels được lưu thông qua phương thức AddOrUpdate vào DB. Vì vậy, như tôi hiểu từ bộ biến đổi hình ảnh chỉ có thể dựa vào sự kiện chính nó cộng với dữ liệu từ db bên đọc. Ví dụ:
- Chế độ xem tài khoản đã được lưu trữ trong db. kiện
- EmailChanged đến
- Chúng ta đọc xem tài khoản từ DB
- Áp dụng thay đổi email tới nó
- Chúng tôi tiết kiệm tài khoản trở lại vào DB.
Một trường hợp khác (đếm số lượng của một số mặt hàng, nói đơn đặt hàng):
- OrderCreated kiện đến
- Chúng ta đọc thấy ViewModel đại diện NumberOf trước đến đơn đặt hàng
- Tăng và tiết kiệm này.
Những gì chúng tôi có trong dự án của chúng tôi: Chúng tôi chỉ sử dụng tất cả những sự kiện đó làm thông báo thay đổi trong mô hình miền. Do đó, những gì chúng tôi làm:
- Chúng tôi lấy kho lưu trữ tên miền và đọc tất cả các tập hợp cần thiết. Làm như vậy chúng tôi nhận được trạng thái gần đây nhất của họ.
- Chúng tôi chỉ xây dựng đối tượng ViewModel từ đầu
- Lưu mới được tạo ra đối tượng vào Db
Cách tiếp cận chúng tôi sử dụng trong dự án của chúng tôi trông hơi xa lạ với tôi, tôi không thể nhìn thấy tất cả các nhược điểm của nó Tuy nhiên. Nếu chúng ta cần xây dựng lại mặt đọc của mình, chúng ta thêm bộ chuẩn hóa "hoạt động" và lần sau nó nhận được một sự kiện cụ thể, nó sẽ tái tạo mô hình khung nhìn mới.
Nếu chúng ta sử dụng cách tiếp cận từ sách, tôi sẽ phải có một logic utils riêng biệt ở đâu đó trong hệ thống của tôi để xây dựng lại.Điều chúng ta cần cho việc này:
- Thả phía đọc
- đã đọc tất cả các sự kiện từ các cửa hàng sự kiện từ đầu
- Vượt qua chúng thông qua các dự
Vì vậy, câu hỏi của tôi là:
Cách tiếp cận phù hợp ở đây là gì?
Liên kết cho bài viết của bài viết được chuyển đến: http://abdullin.com/post/event-sourcing-projections/ –