2009-08-31 11 views

risposta

9

Sono concettualmente correlati in quanto entrambi forniscono un meccanismo di "separazione delle preoccupazioni".

L'OSGI lo fa a livello di modulo: pensa all'architettura di Eclipse con più plug-in, ognuno dei quali è responsabile di specifiche preoccupazioni/funzionalità.

DI è orientato a livello di oggetto - fornisce i mezzi per costruire applicazioni da più oggetti cablati insieme, con ogni oggetto responsabile della sua funzionalità specifica.

Tecnologicamente sono diversi. OSGI è una specifica con più implementazioni. DI era un modello di progettazione con più implementazioni e API. Tuttavia, in JCP c'è qualche lavoro recente per provare a standardizzare le API DI (JSR 330)

13

Le specifiche OSGi sono composte da due parti separate: nucleo e compendio.

La parte principale è la specifica di un sistema di moduli per Java. In quanto tale, la specifica principale non ha alcuna relazione con il concetto di DI.

La parte compendio, dall'altra parte, specifica una serie di servizi che un contenitore OSGi può fornire. Tra questi servizi troverai la "Specifica dei servizi dichiarativi" (OSGi Compendium Services, capitolo 112) che è il primo tentativo di portare il concetto familiare di DI in OSGi. L'idea è semplice: poiché OSGi consente allo sviluppatore di implementare, definire e registrare i servizi, la specifica dei servizi dichiarativi offre allo sviluppatore la possibilità di definire un servizio dipendente da una serie di altri servizi sottostanti. Questo è un problema particolarmente interessante (e difficile) in OSGi, perché i servizi sono per definizione inaffidabili e possono apparire e scomparire.

Accanto alla dichiarativa Servizi Specification, ci sono almeno altri due soluzione popolare cercando di fornire un più potente quadro DI in OSGi:

Vale la pena notare che la prossima versione R4.2 delle specifiche OSGi conterrà un nuovo compendi Una specifica di nome Blueprint Services, che fornirà una soluzione DI completa per OSGi basata sul framework Spring DM (il team Spring ha contribuito pesantemente a questa nuova specifica)

Problemi correlati