Come può essere gestita l'implementazione specifica del cliente?

4

Come posso gestire l'implementazione specifica del cliente. Quindi, ad esempio, un'abitudine richiede un modo diverso di mostrare dati, un modello diverso o una logica diversa.

Ho letto di HMVC ma non riesco a trovare i framework che lo supportano. Devo gestire il problema creando rami specifici per il cliente o biforcando il progetto? O non ha nulla a che fare con il controllo delle versioni?

    
posta rockson 07.03.2017 - 01:50
fonte

1 risposta

4

Non vuoi davvero rami / forchette specifici per il cliente. Molteplici branche principali sono dolorose da mantenere. In alcuni casi sono davvero necessari - ad esempio, quando si tenta di stabilizzare una versione o di supportare una versione precedente - ma in questi casi di solito ce ne sono pochi e il problema di cosa-per-spingere dove è qualcosa devono risolvere a prescindere. Qui stiamo parlando di branch-per-customer, che dovrai mantenere fintanto che mantieni il cliente, e unisci ogni nuova caratteristica in ognuno di questi rami - possibilmente con diversi conflitti per lo stesso commit ...

Per prima cosa suggerirei di ripensare al problema - hai davvero bisogno di funzionalità specifiche per il cliente? Certo, alcuni clienti sono grandi e / o abbastanza importanti da richiedere funzionalità e hai investito tempo e denaro per svilupparli - ma questi clienti non possiedono il copyright per queste funzionalità, e dovrai testarli, documentarli e mantenerli comunque - quindi perché non solo rendere queste funzionalità parte del prodotto? I tuoi altri clienti trarranno vantaggio dall'avere queste funzionalità e trarrai vantaggio dal non dover mantenere così tanti rami principali.

Se, per qualsiasi motivo, non puoi davvero o non vuoi spedire queste funzionalità a clienti diversi da quelli che le hanno richieste, considera un'architettura di plugin. I modi comuni sono di ospitare un motore di linguaggio di scripting o di fornire un'API e di eseguire i plug-in come processi esterni. Il codice specifico del cliente sarà un plug-in, sviluppato e posseduto da te o dal cliente (pro - ti daranno meno fastidio sul tweaking del plug-in, con - inizieranno a preoccuparti per il supporto dell'architettura dei plugin). Il plugin avrà la propria base di codice, separata dal progetto principale, quindi fintanto che presti attenzione alla compatibilità con le versioni precedenti nel tuo meccanismo di plugin, i plug-in non dovrebbero essere troppo difficili da mantenere.

Tieni presente che i plug-in sono limitati dall'architettura del plug-in, ma anche se non puoi inserire una funzione nel progetto principale, di solito puoi inserire le modifiche API dell'amplificatore minimo richieste per implementarlo come plug-in.

    
risposta data 07.03.2017 - 02:48
fonte

Leggi altre domande sui tag