2009-08-07 5 views
4

Kürzlich habe ich darüber diskutiert, wie man die Kommunikation in der n-Tier-Architektur am besten bewältigen kann.Wie sollte die Kommunikation n-Tier-Anwendungen zwischen Schichten erfolgen?

Gegenwärtig werfen die Methoden, die ich mache, Ausnahmen zwischen den Ebenen für Fehler und verwendet Ereignisse/Delegaten für andere Kommunikation (um Fortschrittsbalken und ähnliches zu aktualisieren). Sind das die besten Methoden oder gibt es eine andere Methode, die ich übersehen habe und die als bessere Praxis angesehen wird?

+1

Klären Sie, was Sie mit n-Tier meinen. Nach meiner Definition können Ausnahmen nicht nach oben oder nach unten gehen, da sie (möglicherweise) auf verschiedenen Computern ausgeführt werden und Sie eine Art von Netzwerkschicht benötigen, um mit dieser Kommunikation umzugehen. In diesem Fall würde ich Antworten wie RPC dafür, Nachrichtenwarteschlangen dafür und UDP für diese und solche erwarten. Etc. – jmucchiello

Antwort

1

Ausnahmen sind in der Tat ein guter Weg, Fehler von niedrigeren Ebenen zu behandeln.

In meinen Augen sind Delegierten am nützlichsten, wenn ein Objekt, das ein anderes Objekt besitzt, dieses Objekt anpassen muss. Das könnte sinnvoll sein, wenn Ihre Ebenen die Objekte auf niedrigeren Ebenen logisch "besitzen" - sonst würde ich wahrscheinlich das Delegiertenmuster meiden und Ereignisse verwenden.

1

Ich würde sagen, Sie sind auf dem richtigen Weg, soweit die Ausnahmebehandlung durchgeführt wird - das ist die Chain of Responsibility Pattern-Implementierung. Es ist immer gut, die Ausnahme in die Kette zu werfen. Was den anderen (Ereignisse/Delegierte) angeht, habe ich Ihre Aussage nicht verstanden, also konnte ich dazu nichts sagen.

1

Ich habe versucht, das Adaptermuster zu verwenden. Die Hauptobjekte liegen in der Logikschicht und werden unter Verwendung von zusammengesetzten Objekten umgebrochen, so dass die Präsentations- und Datenzugriffsebenen funktionieren können. Die meisten Präsentations- und Datenzugriffsschichtklassen verwenden Schnittstellen. Die Wrapper (Composite) -Objekte liegen in den Präsentations- und Datenzugriffsschichten und implementieren die Schnittstellen dieser Ebenen.

Zusätzlich zu den zusammengesetzten Objekten gibt es Controller-Objekte, die Daten von den Logikobjekten ziehen und neue Objekte (dh eine Liste von Strings) erstellen können.