Nhóm của tôi đang cố gắng phát triển một hệ thống mới dựa trên OSGi, và bây giờ chúng tôi có hơn 50 gói và tính. Vấn đề là, có sự phụ thuộc giữa các bó. Ví dụ, khi gói A khởi động, nó sẽ đăng ký một dịch vụ cho OSGi, và khi gói B khởi động, nó sẽ sử dụng dịch vụ đó. Do đó, tôi cần gói Khởi động sớm hơn gói B. Để thực hiện điều này, tôi đặt mức bắt đầu của gói A ít hơn gói B.Có hợp lý để sử dụng các Cấp độ Bắt đầu khác nhau để quản lý các phụ thuộc giữa các gói OSGi không?
Chúng tôi đã cố gắng sử dụng ServiceTracker để tránh đặt mức bắt đầu, nhưng khi số lượng dịch vụ ngày càng tăng lên, khó quản lý và hiểu toàn bộ hệ thống.
Tuy nhiên, tôi thấy bài viết này trên internet: OSGi and Start Levels. Tôi không chắc chắn với hai câu trong đó:
- Thứ tự bắt đầu trong cấp độ bắt đầu không xác định!
- Nói chung, khi làm việc với các cấp độ bắt đầu, không bao giờ phụ thuộc vào thứ tự bắt đầu. Hãy nghĩ về các cấp độ bắt đầu như một vấn đề quản lý chứ không phải vấn đề thời gian phát triển.
Điều đó có nghĩa là cấp độ bắt đầu sẽ không quyết định thứ tự bắt đầu? Sau đó, khi nào tôi nên sử dụng nó?
Có hợp lý để sử dụng các cấp độ bắt đầu khác nhau để quản lý sự phụ thuộc giữa các gói OSGi không?
Có thể làm cho tất cả các gói là một mô-đun động (sử dụng ServiceTracker để theo dõi tất cả các dịch vụ mà nó sử dụng), nhưng phải mất nhiều thời gian hơn và yêu cầu các nhà phát triển cao cấp.
Nhóm của tôi đã sử dụng các cấp độ bắt đầu cho các vấn đề tương tự. Đó là một cách tuyệt vời để tìm kiếm các vấn đề và đó là một giải pháp ngắn hạn hữu ích nếu bạn không có thời gian để khắc phục sự cố cơ bản ngay lập tức. – Jon7
+1 đến câu trả lời của rsteele. Tùy thuộc vào thứ tự bắt đầu giới thiệu sự mong manh cực kỳ. Một trường hợp sử dụng khác cho các mức bắt đầu mặc dù là tối ưu hóa. Các gói của bạn nên luôn luôn * LÀM VIỆC * bất kể thứ tự chúng được bắt đầu bằng ... tuy nhiên đôi khi một gói có thể cần phải thực hiện nhiều việc hoặc ít hơn tùy thuộc vào thứ tự bắt đầu của nó. Vì vậy, bạn có thể sử dụng các cấp độ bắt đầu để tối ưu hóa hiệu suất của ứng dụng của bạn, chỉ cần không phụ thuộc vào chúng cho chức năng thực tế. –
Cảm ơn Neil. Tôi đã không xem xét vấn đề hiệu quả, nhưng nó có ý nghĩa rất nhiều. –