2009-05-06 7 views
0

Ich arbeite an Java-basierter Server-Software, die für einige, aber große Kunden angepasst werden muss. Für jeden Kunden wird eine separate Instanz des Servers ausgeführt.Best Practices für die Entwicklung von maßgeschneiderter B2B-Java-Software?

Jeder Kunde hat ausreichend unterschiedliche Anforderungen, so dass für jede Implementierung unterschiedliche Geschäftslogiken erforderlich sind.

Zu diesem Zeitpunkt wird die unterschiedliche Geschäftslogik behandelt, indem separate Business-Logik-Klassen geschrieben werden und die "Core" -Klassen die entsprechende Klasse abhängig von der Einstellung in einer Eigenschaftendatei aufrufen.

Ich würde gerne wissen, wie Sie Ihre Software für die Bedürfnisse einiger (aber sehr wichtiger) Geschäftskunden entwickelt haben?

Hinweis: Wir können Reflektion aufgrund von Verschleierungsanforderungen nicht verwenden.

Antwort

2

Sie sollten ernsthaft überlegen, ob es dort eine domain-specific language gibt.

DSLs sind eine große Sache in Ruby, aber es gibt keinen Grund, warum man keinen in Java machen kann, oder eine Sammlung von Klassen mit einer ausreichend "fließenden" Schnittstelle zu erstellen, um denselben Zweck zu erfüllen.

Idealerweise wäre die Schreibweise einfach genug, dass Ihre Kunden ihre Geschäftsregeln als implementierte im DSL lesen und verifizieren können; Das gibt Ihnen die beste Hebelwirkung, um Regeln richtig zu machen.

Das Implementieren von eins impliziert wahrscheinlich die Anwendung der Command und Template Method Muster.

Siehe auch Martin Fowlers site. Hier ist eine interesting paper zum Aufbau von DSLs in Java.

+0

Was meinst du mit domänenspezifischen Sprache? –

+0

@Jin, tut mir leid, ich habe einen Entwurf gespeichert, bevor ich angefangen habe, Links hinzuzufügen. Jetzt gibt es noch mehr. –

0

Wir verwenden SOA (Service Oriented Architecture) - der korrekte Dienst wird mit der richtigen Geschäftslogik aufgerufen, die je nach Client aufgerufen wird. Die Standorte dieser Dienste sind über die Datenbank konfigurierbar.

0

Ich würde stark auf eine Regel-Engine (wie Drools - obwohl Leistung kann ein Problem sein, was Sie wählen, so sollten Sie die kommerziellen Alternativen auch betrachten). Solche Kunden neigen dazu, die Konfigurationsmöglichkeiten zu mögen, die eine Regel-Engine darstellt, anstatt zu spüren, dass sie zu den Entwicklern zurückkehren müssen, um die Geschäftslogik anzupassen.

0

Spring ist ein sehr nützliches Werkzeug für die Dependency-Injektion; Sie könnten es in Ihren Bedürfnissen nützlich finden. Mit Spring können Sie die Geschäftsobjekte für jede Ihrer Kundenimplementierungen ersetzen und gleichzeitig ein gemeinsames Anwendungsframework beibehalten. Sehr hilfreich.