Hey
Wo definiert ihr eigentlich eure Business-Objekte? Das Problem ist ja, dass diese jeweils in allen Tiers zugänglich sein müssten (Speichern eines Autos, Anzeigen eines Autos usw.).
Ich hab das bis jetzt jeweils so gelöst, dass ich eine separate "Schicht" mit den Business-Objekten erstellt habe, die quasi neben allen anderen verläuft und so von allen Schichten her zugänglich ist.
Wie macht ihr das?
Lg
Dani
Eigentlich genau so. Und so wie es eigentlich auch sein sollte.
Habe immer mehrere Schichten.
Also klassische 3-Tier Anwendungen...
Mal nach Smalltalk verschieben?
"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)
ja... nur wo bringst du deine Businessobjekte unter?
Wenns in der Logikschicht ist, hat ja zB. die Datenschicht keinen Zugriff darauf...
Die Businessobjekte liegen in der Datenschicht
"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)
Original von Khalid
Die Businessobjekte liegen in der Datenschicht
Ja?
Das bedeutet aber wiederum, dass die Präsentationsschicht direkt mit der Datenzugriffsschicht verbunden ist...
Ausserdem finde ich auch, dass Business-Objekte eigentlich da nichts zu suchen haben, da sie herzhaft wenig mit Datenzugriff zu tun haben... oder seh ich das falsch?
habt ihr mal ein praktisches beispiel (code?) für sowas?
weil ich weiß immer nie wer da nun wie und w elche sicht auf wen hat o.O
@dani.net
Kann sein, das ich mich da etwas durcheinander gebracht habe. Ist noch früh am morgen 🙂.
Bin selber gerade über meine eigenen Bezeichnungen gestolpert. Bei mir Kennzeichne ich meine Tabellen (also die Datenschichtbeschreibungen) immer als Businessobjekt und in der Businesschicht als Logikobjekte (weil ich die Schicht irgendwie immer Logikschicht nenne). Muss ich dringend mal ändern =).
Im Prinzip meinen mir das gleiche denk ich mal.
Und nein, du siehst nichts falsch. Wie gesagt, bin über meine eigenen Bezeichnungen gestolpert.
Das bedeutet aber wiederum, dass die Präsentationsschicht direkt mit der Datenzugriffsschicht verbunden ist...
In bestimmten Fällen habe ich das leider so. Ist falsch, blöd, soll man nicht machen (bitte nicht steinigen).
"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)
Original von Khalid
Bin selber gerade über meine eigenen Bezeichnungen gestolpert. Bei mir Kennzeichne ich meine Tabellen (also die Datenschichtbeschreibungen) immer als Businessobjekt und in der Businesschicht als Logikobjekte (weil ich die Schicht irgendwie immer Logikschicht nenne).
mh, also Logikobjekte bei dir würden dann den eigentlichen Businessobjekten entsprechen? Diese sind in der Logik-Schicht definiert? Und wie übergibst du diese an die Datenzugriffsschicht?
Hallo dani.net,
Und wie übergibst du diese an die Datenzugriffsschicht?
gar nicht, die Datenzugriffsschicht (DAL) kann z.B. DataSets zurückliefern, aus denen die Business-Schicht (BL) dann Business-Objekte (BO) erzeugt. Dann müssen die BO nur in der BL bekannt sein. Und so soll es ja sein.
herbivore
Original von herbivore
gar nicht, die Datenzugriffsschicht (DAL) kann z.B. DataSets zurückliefern, aus denen die Business-Schicht (BL) dann Business-Objekte (BO) erzeugt. Dann müssen die BO nur in der BL bekannt sein. Und so soll es ja sein.
Richtig, worauf ich mich erinnere wieso ich mir diese Überlegungen überhaupt mache. Ich muss ne kleine Applikation in Java schreiben, und da gibts halt keine DataSets....
Hallo dani.net,
nicht? Auch nichts vergleichbares? Dann musst du dir selber etwas vergleichbares schreiben. Zumindest, wenn du auf die Entkoppelung von DAL und BL Wert legst.
herbivore
Original von herbivore
nicht? Auch nichts vergleichbares?
Nichts das ich kennen würde; bei meinen Java-Kenntnissen muss das aber gar nichts bedeuten 😁
Original von herbivore
Dann musst du dir selber etwas vergleichbares schreiben. Zumindest, wenn du auf die Entkoppelung von DAL und BL Wert legst.
Ok. Da werde ich in diesem Fall wohl XmlDocuments rausreichen, da die Datenbasis eh XML ist.
Aber hat mich mal so grundlegend wunder genommen. Den Ansatz den ich beschrieben habe, also die BusinessObjekte für alle zugänglich zu machen, hat nämlich den mühsamen Beigeschmack, dass diese dann natürlich keine Logik enthalten dürfen (oder sollten), also praktisch reine Attribut-Container.
Der Ansatz von herbivore mit den DataSets ist da schöner, hat dafür den (wohl vernachlässigbaren) Nachteil vom DataSet-Overhead.
Aber hat mich mal so grundlegend wunder genommen. Den Ansatz den ich beschrieben habe, also die BusinessObjekte für alle zugänglich zu machen, hat nämlich den mühsamen Beigeschmack, dass diese dann natürlich keine Logik enthalten dürfen (oder sollten), also praktisch reine Attribut-Container.
Der Ansatz von herbivore mit den DataSets ist da schöner, hat dafür den (wohl vernachlässigbaren) Nachteil vom DataSet-Overhead.
Ähm, jetzt hast du glaub ich was mißverstanden (oder ich hab herbivore mißverstanden^^).
DataSets zu verwenden heißt nicht, dass keine BO verwendet werden - im Gegenteil.
DataSets sind die Container zwischen DB-Layer und BL (oder DataTables, oder DataAdapter o.ä.).
Die BO definieren im Endeffekt nur die Datenstrukturen und halten die Daten vor mit denen deinen BL arbeitet ... zumindest nach meinen Verständnis ...
Der Ansatz von Herbivore sieht ja vor, DataSets aus der Datenzugriffsschicht zu liefern und aus diesen dann die BO zu erzeugen, so hab ich das verstanden und so machts für mich auch Sinn.
Das was ich beschrieben war, hat die BO bereits in der Datenzugriffsschicht erstellt und dann quer durchgereicht.
Hallo ihr beide,
also ich glaube, wir sagen - mit unterschiedlichen Worten - alle drei das gleiche.
herbivore