Như đã chỉ ra bởi một bài trước đó trong chủ đề này, một trong những lựa chọn của bạn là OpenSplice DDS đó là một thực hiện mã nguồn mở của DDS Chuẩn OMG (cùng một tiêu chuẩn thực hiện bởi NDDS) .
Ưu điểm chính của OpenSplice DDS qua trung gian khác mà bạn đang xem xét có thể được tóm tắt như:
- Performance
- Giàu hỗ trợ QoS (Persistence, Fault-Tolerance, kịp thời, vv)
- Data Centricity (ví dụ: khả năng truy vấn và lọc luồng dữ liệu)
Điều mà tôi muốn hiểu là vấn đề của bạn với IDL là gì. DDS sử dụng IDL làm cách độc lập về ngôn ngữ để chỉ định các kiểu dữ liệu người dùng. Tuy nhiên DDS không giới hạn IDL, bạn có thể sử dụng XML, nếu bạn thích. Ưu điểm của việc xác định kiểu dữ liệu của bạn, và tách đại diện của họ từ một ngôn ngữ lập trình cụ thể, đó là các trung gian có thể:
(1) lấy đi từ bạn những gánh nặng của dữ liệu tuần tự,
(2) tạo ra rất thời gian/không gian serialization hiệu quả,
(3) đảm bảo an toàn kiểu end-to-end,
(4) cho phép lọc nội dung trên kiểu dữ liệu toàn bộ (không chỉ các tiêu đề như thế nào trong JMS), và
(5) enabl e khả năng tương thích dây trên các ngôn ngữ lập trình (ví dụ: Java, C/C++, C#, v.v.)
Tùy thuộc vào hệ thống hoặc ứng dụng bạn đang thiết kế, một số thuộc tính ở trên có thể không hữu ích/có liên quan. Trong trường hợp đó, bạn có thể chỉ cần tạo một, một vài, "DDS Type" là người giữ dữ liệu được tuần tự hóa của bạn.
Nếu bạn nghĩ về JMS, nó cung cấp cho bạn 5 loại chủ đề khác nhau mà bạn có thể sử dụng để gửi dữ liệu của mình. Với DDS, bạn có thể làm tương tự, nhưng bạn có thể linh hoạt để xác định chính xác các loại chủ đề.
Cuối cùng, bạn có thể muốn xem this blog entry trên Scala và DDS để thảo luận dài hơn về lý do loại và kiểu gõ tĩnh là đặc biệt tốt trong các hệ thống phân tán.
-AC
Tôi đã luôn luôn nghĩ rằng dữ liệu phải là XML, theo cách đó nó được bán định sẵn (thông qua một lược đồ), nhưng không gắn với một ngôn ngữ. – David