Những lý do nào có thể thúc đẩy một lập trình viên sử dụng API Java JMS (Java Message Service) thay vì API socket UDP của gói java.net trong một ứng dụng Java phân tán hoặc sử dụng API socket UDP thay vì API JMS? Nếu có thể, vui lòng cung cấp các ứng dụng mẫu.Khi nào nên chọn API JMS trên API socket UDP hoặc ngược lại?
Trả lời
UDP và JMS là khác nhau bằng nhiều cách, và về cơ bản kể từ JMS thường dựa trên các tính năng vốn có để TCP (xem này comparison of UDP and TCP để có được một ý tưởng về sự khác biệt của hai giao thức cơ bản).
Về cơ bản UDP phù hợp cho các ứng dụng không yêu cầu độ tin cậy, đặt hàng, kiểm soát tắc nghẽn hoặc định tuyến giữa các mạng (vì nhiều bộ định tuyến cấp người tiêu dùng và thương mại không chuyển tiếp gói UDP). JMS cung cấp tất cả các tính năng này bị thiếu từ UDP và nhiều tính năng khác (như giao dịch, pub/sub và xếp hàng, đăng ký bền, v.v.).
UDP có thể phù hợp để truyền lượng lớn dữ liệu trong mạng cục bộ nơi chất lượng tuyệt đối không phải là yêu cầu; JMS sẽ tốt hơn cho các ứng dụng yêu cầu nhắn tin đáng tin cậy giữa các máy chủ mạng diện rộng. Hơn nữa, JMS che khuất các chi tiết của ổ cắm, máy chủ, ràng buộc, vv và cung cấp một API mức cao phù hợp hơn cho việc tích hợp doanh nghiệp.
+1. JMS là để UDP những gì một RDBMS là một tập tin phẳng. –