Sto provando a implementare come un'applicazione plug-in. So che ci sono già diverse soluzioni là fuori, ma questa sarà solo la prova del concetto, niente di più. L'idea sarebbe quella di rendere l'applicazione principale dell'applicazione quasi priva di funzioni per impostazione predefinita e quindi far conoscere ai plug-in l'un l'altro, avendo loro implementare tutte le funzionalità necessarie.Architettura plug-in in .NET
Un paio di problemi nascono:
- voglio i plugin in fase di esecuzione di conoscere l'altro attraverso la mia domanda. Ciò non significherebbe che al momento del codice non potevano fare riferimento agli assembly di altri plugin in modo che potessero usare le sue interfacce, solo che l'inizializzazione della funzione plugin dovrebbe essere sempre attraverso la mia app principale. Per esempio: se ho entrambi i plugin X e Y caricati e Y vuole usare le funzionalità di X, dovrebbe "registrare" il suo interesse attraverso la mia applicazione per usare le sue funzionalità. Dovrei avere una sorta di "dizionario" nella mia applicazione in cui memorizzo tutti i plugin caricati. Dopo esserti registrato per interesse nella mia applicazione, il plugin Y otterrebbe un riferimento a X in modo che potesse usarlo. è un buon approccio?
- Quando si codifica il plug-in Y che utilizza X, ho bisogno di fare riferimento all'assembly di X, quindi posso programmare sulla sua interfaccia. Questo ha il problema del controllo delle versioni. Cosa succede se codifico il mio plug-in Y contro una versione obsoleta del plug-in X? Devo usare sempre un posto "centrale" in cui si trovano tutti gli assemblaggi, avendo sempre le versioni aggiornate degli assiemi?
Ci sono per caso libri che trattano specificamente di questo tipo di progetti per .NET?
Grazie
Edit: penso che la gente se si allontanano dai 2 domande che ho fatto. Posso dare un'occhiata a MEF e #develop, ma mi piacerebbe ottenere risposte specifiche alle domande che ho fatto.
Consiglio di guardare in MEF, che è nuovo di zecca ma sembra molto promettente. –
@Matt - penso che dovresti dare una risposta - è esattamente quello che stavo per dire –
Ho già sentito parlare di MEF, ma come affermato nell'OP, la mia idea è di non usare un framework già costruito ma di implementare me stesso. Non ha bisogno di qualcosa di molto complesso. –