Frage

Betrachten Sie eine vorhandene Datenzugriffs- und Geschäftslogikschicht, die von mehreren verschiedenen Anwendungen verwendet wird und die bisher nur eine einzige Datenverbindung für die Lebensdauer einer bestimmten Anwendung benötigte Ebene aus der Konfigurationsdatei der Anwendung. Wenn Sie sich jedoch vorwärts bewegen, müssen die Daten- und Logikklassen die Flexibilität für die Anwendungen bereitstellen, um die Datenverbindung auf der Basis pro Anruf zu bestimmen. Darüber hinaus werden die Klassen nun von mehreren Anwendungen simultan durch Dienste aufgerufen.

Die Anrufer möchten die Verbindungszeichenfolgen nicht speziell verwalten, sondern Verbindungsnamen in Form eines Enum, das auf Verbindungszeichenfolgen in und nach der Datenschicht behoben werden kann.

Derzeit sind alle Daten- und Logikklassen statisch, wobei die Daten internen und die Logik veröffentlichen können.

Was sind einige gute Strategien, um einen Schlüssel vom Anrufer bis hin zu den Methoden in den Datenklassen zu erhalten, unter Berücksichtigung von Dingen wie API -Useabilität, Leistung, Gewindesicherheit / Anrufer -Isolation usw.

Zwei offensichtliche Optionen sind:

  1. Fügen Sie alle Methoden den Verbindungsschlüssel als Parameter hinzu. Yuck - wird nicht passieren, sondern für Vollständigkeit.

  2. Ändern Sie die Logik- und Datenklassen in Instanzklassen und übergeben Sie den Schlüssel in den Konstruktoren, damit jede Mitgliedermethode verwendet wird. Es würde keine Veränderungen der Methodensignatur geben, aber eine wesentlich brichtliche Änderung des Aufrufens der API.

Welche anderen Optionen gibt es?

War es hilfreich?

Lösung

Leider haben Sie die beiden besten Optionen für den Umgang mit dieser Art von Problemen erreicht. #2 wird durch die Beteiligung von Diensten etwas komplizierter gemacht, da unterschiedliche Servicemanfragen entweder eine Möglichkeit benötigen, um sich zu erinnern, welcher Kunden (wie Sitzungen) oder die Verbindungsinformationen über den Service für jeden Anruf bestehen müssen.

Ich denke, wenn Sie eine Client -Side -Wrapper -Klasse erstellen, um auf den Dienst zuzugreifen, können Sie einschränken, wie viele Kunden -Seitenwechsel Sie benötigen. Für den Dienst selbst denke ich, dass Sie jedes Mal, weil die Alternativen dort ziemlich kompliziert sind, die Verbindung als Parameter als Parameter bestehen.

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