Ho un problema di architettura qui.
Lascia che ci sia un IShell
. Principalmente responsabile della mappatura dei comandi dell'utente (rappresentati come stringhe di tipo linux) a un% di% di co_de appropriato.
Questi eseguibili sono piuttosto vari. Quindi, ci sono diversi moduli / assembly / DLL (o how-the-hell-you-call-it): IExecutable
, Module1
, Module2
che forniscono tutte diverse implementazioni del sopra citato Module3
.
Ora è necessario poter sostituire al volo uno di questi moduli al momento dell'esecuzione, senza arrestare IExecutable
istanza . Ovviamente, ci sarà una sorta di API, come IShell
e ... potrebbe restituire un codice non elaborato da compilare localmente (quali sono i vantaggi e gli svantaggi?) O potrebbe rispondere con la dll precompilata *.
Non importa come, a un certo punto, /api/update/module1
alla fine riceverà la versione più recente di un particolare modulo. E qui emerge il problema più grande. Supponendo che io possa "mettere in pausa" cosa sta accadendo all'interno, qual è il modo più chiaro e più efficace per sostituire il modulo attualmente caricato con uno nuovo?
Dato che la maggior parte del codice scritto in Haskell, sono decisamente interessato alla soluzione correlata a Haskell. O, almeno, vorrei riconoscere il fatto che non c'è nessuno.
P.S. Se qualcuno di voi, ragazzi, è a conoscenza del concetto potrebbe funzionare, ma non la realizzazione di Haskell di quello, comunque fatemelo sapere. Grazie in anticipo.