2010-10-01 38 views
5

Tôi nhận được khái niệm chung về CQRS, nhưng tôi có một số câu hỏi khi nói đến việc vượt ra ngoài mã ví dụ và các trang trình bày ở ngoài để xử lý các vấn đề trong thế giới thực.Xác nhận và sửa lỗi trong CQRS

  1. Validation

    Khi bạn cần phải làm xác nhận của một lệnh có liên quan đến giá trị kiểm tra từ cơ sở dữ liệu, bạn sẽ làm gì? Đăng ký dịch vụ, tôi phải nhập một địa chỉ email duy nhất. Một lý do mà tôi đã nghe là rất ít người dùng sẽ nhập địa chỉ email trùng lặp, do đó, chỉ cần xử lý nó khi xử lý lệnh và gửi cho họ email "xin lỗi" hoặc có thể đề xuất họ đặt lại mật khẩu của họ. Quá trình này do đó tránh có một readmodel vì lợi ích của việc xác nhận. Nhưng làm thế nào để bạn đối phó với các trường hợp trùng lặp trong xử lý lệnh? làm thế nào để bạn biết rằng đó là một bản sao? kiểm tra một readmodel? bạn có thể cũng đã sử dụng nó ở nơi đầu tiên cho khả năng sử dụng tốt hơn.

  2. Thay đổi chức năng/sửa chữa lỗi

    gì xảy ra khi bạn cần phải thay đổi cách thức một lệnh công trình, hoặc sửa chữa một lỗi? Trong triết lý phụ thêm, tôi phải làm gì với tất cả các lệnh cũ và trình xử lý lệnh? Tôi không thể đổi tên chúng thành _legacy và ẩn chúng đi nếu không sự kiện deserialization của tôi sẽ không hoạt động. Những giải pháp thanh lịch là có để đối phó với điều này?

Cảm ơn

Trả lời

4
  1. Xem http://codebetter.com/blogs/gregyoung/archive/2010/08/12/eventual-consistency-and-set-validation.aspx và cqrs danh sách cho các cuộc thảo luận khác nhau về chủ đề này rất gửi thư.
  2. Phiên bản sự kiện (không cần phiên bản lệnh theo cùng nghĩa như phiên bản sự kiện) cũng được thảo luận trong danh sách gửi thư cqrs. Các sự kiện được phát lại để đến trạng thái hiện tại của một tổng hợp chứ không phải các lệnh. Bằng cách này, chức năng của bạn có thể phát triển. Không có cách nào để thay đổi quá khứ, nhưng có nhiều cách để thay đổi hiện tại/tương lai. Trong trường hợp kỳ lạ, bạn phải bắt đầu theo dõi trạng thái theo một cách khác, cung cấp một lệnh rõ ràng. Đối với các thuộc tính mới về các sự kiện, chỉ cần cung cấp các giá trị mặc định như bạn làm cho một cột cơ sở dữ liệu mới. Nếu những giá trị mới này dựa trên trạng thái đã có, thì hãy mô hình hóa một lệnh rõ ràng để tính toán trước chúng. Ưu điểm là bạn có thể làm điều này một cách không đồng bộ, trong khi nâng cấp cơ sở dữ liệu cũng buộc bạn phải thay đổi mã. Làm thế nào mà sẽ làm việc tốt hơn được yêu cầu trên danh sách gửi thư cqrs. Một cảnh báo! Đừng lấy nguồn sự kiện quá nhẹ. Bạn có thể nhận được bằng chỉ với CQRS. Tôi thấy mọi người chuyển sang CQRS + ES khi hầu hết thời gian CQRS sẽ làm.

Vì vậy, hãy truy cập vào groups.google.com/group/dddcqrs và nhận trợ giúp. Một tài nguyên hữu ích khác là cqrsinfo.com

Các vấn đề liên quan