Frage

Ich habe ein "weiß beschriftet"Anwendung, die auf den Servern mehrerer Kunden installiert wird. Bei einer bestimmten Installation umfassen die Unterschiede Inhalte, Stilblätter und Grafiken, aber auch einige tatsächliche Code- / Geschäftslogik. Ich möchte, dass mein TFS -Server alle Geschmacksrichtungen meiner Anwendung automatisch erstellt. Meine Optionen, um dies zu tun? ZB SOLLTE ich Themen verwenden? Was ist mit #if bedingten Kompilierungsflags.

PS In der Frage geht es nicht darum, wie der Build -Server eingerichtet wird - das habe ich bereits getan.

War es hilfreich?

Lösung

Für die Geschäftslogik würde ich die Unterschiede in separate Bibliotheken abstrahieren, und dann können Sie ein IOC / DI -Muster oder ein Anbietermuster verwenden, um die richtige Geschäftslogik zur Laufzeit zu beheben.

Was den Inhalt angeht, würde ich mich mit Themen befassen. Im Wesentlichen können Sie Ihren Build -Server einmal erstellen lassen. Wenn Sie den Code verpacken, wählen Sie aus, welche Baugruppen Sie benötigen, und verwenden Sie die entsprechende Konfiguration, und wählen Sie den angemessenen Themenordner für den jeweiligen Client aus.

Ich mag es nicht, in diesem Fall # Richtlinien zu verwenden. Wenn Sie darüber nachdenken, müssten Ihre Unit -Tests für jede bedingte, die Sie haben. Wenn Sie die Bedingungen entfernen und die Unterschiede abstrahieren, können Ihre Unit -Tests einfach auf allen steckbaren Baugruppen gleichzeitig ausgeführt werden.

Andere Tipps

  1. Inhalt /Image - Sie können Ihre eigene HTMLHelper /urlhelper -Erweiterung erstellen, um html url.content () zu tun, um die richtigen Dinge für richtige Kunden zu erhalten, und zusätzlich zum Kopieren der erforderlichen Dateien aus den richtigen Ordnern (was einfach ist, /content + /contentCustomer1, 2, ...).
  2. Es gibt keine einzige Antwort, nehme ich an. Eine einfache Antwort wäre, Ihre Bestellung zu verschieben.
    • OrderPartsforCustomer1.cs
    • OrderPartsforCustomer2.cs

wo du hast

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

Sie werden dann nur den benötigten .cs -Kurse angeben und Ihren Code nicht mit #IFs überladen.

Wenn Sie einen gemeinsamen Code für alle wünschen und nur für bestimmte Kunden überschreiben, können Sie orderPartScommon.cs haben, die Sie kopieren/verwenden, wenn keine kundenspezifische Übergabe vorliegt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top