Domanda

Sono interessato a leggere i vari modi in cui altri sviluppatori e architetti gestiscono la personalizzazione di determinate aree delle loro applicazioni per determinati siti. Chiamate a pre e post elaborazione implementate dal cliente, eventi che fanno lo stesso, consentendo di ignorare i metodi della logica di business, usando strategie con moduli collegabili, processi configurabili di dati, ad es. motori di regole, scripting, ecc.

L'elenco potrebbe continuare, ma chiedo chi ha usato cosa e quali sono i pro e i contro di ciascuno di questi approcci, nonché quali altri approcci ci sono.

Ciò presuppone che non creiamo un ramo di codice specifico del cliente per soddisfare queste personalizzazioni.

È stato utile?

Soluzione

MS sta lavorando su due diversi framework per questo in .NET: Managed Extensibility Framework e System.Addin.

Probabilmente il modo in cui le applicazioni più comunemente esposte espongono l'estendibilità è attraverso l'iniezione di dipendenza / inversione del controllo mescolata con la risoluzione del tipo di runtime. Ciò significa che si consente a un'entità esterna di "iniettare" l'implementazione di un'interfaccia in fase di esecuzione anziché l'associazione a un'implementazione specifica in fase di compilazione. Al tuo codice non importa se il tuo IRepository è stato scritto dalla tua azienda o da una terza parte. Codificando le interfacce e usando i framework DI / IOC (questo link fornisce una panoramica eccellente dei framework .NET) permetti alla tua applicazione di essere facilmente personalizzabile.

Altri suggerimenti

Tendo a costruire tutto modulare e quindi aggiungere cose al programma come richiesto dal cliente. È possibile combinare questo con le impostazioni dell'applicazione che il cliente può controllare, consentendo loro di aggiungere e rimuovere moduli da soli. In tal caso, tutto ciò che dovresti fare è impostare una configurazione predefinita.

Un modo sarebbe quello di incorporare un linguaggio di scripting (python e javascript sembrano essere popolari) ed esporre blocchi significativi dell'API attraverso l'estensione di scripting. Potresti trovare più semplice implementare parti della tua applicazione anche nel linguaggio di scripting.

Per i prodotti con cui lavoro, le personalizzazioni create dal gruppo di servizi per un determinato cliente o, talvolta, dai clienti stessi, vengono condivise con il resto del team (per le cose che abbiamo fatto) e spesso ottengono " productized " nelle versioni successive.

Supportiamo un'API [quasi] ad accesso completo che può essere utilizzata per fare [quasi] qualsiasi cosa che le GUI possano fare, ma in modo automatizzato.

Incoraggiamo i clienti a scrivere script personalizzati e poi condividerli con noi. La crescita degli usi disponibili di un prodotto attraverso le estensioni, indipendentemente dal fatto che siano supportati ufficialmente o rimangano strumenti della community, aiuta a generare buona volontà tra la tua base di clienti.

Per le personalizzazioni che realizziamo, il lavoro iniziale, mentre viene fatturato a un cliente specifico, può quindi essere implementato rapidamente altrove, consentendo agli utenti attuali e futuri di offrire maggiore flessibilità durante l'utilizzo del prodotto.

Ho scoperto che la creazione della tua app come libreria di moduli accessibile da un buon linguaggio di scripting incorporato ( Lua era creato esattamente per questo!) ti offre moltissima flessibilità, non solo per gli utenti; ma anche per te.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top