2009-10-19 18 views
23

La nuova specifica R4.2 per OSGi descrive il servizio Blueprint, per l'iniezione delle dipendenze e il cablaggio di servizio.OSGi: Blueprint sostituisce i servizi dichiarativi?

Il Blueprint sostituisce i Servizi dichiarativi (che fanno ancora parte delle specifiche), o sono destinati a funzionare insieme?

Blueprint è già disponibile per le implementazioni più diffuse (Felix ed Equinox)?

+1

Current take on this - [Blueprint o DS o cosa usare?] (Http://karaf.922171.n3.nabble.com/Blueprint-or-DS- oppure-----us-tu-4040845.html) – fnt

risposta

12

Mi sono posto la stessa domanda e mentre discutevo di questo con gli altri coinvolti nell'argomento, il tenore era che sebbene i due si sovrappongano in una certa misura, il caso d'uso in cui utilizzare è piuttosto diverso. DS è una soluzione leggera per evitare gli attivatori e le dipendenze del servizio modello in modo dichiarativo. BP è fondamentalmente un contenitore DI destinato alle distribuzioni aziendali. È anche più comune per gli sviluppatori Java "regolari" che non hanno familiarità con la natura dinamica di OSGi (nascondendosi molto dietro ai proxy).

Implementazione saggio, ci sono due progetti su di esso (tutti sono indipendenti dal contenitore e non rilasciati ufficialmente). Spring DM 2.0 fornirà un'implementazione (2.0.0.M1 already contains a working implementation) e Apache come parte del suo progetto geronimo (slideshow).

3

Per la mia esperienza all'interno dell'ambiente basato su Felix, DS è l'unico iniettore di dipendenza maturo e che fornisce coerenza con altre parti delle specifiche OSGi Compendium come ConfigAdmin.

Il piano mi sembra un inserimento politico di Spring DM nelle specifiche OSGi.

iPojo è un'alternativa basata su annotazioni Java anziché descrittori XML, nascondendo parte della base OSGi.

1

Se si è già utilizzato Spring, i servizi Blueprint sono più familiari da utilizzare. I servizi dichiarativi non sono così potenti ma ampiamente adottati nei contenitori OSGi.

0

Un altro problema è che i servizi di modello, per quanto ne so, sono tutti presenti in un contenitore, il contenitore del modello, mentre i servizi dichiarativi sono resi disponibili nei pacchetti che li fanno riferimento. Soprattutto con Equinox questo comporta un comportamento diverso. DS deve essere utilizzato su un progetto quando si desidera aderire al rigoroso approccio di classe che sostiene l'equinozio.