Abbiamo un'applicazione legacy con, tra le altre cose, la possibilità di creare classi di istanze all'interno di DLL VB6 dinamicamente e chiamare metodi con firme diverse.
Al momento non abbiamo modo di accedere al codice dell'applicazione legacy e non c'è modo di rimuoverlo dalla produzione.
Il nostro requisito è di costruire piccole applicazioni di tipo plugin che verrebbero chiamate dall'applicazione legacy. Queste applicazioni sono state scritte storicamente in VB6, ma c'è una spinta a crearne di nuove in .NET, riutilizzando il codice VB6 esistente laddove possibile, usando l'incapsulamento per nascondere l'implementazione VB6 che alla fine verrà sostituita.
Finora ho scoperto che le applicazioni .NET possono essere create senza problemi rendendole COM visibili con qualche codice piastra della caldaia.
Le cose che posso controllare sono i parametri passati nelle nuove applicazioni e le loro firme.
Vorrei che tutte le nuove applicazioni superassero il boilerplate, l'architettura diventasse:
Legacy app > new .NET application > new DLLs
Una possibilità che ho avuto è di fare in modo che l'applicazione legacy passi l'assembly e il nome della classe come parametro e un oggetto json / xml contenente i parametri che la classe di destinazione avrebbe bisogno di un altro parametro. La nuova applicazione quindi istanziare le DLL secondo necessità utilizzando la reflection.
L'alternativa sarebbe creare le applicazioni .NET in modo simile a quelle VB6, con un costruttore senza parametri e un metodo che funge da punto di ingresso.
Per disegnare un'immagine, immagina l'applicazione legacy come un datagrid, contenente magari un ID di riga e le app di destinazione che necessitano dell'ID di riga per fare tutto ciò che devono fare.
Come suona questo design? Con la longevità in mente, le applicazioni .NET saranno progettate pensando alla riutilizzabilità sin dall'inizio. Sono un po 'preoccupato che se / quando l'applicazione legacy verrà eliminata, avremo una architettura scadente a causa di come le cose devono essere fatte ora.
Inoltre, mi manca qualcosa di ovvio qui?