Tôi yêu cầu kiến trúc phù hợp cho ứng dụng web Java sau đây:Kiến trúc - Nhiều ứng dụng web hoạt động trên cùng một dữ liệu
Mục tiêu là xây dựng một số ứng dụng web hoạt động trên cùng một dữ liệu. Giả sử một hệ thống ngân hàng trong đó dữ liệu tài khoản có thể được truy cập bởi các ứng dụng web khác nhau; nó có thể được truy cập bởi khách hàng (ngân hàng trực tuyến), bởi dịch vụ cá nhân (chủ yếu là đọc) và bởi bộ phận quản trị tài khoản (công cụ quản trị). Các ứng dụng này chạy dưới dạng các ứng dụng web riêng biệt trên các máy khác nhau nhưng chúng sử dụng cùng một dữ liệu và một tập hợp các thao tác dữ liệu phổ biến và các truy vấn tìm kiếm.
Một cách tiếp cận có thể là xây dựng một ứng dụng cốt lõi phù hợp với nhu cầu chung của khách hàng, cụ thể là lưu trữ dữ liệu, thao tác và tìm kiếm cơ sở. Sau đó, khách hàng có thể gọi ứng dụng cốt lõi này để đáp ứng yêu cầu của họ. Yêu cầu là các ứng dụng được xây dựng trên đầu trang của một Wicket/Spring/Hibernate stack như WARs.
Để có hình ảnh, dưới đây là một số phương pháp có thể chúng tôi nghĩ đến:
A Cách tiếp cận nguyên khối. Xây dựng một ứng dụng web lớn phù hợp với mọi nhu cầu (đây không thực sự là một lựa chọn)
B Cách tiếp cận API. Xây dựng một API truy cập cơ sở dữ liệu lõi (JAR) để truy cập/thao tác dữ liệu. Mỗi ứng dụng web được xây dựng như một WAR riêng biệt sử dụng API để truy cập cơ sở dữ liệu. Không có ứng dụng lõi riêng biệt.
C Cách tiếp cận RMI. Ứng dụng lõi chạy như một ứng dụng độc lập (có thể là một WAR) và cung cấp các dịch vụ thông qua RMI (hoặc HttpInvoker).
Cách tiếp cận D WS. Giống như C nhưng thay thế RMI bằng Dịch vụ web
Cách tiếp cận OSGi E. Xây dựng tất cả các thành phần như mô-đun OSGi và chạy trong một thùng chứa OSGi. Có thể sử dụng SpringSource dm Server hoặc ModuleFusion. Cách tiếp cận này không phải là một lựa chọn cho chúng tôi vì một số lý do ...
Hy vọng tôi có thể giải quyết vấn đề. Chúng tôi chỉ đang đi với tùy chọn B, nhưng tôi không tự tin lắm với nó. Ý kiến của bạn là gì? Bất kỳ giải pháp nào khác? Những hạn chế của mỗi giải pháp là gì?
Nó có thể chỉ là cách bạn nêu vấn đề, nhưng điều này nghe có vẻ nghi ngờ như bài tập về nhà. – Powerlord
Nghe có vẻ như vậy. Đó có thể là do ví dụ về ngân hàng. Trong trường hợp cụ thể của chúng tôi, nó không phải là một ứng dụng ngân hàng. – cretzel