2012-01-23 38 views
15

Tôi đang tìm cách triển khai và cập nhật ứng dụng OSGI (Karaf, cụ thể) là gì. Có vẻ như có một số tùy chọn. Một là sử dụng Kho lưu trữ bó OSGi (OBR), một là sử dụng các tính năng trong Karaf, và thứ ba là sử dụng Karaf Cave.Sự khác biệt giữa các tính năng trong Karaf và OBR

Tôi không thực sự chắc chắn về cách các tùy chọn này thực sự khác nhau. Tất cả họ dường như đang làm những điều tương tự. Chúng chỉ là các triển khai khác nhau của cùng một chức năng? Ai đó có thể vui lòng giải thích sự khác biệt hoặc cung cấp một số khuyến nghị?

Trả lời

38

Tính năng Karaf và OBR là các cách khác nhau để giải quyết vấn đề tương tự (loại). Cả hai đều cho phép bạn cài đặt các gói OSGi vào một khung công tác OSGi, nhưng cách chúng quyết định các gói cài đặt nào khác nhau.

Với tính năng Karaf, bạn cung cấp tệp (feature.xml, nói) liệt kê rõ ràng URL cho tất cả các gói cho đối tượng địa lý. Họ có thể sống trên hệ thống tập tin, hoặc trong một kho lưu trữ maven, hoặc bất cứ nơi nào khác mà có thể được mô tả bởi một URL.

OBR, mặt khác, tính toán các gói để làm việc dựa trên các yêu cầu và khả năng. Nó sẽ làm việc ra các phụ thuộc transitive của bất cứ điều gì bạn đang cài đặt như là điểm khởi đầu của bạn và chắc chắn rằng tất cả chúng đều được cài đặt. Thông thường bạn sẽ cấu hình một hoặc nhiều kho lưu trữ bên ngoài hỗ trợ định dạng OBR, và sau đó trình phân giải OBR trong thời gian chạy của bạn sẽ cung cấp các gói từ các kho lưu trữ đó. Vì vậy, bạn có thể nói "Tôi cần gói org.foo" hoặc "Tôi cần dịch vụ OSGi triển khai org.bar" và người cung cấp sẽ quyết định gói nào phù hợp nhất với yêu cầu của bạn. OBR là linh hoạt hơn và chung chung hơn các tính năng của Karaf, nhưng nó có thể quá mức cần thiết nếu bạn chỉ cài đặt một bộ các gói được xác định rõ ràng vào một khung công tác đã sẵn sàng với cơ sở hạ tầng bạn cần. Nó cũng không giúp bạn nếu các gói tạo nên ứng dụng của bạn không có sự phụ thuộc vào nhau - bạn sẽ vẫn cần phải bao gồm tất cả chúng trong 'bộ bắt đầu' của bạn.

Sự khác biệt bị mờ một chút, bởi vì các tính năng của Karaf cho phép bạn chỉ định phạm vi phiên bản trong URL maven, vì vậy ngay cả với một tính năng, bạn có thể linh hoạt một chút trong những gì được cấp phép. Các tính năng của Karaf cũng có khả năng tương tác với OBR để bạn có thể viết tệp định nghĩa tính năng của mình theo các yêu cầu OBR.

Tôi tin rằng Hang động Karaf là một triển khai OBR với một số tính năng. Vì vậy, nó là một máy chủ chứ không phải là một 'công nghệ' mới như tính năng hoặc cung cấp OBR.

- Enterprise OSGi trong hành động: http://www.manning.com/cummins

+2

tự quảng cáo đúng cách;) câu trả lời tốt, cảm ơn! – Kjellski

+0

"nhưng nó có thể quá mức cần thiết nếu bạn chỉ cài đặt một bộ bó được xác định rõ ràng vào một khuôn khổ đã sẵn sàng với cơ sở hạ tầng bạn cần", tôi đã gắp quá mức và nó đưa tôi đến bài viết này ... có thể một ngày , nhưng chưa :) – sloven