Linee guida generali per l'architettura di un'applicazione basata su plugin

0

La nostra applicazione è composta da una webapp principale e da una manciata di servizi Windows che eseguono una varietà di lavori che alimentano, igienizzano e ottimizzano tale webapp.

Per facilitare il compito di mantenere questi servizi vorrei unificarli in una singola applicazione e mentre ho diversi anni di pratica nello sviluppo di C #, ho poca esperienza nello sviluppo di applicazioni Windows (in C # principalmente sviluppo per il web utilizzando ASP NET MVC).

Mi piacerebbe ricevere suggerimenti sull'architettura / sulle tecnologie / pratiche che dovrei usare per sviluppare tale applicazione.

  • L'idea di base è sviluppare un'applicazione per windows basata su plugin funge da frontend per gestire diversi plugin (ogni attuale servizio Windows diventerebbe un plugin).
  • Ci sarà tre diversi tipi di plugin: alcuni saranno chiamati da tempo a tempo, altri in momenti particolari e altri quando alcuni file / cartelle sono modificato.
  • I plug-in dovrebbero avere un modo per registrare i messaggi sull'applicazione principale.

Posso usare Windows Form o WPF per raggiungere questo obiettivo. Penso che le forme di Windows siano più facili da afferrare e sviluppare. Non ha bisogno di essere elegante, solo funzionale.

Per chiarire ulteriormente, non sto chiedendo codice o tutorial ma linee guida per ottenere ciò di cui ho bisogno. Principalmente il plugin (è MEF una buona opzione o è eccessivo?) E sistemi di messaggistica.

    
posta Henrique Miranda 21.07.2016 - 21:59
fonte

1 risposta

1

Dai un'occhiata a Activator.CreateInstance . Ti consentirà di istanziare classi arbitrarie in fase di esecuzione in base a una stringa che rappresenta il nome dell'assieme e della classe che desideri creare. Puoi quindi collegare qualsiasi classe conforme al Interface che hai specificato e configurarla utilizzando un file XML accessibile ai tuoi consumatori.

Dovresti anche dare un'occhiata a MEF . Per compilare ed eseguire classi arbitrarie in fase di esecuzione, dai un'occhiata a CSScript .

    
risposta data 21.07.2016 - 22:07
fonte

Leggi altre domande sui tag