DAL / BLL und Client / Server: Sollte der Kunde Verwendung BLL oder DAL-Objekte für die Präsentation? Oder vielleicht eine andere Schicht (Datentransferobjekt?)

StackOverflow https://stackoverflow.com/questions/3678824

Frage

Ich schreibe eine Client / Server-System. Der Server verfügt über ein DAL / BLL-Design. Der Kunde ist verantwortlich für die Datenobjekte zu präsentieren und Dialoge Bereitstellung und Assistenten dem Benutzer zu ermöglichen, diese Objekte zu aktualisieren (das heißt das Hinzufügen / Bearbeiten eines Benutzers).

Am Anfang dachte ich, ich werde nur die DAL Objekte mache ein universelles Datenprovider-Objekt haben, so dass sie vom Kunden verwendet werden, sowie der Server. Zum Beispiel, wenn das Datenobjekt vom Server verwendet wird, ist die Datenbank der Datenanbieter; wenn das Datenobjekt wird vom Client verwendet wird, ist der Server die Datenanbieter.

So ein Objekt in der Präsentationsschicht verändert wird, zum Beispiel ein „user“: user-> setName ( „Fred“) und verpflichtet sich dann, wie diese vom Benutzer> commit (), die commit-Methode der Datenanbieters aufruft Commit-Methode, die dann das Objekt codiert und sendet sie an den Server. Der Server „verziert“ mit dem Business-Schicht-Objekt und führt von dort aus.

Im Moment habe ich diese Arbeit als Prototyp, mit der DAL in einem gemeinsamen Projekt definiert Objekte, die sowohl vom Client und der Server verwendet werden. Der Server dann spritzt es Datenprovider (die die Datenbank verwendet) und das Client-einspritzt eines Datenprovider, verwendet der Server.

Ich frage mich, ob dies wie ein vernünftiger Ansatz zu sein scheint? Ich halte mich gefragt, ob ich eine andere Schicht eher brauchen als die DAL-Objekte, die direkt an den Kunden ausgesetzt. Vielleicht ein Datentransfer Objektschicht, die mir geben würde, 3 Schichten:. Der Datenzugriff Objekte, Business-Logik-Objekte und Datentransferobjekte

Danke.

War es hilfreich?

Lösung

Es ist keine gute Idee, Aussetzen ‚innere Objekte‘ wie Objekte verwendet / zurückgegeben die DAL kaufen. Besser hält alle inneren Objekte vom Client versteckt und haben einen kompletten Satz von Objekten für die Client-Server-Kommunikation. Es könnte einige zusätzliche Arbeit Konvertieren einem Objekt zum anderen sein, sondern das System viel einfacher für den Fall, Server- und Client-Upgrade nicht zusammen machen zu aktualisieren.

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