Tôi thấy rất nhiều bài thuyết trình trên OSGi và tôi nghĩ rằng nó có vẻ đầy hứa hẹn để thực thi mô đun hóa tốt hơn. Rõ ràng là "hotdeployment" và "chạy các phiên bản khác nhau của x song song" cũng là điểm bán của thị trưởng.OSGi có thể giúp giảm độ phức tạp?
Tôi tự hỏi liệu những gì OSGi hứa hẹn sẽ giải quyết thậm chí là một vấn đề ...? Nó nhắc tôi nhớ về những ngày đầu của OO khi những tuyên bố tương tự là người giúp việc:
Khi OO là mới, đối số lớn là khả năng sử dụng lại. Nó đã được tuyên bố rộng rãi rằng khi sử dụng OO, người ta sẽ chỉ phải "viết một lần" và sau đó có thể "sử dụng ở khắp mọi nơi".
Trong thực tế, tôi chỉ thấy điều này làm việc cho một số ví dụ cấp độ khá thấp. Tôi nghĩ rằng lý do cho điều này là viết mã tái sử dụng là khó khăn. Không phải về mặt kỹ thuật mà là từ quan điểm thiết kế giao diện. Bạn phải dự đoán làm thế nào các khách hàng tương lai sẽ muốn sử dụng các lớp học của bạn và có những lựa chọn đúng ở phía trước. Điều này là khó bởi định nghĩa và do đó lợi ích tái sử dụng tiềm năng thường không thể cung cấp.
Với OSGi, tôi có nghi ngờ rằng ở đây chúng tôi có thể rơi vào lời hứa, giải pháp tiềm năng cho các sự cố mà chúng tôi không thực sự có. Hoặc nếu chúng tôi có chúng, chúng tôi không có chúng đủ số lượng và mức độ nghiêm trọng có thể biện minh để mua vào OSGi để được trợ giúp. "Hotdeployment" ví dụ về một tập hợp con các mô-đun chắc chắn là một ý tưởng tuyệt vời, nhưng tần suất thực hiện thực sự là có hoạt động không? Làm thế nào thường không phải vì nó bật ra bạn đã nhận mô-đun hóa sai cho vấn đề cụ thể? Làm thế nào về các thực thể mô hình được chia sẻ giữa nhiều mô-đun? Tất cả các mô-đun này có phải được thay đổi cùng một lúc không? Hoặc bạn làm phẳng các đối tượng của bạn để nguyên thủy và chỉ sử dụng các đối tượng trong giao tiếp giữa các mô-đun, để có thể giữ các giao diện giao diện?
Vấn đề khó khăn nhất khi áp dụng OSGi là, tôi sẽ đoán, để có được những mô-đun hóa "quyền". Tương tự như việc nhận các giao diện của các lớp của bạn ngay trong OO, với OSGi, vấn đề vẫn giữ nguyên, trên một quy mô lớn hơn lần này, gói hoặc thậm chí mức dịch vụ.
Như bạn có thể đã đoán, tôi hiện đang cố gắng đánh giá OSGi để sử dụng trong một dự án. Vấn đề chính của chúng tôi là tăng độ phức tạp khi codebase phát triển và tôi muốn phá vỡ hệ thống trong các mô-đun nhỏ hơn có tương tác ít được xác định hơn.
- Với khung không bao giờ có thể giúp quyết định những gì thành mô đun hóa, OSGi có bao giờ thanh toán cho bạn không?
- Làm cho cuộc sống của bạn dễ dàng hơn khi làm việc theo nhóm?
- Có giúp giảm số lượng lỗi không?
- Bạn đã bao giờ thành công "hotdeploy" các thành phần chính?
- OSGi có giúp giảm sự phức tạp theo thời gian không?
- OSGi có giữ lời hứa của mình không?
- Điều đó có đáp ứng được kỳ vọng của bạn không?
Cảm ơn!
OSGi trông giống như một khuôn khổ cải trang đối với tôi. – Anurag
Hãy làm cho cộng đồng wiki này. – bmargulies