Domanda

Ho intenzione di sviluppare un sistema che è interamente basato su moduli.Il sistema di base dovrebbe avere il supporto per trovare i plugin, a partire da loro e di essere in grado di fornire modi per quei moduli per comunicare.Idealmente, si dovrebbe essere in grado di mettere in nuovi moduli e rimuovere inutilizzati moduli e moduli dovrebbero essere in grado di utilizzare ogni altro suo funzionamento, se disponibile.

Questo sistema dovrebbe essere utilizzato come base per la simulazione dei sistemi, dove un sacco di roba accade in diversi moduli, e altri moduli che si potrebbe desiderare di fare qualcosa in base a che.

Il sistema che ho intenzione di sviluppare sta andando ad essere in Java.Il mio modo di vedere, ho intenzione di avere una cartella con una sottocartella per ogni modulo include un file XML che descrive il modulo con informazioni personali come il nome, forse, che gli eventi si potrebbero sollevare roba del genere.Suppongo che potrei aver bisogno di scrivere un custom ClassLoader di lavoro di questa roba.

La cosa è, non so se la mia idea è davvero tiene l'acqua e, naturalmente, ho intenzione di costruire un prototipo funzionante.Tuttavia, non ho mai lavorato su un vero sistema modulare di prima, e io non sono davvero sicuro di quello che è il modo migliore per affrontare questo problema.

Da dove dovrei cominciare?Ci sono comuni i problemi e le insidie che si trovano durante lo sviluppo di questo tipo di sistema?Come faccio a verificare i moduli parlare con gli altri mentre mantenere l'isolamento (io.e, è possibile rimuovere un modulo e un altro modulo che stava utilizzando, rimane sana di mente)?Ci sono guide specifiche o articoli ho letto che potrebbe darmi qualche idea su dove cominciare?Sarebbe meglio se fossero basate su Java, ma questo non è un requisito, come quello che sto cercando, per ora sono solo idee, non il codice.

Qualsiasi feedback è apprezzato.

È stato utile?

Soluzione

Si dovrebbe sicuramente guardare OSGi.Vuole essere il componente/plugin meccanismo per Java.Esso consente di modularizzare il codice (nel cosiddetto bundle) e i bundle di aggiornamento in fase di runtime.È inoltre possibile nascondere completamente i pacchetti di implementazione da accessi indesiderati, fasci di altri, ad esempio.solo fornire le API.

Eclipse è stato il primo grande progetto open-source di implementare e utilizzare OSGi, ma non sfruttare appieno (nessun plugin installazioni/aggiornamenti senza riavvio).Se si inizia da zero, però, che vi darà un buon quadro di riferimento per un sistema di plugin.

Apache Felix è una completa implementazione open-source (e ce ne sono altri, come Eclipse Equinozio).

Altri suggerimenti

Senza entrare nei dettagli, si dovrebbe essere guardando Primavera e una familiarizzazione con OSGI o Eclipse RCP quadri vi darà anche alcuni concetti fondamentali è necessario tenere a mente.

Un'altra opzione è l' ServiceLoader aggiunto in Java 1.6.

Sono molti modi per farlo, ma qualcosa di semplice può essere utilizzando la Reflection.Scrivete nel nome del file XML del file (che sarebbe una classe in reallity).Si può controllare che tipo è e creare di nuovo con la riflessione.La classe potrebbe avere un'Interfaccia comune che vi permetterà di trovare se il file esterno/classe di modulo.Ecco alcune informazioni su Riflessione.

È inoltre possibile utilizzare un precodificati quadro come questo SourceForge unotesto del link che vi darà un buon primo passo per creare un modulo/plugin.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top