Tôi rất mới với Java EE và tôi đang cố gắng hiểu khái niệm về giao diện cục bộ và giao diện từ xa.
Trong các phiên bản ban đầu của đặc tả EJB, các EJB được "giả định" là các thành phần từ xa và cách duy nhất để gọi chúng là thực hiện một cuộc gọi từ xa, sử dụng ngữ nghĩa RMI và tất cả các chi phí mà nó ngụ ý (một cuộc gọi mạng và tuần tự hóa đối tượng cho mọi gọi phương thức). Các khách hàng của EJB đã phải trả tiền phạt hiệu suất này ngay cả khi được đặt chung trong cùng một máy ảo với bộ chứa EJB.
Sau đó, Sun nhận ra hầu hết các ứng dụng kinh doanh thực sự không phân phối EJB trên một tầng khác và họ đã sửa lỗi thông số kỹ thuật (trong EJB 2.0) bằng cách đưa ra khái niệm giao diện cục bộ để khách hàng được kết hợp trong cùng một máy ảo với bộ chứa EJB có thể gọi EJB bằng cách sử dụng gọi phương thức trực tiếp, bỏ qua hoàn toàn ngữ nghĩa RMI (và chi phí liên quan).
Tôi đã được thông báo rằng một trong những lợi thế lớn của Java EE là dễ dàng mở rộng quy mô (mà tôi tin rằng bạn có thể triển khai các thành phần khác nhau trên các máy chủ khác nhau)
Java EE có thể mở rộng quy mô, nhưng điều này không nhất thiết có nghĩa là phân phối các thành phần. Bạn có thể chạy ứng dụng Web + EJB trên một cụm mà không tách rời tầng Web và tầng EJB.
Bạn có nên sử dụng giao diện Remote nếu bạn muốn ứng dụng của mình có các thành phần khác nhau trên các máy chủ khác nhau? Và sử dụng giao diện cục bộ nếu ứng dụng của bạn chỉ nằm trên một máy chủ?
Tôi sẽ diễn đạt nó như thế này: sử dụng các giao diện từ xa nếu máy khách không ở cùng một JVM (điều này không có nghĩa là chỉ sử dụng một máy chủ / JVM).
(...) Bắt đầu bằng cách sử dụng Giao diện cục bộ và nâng cấp dần lên Giao diện từ xa khi áp dụng?
Tôi có thể sẽ bắt đầu bằng cách sử dụng giao diện địa phương. Và như đã gợi ý, chuyển sang giao diện từ xa không phải lúc nào cũng bắt buộc (bạn có thể cụm một collocated cấu trúc).
Tôi đề nghị kiểm tra các tài nguyên được đề cập dưới đây (2 cái đầu tiên khá cũ nhưng vẫn có liên quan, 2 cái khác gần đây hơn).
Tài nguyên