Bevor ich meine "allgemeine" Frage stellen, wollte ich einige Anführungszeichen zu meinem allgemeinen Verständnis der Geschäftsdelegierten Muster zu präsentieren:Generell auf große J2EE-Web-Anwendung, klar Anwendung durch Module zu trennen. Mögliche Verwendung von Geschäftsdelegierten Muster
"Sie möchten Clients von der Komplexität der ausblenden Remote-Kommunikation mit Business-Service-Komponenten. "
"Sie möchten auf die Business-Tier-Komponenten von Ihren Präsentationsschicht-Komponenten und -Clients wie Geräten, Web-Services und Rich-Clients zugreifen."
Nehmen wir an, Sie haben eine große J2EE-Webanwendung. Wenn ich groß meine, meine ich, dass die Anwendung seit mehreren Jahren und von vielen verschiedenen Personen und Abteilungen entwickelt wurde. Das System wurde nicht gut für das Wachstum entwickelt. Nehmen wir an, die Anwendung ist jetzt mit einer Webanwendung konfiguriert.
Es wäre großartig gewesen, wenn die Anwendung modularer wäre. Aber es ist nicht. Ein Code oder eine Bibliothek kann das gesamte System zum Absturz bringen. Testing und andere Mittel werden verwendet, um dies zu verhindern, aber im Idealfall ist dies nur eine monolithische Webanwendung.
Hier ist meine Frage; Wie vermeidet man normalerweise diese Art von Design mit J2EE-Apps, wo die Anwendung wächst und wächst und eine separate Anwendung alles zusammenbringt.
Ich bin nicht vertraut EJBs und planen nicht, sie für etwas zu ernst zu verwenden. Aber das Konzept des Business Delegate und Service Locator Pattern scheint gut zu passen.
Nehmen wir an, Sie haben einen Einkaufswagen-Bildschirm (gleiche Web-App) und eine Reihe von Bildschirmen zum Verwalten eines Benutzerkontos (gleiche Web-App). In Ihrem Web-Tier (irgendeine Art von MVC-Aktionsmethode) scheint es, dass Sie einen Locator haben könnten, der die geschäftsspezifische Schnittstelle bekommt, diese Interfaces pro Modul aufruft und wenn etwas mit dem Modul schief geht, dann tötet es keinen anderen Code . Nehmen wir an, das Warenkorbmodul schlägt fehl (aus welchen Gründen auch immer), der Benutzerkontenbildschirm funktioniert immer noch.
Was passiert, wenn ein Code das gesamte System zum Absturz bringt? Stürzen Sie Ihre Datenbank ab, da nicht genügend Arbeitsspeicher zur Verfügung steht und die gemeinsamen Daten beschädigt werden? – Ichorus