Es würde eine Anwendung geben, die 3 wichtige Dinge tun wird. A
, B
und C
. Es wird eine C# winforms-Anwendung sein.Entwerfen Sie eine Suite von Produkten beim Erstellen/Pflegen nur einer
Unser CEO möchte, dass diese Anwendung in 6 verschiedene Produkte unterteilt wird.
- Just A (Simple)
- A + B (Fortgeschritten)
- A + B + C (Ultimate)
und das alles für einen Benutzer oder mehrere Benutzer (Lizenzierung). So haben wir jetzt 6 Projekte!
Wenn wir annehmen, dass die drei Hauptteile tatsächlich getrennt sind und eigenständig arbeiten können, wie können wir ein Projekt aufrechterhalten und 6 verkaufen?
Im Moment gibt es drei Möglichkeiten, dies zu erreichen, die mir in den Sinn kommen:
A: eine grundlegende Rückgrat haben und als Modul jedes der A, B, C zu bauen. Auf diese Weise müssen wir uns nur mit dem Problem "Eine/viele Benutzer" auseinandersetzen.
B: Erstellen Sie ein solides Produkt, und verwenden Sie Präprozessordirektiven, um die Funktionalität zum Zeitpunkt der Kompilierung festzulegen. Das ist wirklich schwierig und macht Code hässlich. Auch könnte das Projekt brechen.
C: Erstellen Sie einen Versionsmechanismus, der so eingestellt wird, dass bestimmte Funktionen über die Anwendung zulässig sind. Dies ist am einfachsten, hat aber zwei Nachteile. Es ist leicht zu knacken und wir liefern die Ultimate-Version für einen einfachen Benutzer, was schlecht ist.
Ähnlich hierzu ist die Windows-Versionsverwaltung Ausgabe (Heim, Basic, Pro, Ultimate)
Wie sollen wir dieses Projekt entwerfen?