Domain Events tất cả điểm bình thường gì cùng với Event Sourcing ? Chắc chắn từ bỏ "event" trong tên của chúng. Nhưng Ngoài ra, khi nói về phong cách thiết kế với công ty bên cách tân và phát triển trong các dự án công trình, tại những hội nghị hoặc huấn luyện, tôi hay nghe rằng tên miền sự kiện siêu phù hợp cùng với sự kiện sourcing với rằng sự kiện sourcing là một ý tưởng phát minh nguồn của tên miền events. Trong bài viết này tôi ước muốn tóm lược tại sao cá nhân tôi không đồng tình với quan điểm đó.

Bạn đang xem: Event sourcing là gì

trước hết tôi đã tranh luận vì sao tôi ko share quan điểm này, tôi ước ao bảo đảm một giải pháp đọc khá đầy đủ về domain name events và sự kiện sourcing.

Domain Events

Trong xây cất domain-driven, domain name events được bộc lộ như một số vấn đề xảy ra trong domain name và là đặc trưng với domain name experts. Thông thường events xẩy ra bất kể domain name được triển khai trong hệ thống phần mềm làm việc cấp độ nào. Chúng cũng độc lập với các công nghệ. Theo kia, domain sự kiện về mặt ngữ nghĩa quý hiếm cao, bọn chúng được miêu tả trong ngôn từ nói bởi tên miền experts. lấy ví dụ như:

Một người dùng đã có được đăng kí.Một hóa đối chọi đã nhận được.Hạn tkhô cứng toán đã không còn hạn.

Domain events gồm liên quan cả phía bên trong một bounded context và chạy qua các bounded contenxt mang lại Việc triển khai những processes phía bên trong domain name.

Event Sourcing

Martin Fowler diễn tả điểm lưu ý thiết yếu của event sourcing vào bài viết của ông như sau:

Event Sourcing ensures that all changes khổng lồ application state are stored as a sequence of events.

Ttốt vị giữ trạng thái bây chừ phía bên trong áp dụng một giải pháp trực tiếp, bằng những trường trong bảng đại lý tài liệu thì sẽ tiến hành lưu giữ một list những events, sau thời điểm triển khai chạy thứu tự các event này bọn họ sẽ có được trạng thái bây chừ của đối tượng. Nó sẽ bị ghi đè vày những chuyển đổi sau đó.

Event sourcing là 1 trong định nghĩa tầm thường, mà lại hay được luận bàn vào toàn cảnh của thi công domain-driven vào vấn đề kết nối với aggregates. Vì thay tôi thực hiện sự bền chắc của aggregates nhỏng một ví dụ đến việc sử dụng sự kiện sourcing.

Sự tiếp tục dưới chỉ ra rằng các bước liên quan Khi áp dụng sự kiện sourcing cho tàng trữ lâu dài hơn tinh thần của một aggregate:

*

Một hành động tương quan cho business sẽ được call bên trên một aggregate hiện tất cả. Hai events trước đã làm được duy trì mang lại aggregate này

*

Trước khi yêu cầu được giải pháp xử lý, một instance rỗng của aggregate được tạo ra và những events được tàng trữ trước đó chạy lại bên trên aggregate. Aggregate chỉ phát âm trạng thái những event tương ứng cùng không có business làm sao được triển khai. lúc chấm dứt, aggregate chứa tinh thần hiện tại của chính nó trong bộ lưu trữ.

*

Yêu cầu được chấp nhận vày aggregate, xác thực tâm trạng hiện giờ và cách xử trí,..Domain logic khớp ứng được xúc tiến. Tại thời đặc điểm này, chưa xuất hiện tâm lý nội cỗ làm sao của aggregate bị đổi khác, vấn đề này chỉ được triển khai sau khi Việc cách xử lý sự kiện tạo ra trong quy trình triệu Điện thoại tư vấn.

*

Nhỏng một tác dụng của quá trình xử trí những hiểu biết, aggregate sản sinc một event (hoặc một vài ba event), bao gồm tâm lý được tận hưởng mang đến vấn đề tái chế tạo tâm lý vào aggregate. Event được bảo trì những điều đó, nó rất có thể được thực hiện đến Việc gọi sau này.

Xem thêm: Sự Thật Ít Người Biết Về Con Liu Điu, Rắn Liu Điu Và Con Liu Điu Chỉ Có 4 Chân Cực Độc

Những ưu điểm bao gồm được liệt kê bên dưới khi áp dụng event sourcing:

Event được lưu trữ không chỉ có bộc lộ trạng thái hiện nay của đối tượng người sử dụng mà còn cho thấy thêm lịch sử của quá trình tạo nên nó.Nó rất có thể tái phát hành lại vào bất kỳ thời khắc như thế nào đến bất kì tâm lý làm sao vào quá khđọng vày việc chạy lại các sự kiện với cùng 1 mốc thời gian khăng khăng.Có thể đọc được bài toán áp dụng sự kiện sourcing nhằm xử lý processing lỗi của những event trước kia hoặc các sự kiện bị trì hoãn.

Việc tiến hành sự kiện sourcing cũng đòi hỏi một khái niệm với technology phức hợp một mực. Các event không được phnghiền biến hóa một khi vẫn trường thọ, trong khi domain name logic thường xuyên cách tân và phát triển theo thời hạn. Vì vậy code buộc phải có chức năng giải pháp xử lý những sự kiện thậm chí là là cực kỳ cũ.Snapshots quan trọng để có thể kiến thiết lại tâm lý dựa trên lượng béo lịch sử dân tộc của những event theo phương pháp như thế nào đó.

Events sinh sống Event Sourcing không giống Domain Events

Vậy tại sao tôi cho rằng 2 có mang này sẽ không đích thực khớp nhau điều này ?

Hãy xem xét ví dụ bên dưới: Trong một domain mang đến câu hỏi chia sẻ xe đạp, một người dùng ao ước đăng kí để mướn một cái xe đạp điện. Tất nhiên một dòng thì cũng phải tkhô nóng toán thù mang lại nó, dòng nhưng mà được làm thông qua biện pháp tiếp cận tiền thanh toán là thực hiện ví điện tử.

Các phần tương quan của bạn dạng vật dụng bối cảnh cho domain name này trông nlỗi mặt dưới:

*

Xử lý đăng kí thao tác nlỗi bên dưới:

Người dùng nhập số điện thoại thông minh của chính bản thân mình trải qua vận dụng sản phẩm điện thoại.Người sử dụng nhận một mã từ SMS để xác thực số Smartphone.Người sử dụng nhập mã xác nhận.Người dùng nhập thêm những đọc tin cụ thể như tên, liên can,.. cùng kết thúc bài toán đăng kí.

Xử lý này được xúc tiến vào aggregate UserRegistration vào bounded context Registration. Người cần sử dụng liên tưởng với instance của aggregate UserRegistration một vài lần vào quá trình đăng kí. Trạng thái của UserRegistration được thi công từng bước cho đến lúc vấn đề đăng kí hoàn thành. Sau Lúc xong xuôi, người tiêu dùng rất có thể trả mức giá ví điện tử với thuê xe đạp.

Bây tiếng, giả dụ sự kiện sourcing được sử dụng để quản lý tinh thần của aggregate UserRegistration, đông đảo sự kiện theo sau (đựng trạng thái tương quan tương ứng) được sinh sản và duy trì theo thời gian:

MobileNumberProvided(MobileNumber)VerificationCodeGenerated (VerificationCode)MobileNumberValidated (không thêm trạng thái)UserDetailsProvided (FullName, Addresss,...)

Những event này là tương đối đầy đủ để tái gây ra tâm trạng ngày nay của aggregate UserRegistration trên bất kỳ thời gian như thế nào. Việc thêm event là ko quan trọng, quan trọng đặc biệt không tồn tại sự kiện như thế nào thể hiện bài toán đăng kí đang xong. Thực tế này được hiểu với aggregate UserRegistration tên miền logic nội bộ của chính nó ngay trong lúc sự kiện UserDetailsProvided được cách xử lý. Theo kia, một instance của một UserRegistration rất có thể vấn đáp trên bất kỳ thời gian làm sao liệu vấn đề đăng kí vẫn xong xuôi tuyệt không.

Trong khi, từng event chỉ đựng tâm trạng mẫu mà quan trọng nhằm hoàn toàn có thể tái thiết kế trạng thái của aggregate trong những khi chạy lại. thường thì đây chỉ cần các trạng thái bị tác động vày Việc triệu Call sự kiện. Từ giải pháp tiếp cận của sự kiện sourcing, đã không có ý nghĩa sâu sắc để lưu thêm trạng thái trên sự kiện mà lại không biến thành ảnh hưởng của việc triệu gọi. bởi vậy, trường hợp event UserRegistration đã làm được bảo trì, nó sẽ không còn cất thêm bất kì trạng thái làm sao.

Aggregate UserRegistration cũng có thể publish cho tới các phần không giống phía bên trong hoặc phía bên ngoài bounded context cùng cho nên rất có thể kích hoạt thêm tên miền xúc tích và ngắn gọn hoặc cập nhật một số tâm lý khác. Trong ví dụ của chúng ta, chính là 2 bounded context Accounting (mang lại Việc khởi sinh sản ví năng lượng điện tử) với Rental (giành cho Việc tạo nên người tiêu dùng đang đăng kí).

Xem thêm: Suburban Là Gì ? Nghĩa Của Từ Suburb Trong Tiếng Việt Suburban Là Gì

Thảo luận

Trong bài viết, người sáng tác đã giải thích sự khác nhau giữ lại Domain events cùng Event sourcing, phần lớn yêu điểm của sự kiện sourcing. Đồng thời làm rõ lúc nào áp dụng bọn chúng.Hy vọng vẫn đưa về mang đến chúng ta một trong những điểm hữu dụng.


Chuyên mục: ĐỊNH NGHĨA
Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *