Lottando sui vantaggi dell'uso di un approccio plugin in un'architettura software industriale [chiuso]

2

Sto provando a progettare un'applicazione, qualcosa di abbastanza generico su uno stack C # .NET.

Si suppone che sia un'applicazione desktop pensata per controllare apparecchiature industriali e per eseguire misurazioni e test, tuttavia è previsto che sia in grado di passare in seguito a diverse interfacce utente che trattano con diversi

Sto cercando di avere un approccio abbastanza generico:

  • UI Agnostic: pagine web / Winform / WPF / GTK # / Whathever, ecc. usando oggetti nudi per evitare i fastidi di un codice UI della piastra della caldaia molto elevato.
  • DB Agnostic per l'archiviazione dei dati (ADO.NET e EF possono occuparsene)
  • Controllo remoto e monitoraggio (che è davvero complicato ma suppongo che con WCF dovrei riuscire ad avere un accesso remoto con servizio in esecuzione sul client remoto)
  • Gestione utenti
  • Risorse industriali esterne (dispositivi)
  • Registrazione e segnalazione errori
  • Esportazione di rapporti e dati
  • Licenza

Il livello aziendale dell'applicazione è diviso in tre parti principali e sfrutta le altre parti sopra descritte:

  • Edizione: definire una serie di test (diagramma di flusso) con condizioni (interazioni dell'utente, recupero dei risultati durante i test) utilizzando le risorse industriali disponibili
  • Operazione: esegue i test definiti sopra con l'interazione dell'utente (se definita nella fase precedente)
  • Analisi: gestire i dati (DB) che sono stati registrati conformemente alla definizione di test fornita nella parte dell'edizione e fornire alcuni calcoli statistici: funzionalità di data mining (clustering, rilevamento di anomalie, ecc.) e funzionalità di reporting (che può anche essere definito per essere generato automaticamente in diversi momenti dell'operazione).

Il mio problema è che mi piacerebbe avere un approccio modulare e mi chiedo se questo sia davvero auspicabile nel mio caso. L'approccio è solido ma allo stesso tempo sembra fornire molti problemi.

In teoria, significa che puoi testare i tuoi moduli indipendentemente gli uni dagli altri ma in realtà nella maggior parte dei casi anche se puoi prendere in giro gli input / output richiesti per i test, la realtà è che richiede altre dipendenze per farlo funzionare e questo è per me la vera conclusione di questo approccio. Il fatto che tu possa caricare e scaricare alcuni sono per me applicabili solo in un paio di situazioni ma non così tante.

Ad esempio, User Management sta utilizzando il modulo Database che probabilmente utilizzerà anche un altro modulo di cifratura e così via e così via.

In seguito anche il controllo remoto e il monitoraggio lo userebbero così ... il mio punto è che sembra piuttosto difficile avere moduli completamente indipendenti qui.

L'approccio plug-in / modulare funzionerebbe come un incantesimo per le risorse industriali esterne in cui tali dispositivi dovrebbero implementare una determinata interfaccia per essere compatibili con il sistema.

Ma per il resto sono davvero sospettoso che valga la pena di usare MEF o qualsiasi altro framework di estensione / estensione.

Che ne pensi? L'approccio modulare è davvero applicabile a tutto nel mio caso? Oppure solo un paio di funzioni possono trarne vantaggio.

    
posta Ehouarn Perret 30.09.2015 - 04:50
fonte

1 risposta

1

Stiamo lavorando sulla stessa architettura con approcci diversi. Attualmente stiamo lavorando con gli approcci plug-in con EF perché quando parliamo di Licensing e Reporting dovrebbe essere una necessità o un requisito del cliente, ad esempio attualmente alcuni clienti necessitano di alcune funzionalità di base basate sulle licenze e alcune richiedono funzionalità e personalizzazioni aggiuntive report di base quindi ogni volta che non è necessario creare l'intero progetto e aggiornarlo o caricarlo sul server.     L'architettura basata su plug-in funziona bene quando alcuni clienti esistenti desiderano nuove funzionalità per poterli sviluppare, caricare e collegare, quindi non è necessario impostare per ogni cliente Spero che questo ti possa aiutare. Grazie

    
risposta data 30.09.2015 - 07:41
fonte

Leggi altre domande sui tag