2009-08-31 22 views

Odpowiedz

9

Są koncepcyjnie powiązane, ponieważ zapewniają mechanizm "rozdzielania obaw".

OSGI robi to na poziomie modułu - pomyśl o architekturze Eclipse z wieloma wtyczkami, z których każda odpowiada za określone problemy/funkcję.

DI jest zorientowany na poziomie obiektu - zapewnia środki do konstruowania aplikacji z wielu połączonych obiektów, z każdym obiektem odpowiedzialnym za jego specyficzną funkcjonalność.

Technologicznie są różne. OSGI to specyfikacja, która ma wiele implementacji. DI był wzorcem projektowym z wieloma implementacjami i interfejsami API. W JCP istnieją jednak ostatnie prace mające na celu standaryzację interfejsu DI API (JSR 330)

13

Specyfikacja OSGi składa się z dwóch oddzielnych części: rdzenia i kompendium.

Podstawową częścią jest specyfikacja systemu modułów dla języka Java. W związku z tym specyfikacja rdzenia nie ma związku z koncepcją DI.

Część kompendium, po drugiej stronie, określa serię usług, które może dostarczyć kontener OSGi. Wśród tych usług znajduje się "Deklaratywna specyfikacja usług" (OSGi Compendium Services, Rozdział 112), która jest pierwszą próbą wprowadzenia znanej koncepcji DI do OSGi. Pomysł jest prosty: ponieważ OSGi pozwala programistom wdrażać, definiować i rejestrować usługi, Deklaratywna specyfikacja usług daje programistce możliwość zdefiniowania usługi zależnej od szeregu innych usług podstawowych. Jest to szczególnie interesujący (i trudny) problem w OSGi, ponieważ usługi są z definicji niewiarygodne i mogą pojawiać się i znikać.

Obok deklaratywnej Services Specification, istnieją co najmniej dwa inne popularne rozwiązanie stara się zapewnić mocniejsze ramy DI w OSGi:

Warto zauważyć, że nadchodząca wersja specyfikacji OSGi R4.2 będzie zawierała nowe kompendium um specyfikacja nazwie Blueprint usługi, które zapewni kompletne rozwiązanie DI dla OSGi w oparciu o Spring Framework DM (zespół Wiosna mocno przyczynił się do tej nowej specyfikacji)

Powiązane problemy