Phần lớn sự nhầm lẫn giữa "truyền thông điệp" và "dựa trên sự kiện" có liên quan đến kiến trúc so với chi tiết triển khai. Tôi đã thấy (và bằng văn bản) các hệ thống điều khiển sự kiện thực sự sử dụng các thông báo do OS cung cấp để triển khai. Tôi đoán bạn đang thực sự đề cập đến ý tưởng kiến trúc.
Vì nhiều người đã chỉ ra "thông điệp truyền qua" và "dựa trên sự kiện" không thực sự đủ tốt để tránh sự mơ hồ.
Các giá trị tương đối của hệ thống "truyền thông điệp" so với hệ thống "dựa trên sự kiện" là gì.
Thông qua
Tôi sẽ bắt đầu bằng cách đoán rằng khi bạn nói một hệ thống "tin nhắn đi qua", bạn đang nói về một hệ thống mà một đối tượng dành một tin nhắn cho một đối tượng cụ thể khác. Khi tôi nghĩ về một hệ thống dựa trên mô hình này, tôi thường nghĩ về một hệ thống trong đó một đối tượng phát hiện ra một cái gì đó biết ai cần được nói về điều gì đó. (Tôi không chỉ định làm thế nào nó biết, chỉ là nó biết.)
Kiểu kiến trúc này rất tốt cho các hệ thống mà các nhà sản xuất và người tiêu dùng nổi tiếng. Nhà sản xuất tin nhắn biết ai phải nhận nó hoặc người tiêu dùng phải biết ai sẽ nhận được tin nhắn.
Nếu bạn đang viết một ứng dụng ngân hàng, người ta sẽ mong đợi bạn thực sự muốn biết bạn đang gửi giao dịch của mình cho ai và họ đến từ đâu.
Dựa trên sự kiện
Hệ thống khác mà tôi tin rằng bạn đang nghĩ đến khi bạn nói một hệ thống "dựa trên sự kiện" là một hệ thống mà một đối tượng đưa ra một "sự kiện" mà không biết ai (nếu có ai) sẽ phản hồi.
Kiểu kiến trúc hướng sự kiện này rất tốt cho các hệ thống mà nhà sản xuất không quan tâm đến việc ai tiêu thụ sự kiện hoặc nơi người tiêu dùng không thực sự quan tâm đến ai đã tạo ra sự kiện.
Nói chung, các hệ thống này rất tuyệt vời khi bạn không biết mối quan hệ giữa người tiêu dùng và nhà sản xuất và nơi bạn mong đợi mối quan hệ sẽ năng động.
Một hệ thống tôi đã sử dụng hệ thống này là một hệ thống trong đó ứng dụng thực sự bao gồm các mô-đun (trình cắm) được cấu hình động được tải trong thời gian chạy. Khi một mô-đun được tải, nó sẽ đăng ký cho các sự kiện mà nó quan tâm. Kết quả là một hệ thống trong đó rất dễ dàng để mở rộng chức năng.
Chẳng hạn, giả sử điều kiện Một EA Sự kiện được nêu lên thường gây ra phản ứng RA. Đối tượng gây ra phản hồi RA chỉ cần đăng ký để nhận EA sự kiện và hành động theo nó khi nó đến. Bây giờ, giả sử chúng tôi muốn thêm một phản hồi mới cho EA, được gọi là RA_1. Để làm điều này, chúng tôi chỉ cần thêm một đối tượng mới tìm EA và tạo phản hồi RA_1.
Dưới đây là một vài ví dụ (sử dụng thuật ngữ của bạn):
- "Tin nhắn đi qua" : Sếp của bạn bảo bạn điền vào bảng chấm công của bạn.
- "hướng sự kiện" : Thư ký bộ phận gửi email cho mọi người nhắc nhở họ rằng bảng chấm công của họ là do ngày hôm nay.