Chúng tôi đang phát triển một ứng dụng web (cho phép gọi nó là một ngân hàng hình ảnh) mà chúng tôi đã xác định được nhu cầu sau:Làm thế nào để cung cấp dịch vụ OSGi mỗi khách hàng
- Ứng dụng phục vụ khách hàng trong đó bao gồm một tập hợp các người dùng.
- Một khách hàng mới có thể được tạo ra tự động và một khách hàng quản lý đó là người dùng
- Khách hàng có bộ tính năng khác nhau mà có thể thay đổi động
- Khách hàng có thể phát triển các tính năng riêng của họ và họ đã được triển khai.
- Ứng dụng này đồng nhất và có phiên bản hiện tại, nhưng phiên bản nâng của khách hàng vẫn có thể được xử lý riêng lẻ.
- Ứng dụng phải được quản lý tổng thể và khách hàng chia sẻ các tài nguyên dễ dàng để mở rộng quy mô.
Câu hỏi: Chúng ta có nên xây dựng trên một khuôn khổ OSGi tiêu chuẩn hoặc chúng ta sẽ tốt hơn của việc sử dụng một trong những mô hình ứng dụng mới nổi (Virgo, Bạch Dương hoặc tiêu chuẩn OSGi sắp tới)?
More nền và một vài suy nghĩ ban đầu:
Chúng tôi đang xây dựng một ứng dụng web mà chúng tôi hình dung sẽ sớm có hàng trăm khách hàng (công ty) với hàng trăm người dùng mỗi (nhân viên), nếu không tại sao bận tâm;). Chúng tôi muốn làm cho nó mô-đun do đó OSGi. Trong tương lai, khách hàng có thể phát triển và bổ sung các thành phần vào ứng dụng của họ để chúng tôi cần sự cô lập của khách hàng. Chúng tôi cũng có thể muốn các khách hàng khác nhau nhận các bộ tính năng khác nhau.
Cách "chính xác" để cung cấp các triển khai dịch vụ khác nhau cho các ứng dụng khách khác nhau của ứng dụng khi các khách hàng khác nhau chia sẻ cùng một gói như thế nào?
Chúng tôi có thể sử dụng phương pháp tiếp cận ứng dụng-máy chủ (chúng tôi đã xem Virgo) và tải từng gói một lần cho từng khách hàng vào "ứng dụng" của riêng họ. Tuy nhiên nó không cảm thấy giống như ôm OSGi. Chúng tôi không lưu trữ vô số các ứng dụng, 99% các dịch vụ sẽ chia sẻ cùng một impl. cho tất cả khách hàng. Ngoài ra chúng tôi muốn quản lý (cấu hình, giám sát, vv) ứng dụng như một.
Mỗi dịch vụ có thể được đăng ký (được định cấu hình đúng) một lần cho mỗi khách hàng cùng với một số thuộc tính "khách hàng-mã thông báo". Đó là một chút lộn xộn và sẽ phải được xử lý với một mô hình extender hoặc có lẽ một ManagedServiceFactory? Ngoài ra trước khi đăng ký một dịch vụ cho khách hàng Một người sẽ cần phải có được phiên bản A của mỗi phụ thuộc của nó.
Khách hàng "hiện tại" sẽ được biết đến với từng yêu cầu và có thể bị ràng buộc vào chuỗi. Đó là một chút của một mớ hỗn độn có để cung cấp một khách hàng-mã thông báo mỗi khi bạn tìm kiếm một dịch vụ. Nó làm cho nó khó khăn để sử dụng khung thành phần như kế hoạch chi tiết. Để khắc phục sự cố, chúng tôi có thể sử dụng các móc dịch vụ để ủy quyền cho từng loại dịch vụ đã đăng ký và cho phép gửi công văn đến đúng cá thể theo khách hàng hiện tại (chuỗi).
Bắt đầu toàn bộ trải nghiệm OSGi của chúng tôi bằng cách triển khai giải pháp khắc phục sự cố (hack?) Ở trên thực sự có cảm giác giống như chỉ dẫn chúng tôi đang đi sai đường dẫn. Vậy chúng ta nên làm gì? Quay lại Virgo? Hãy thử một cái gì đó tương tự như những gì được nêu ở trên? Một cái gì đó hoàn toàn khác nhau ?!
ps. Cảm ơn bạn đã đọc tất cả các con đường xuống đây!;)
Tôi đã chỉnh sửa câu hỏi để làm cho nó cụ thể hơn vì vậy sẽ dễ dàng hơn để chấp nhận câu trả lời, điều mà tôi thực sự muốn làm! Tôi khá mới để stackoverflow vì vậy xin lỗi vì đã được một chút vụng về ... –