Domanda

Ho un " bianco etichettato " applicazione che è installato su più clienti server. In un dato di installazione delle differenze includeranno contenuti, lenzuola e grafica in stile, ma anche un po 'la logica del codice / business attuale. Voglio che il mio server di TFS per costruire automaticamente tutti i sapori della mia applicazione. Quali sono le opzioni per fare questo? per esempio. Dovrei usare temi? Che dire #if bandiere di compilazione condizionale.

P.S. La questione non è su come configurare il server di creazione -. Ho fatto che già

È stato utile?

Soluzione

Per la logica di business avrei estratto le differenze in una librerie separate, e quindi è possibile utilizzare un modello o fornitore di modello IOC / DI per risolvere la logica di business corrette in fase di esecuzione.

Per quanto riguarda il contenuto Vorrei guardare in temi. In sostanza si potrebbe avere il build server costruire tutto il codice una volta, poi, quando si comprime il codice di scegliere quale assemblee è necessario e utilizzare la configurazione appropriata, e scegliere la cartella del tema appropriata per il cliente a portata di mano.

Non mi piace usare # direttive in questo caso. Se ci pensate bene il test di unità avrebbe dovuto correre per ogni condizione che avete. Se si rimuovono i condizionali e astratti le differenze il test di unità può solo essere eseguito su tutte le assemblee inseribili in una sola volta.

Altri suggerimenti

  1. Content / immagine - si può fare il vostro proprio interno HtmlHelper / UrlHelper fare Html \ Url.Content () per pick-up giusti cose per clienti giusti, oltre alla copia necessari i file da cartelle di destra (che è semplice, / Content + / ContentCustomer1, 2, ...).
  2. Non c'è una risposta univoca, suppongo. Una risposta semplice sarebbe quella di spostare il metodo Order.Calculate () per una classe parziale, in modo da avere
    • OrderPartsForCustomer1.cs
    • OrderPartsForCustomer2.cs

dove avrete

public partial class Order
{
   public Money Calculate()
   {
   }
}

Ti basta includere classi Cs necessari allora, e non ingombrare il codice con #ifs.

Se si desidera codice comune per tutti, e le sostituzioni solo per clienti specifici, si può avere OrderPartsCommon.cs, che si copiare / utilizzare se non c'è specifica per il cliente overide.

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