Laden...

Persitente Objekte vs. DataSet

Erstellt von the_lmich vor 18 Jahren Letzter Beitrag vor 18 Jahren 2.061 Views
the_lmich Themenstarter:in
248 Beiträge seit 2005
vor 18 Jahren
Persitente Objekte vs. DataSet

Guten Tag allerseits,

folgendes Architekturproblem lässt mich nicht los:

Ich habe eine 3-tier Applikation, die an eine relationale DB gebunden wird. In der Controllerkomponente gibt es im Klassendiagramm etliche Entitätsklassen in denen ich meine Daten halte.
Bei benötigten Zugriff lesse ich die Werte aus den Tabellen aus und lege meine Entityobjekte an. Zur Persitenz derer läuft der Vorgang dementsprechend rückwärts.

Jetzt gibt es ja noch das DataSet zur offline Datenhaltung und praktischen Datenbindung. Sehr schön. Leider weiß ich nicht wie ich das nun in meine Applikationsarchitektur einbauen soll. Wenn ich das DS benutze geht ja die OOP irgendwie flöten, da ich ja alles in einem DS-Objekt habe.

Wie löst ihr solche Probleme?

Bin für wirklich jede Antwort dankbar.

Viele Grüße
Torsten

S
8.746 Beiträge seit 2005
vor 18 Jahren

Ich denke, wenn deine Collection-Objekte die entsprechenden Interfaces (IBindingList glaub ich) für die Datenbindung implementieren, sollte es gehen.

the_lmich Themenstarter:in
248 Beiträge seit 2005
vor 18 Jahren

Das ist ja schonmal eine sehr gute Idee! Daran hatte ich aber gar nicht gedacht.

Mir ging es mehr um die Frage ob ich an einer sinnvollen Architektur "vorbei designe" - wenn ich das DataSet aussen vor lasse.

Grüße
Torsten

S
8.746 Beiträge seit 2005
vor 18 Jahren

Schau dir mal NHibernate an. Die Implementieren auch DataBinding für ihre Collections. Vielleicht kannst du dir da was abschauen (oder es gleich verwenden).

the_lmich Themenstarter:in
248 Beiträge seit 2005
vor 18 Jahren

Saugeil .. klingt interessant! Danke. Habe mich nie um Hibernate gekümmert, aber jetzt weiß ich was das ist.

Aber nochmal zu meiner Frage nerv .. wenn ich das DataSet weglasse bekomme ich als .Net'ter keine Designfehler vorgeworfen, oder? 🙂

Grüße
Torsten

S
8.746 Beiträge seit 2005
vor 18 Jahren

Nö, das DataBinding setzt ja nicht ohne Grund nicht direkt auf dem DataSet, sondern auf Interfaces auf. Insofen hat MS bereits vorgesehen, dass man auch Objekt-Collections verwenden kann. Kann da keine "Verletzung" erkenne.

MS hat mit ADO.NET nur eines der drei Patterns für die Geschäftslogik (gemäß Fowler), nämlich "Table Module" implementiert. Der "Domain Model"-Ansatz (= objektorientiert), den man via OO-Dbs, O/R-Mapping oder Prävalenz erreichen kann, fehlt - dank zurückgestelltem ObjectSpaces - ja völlig.

the_lmich Themenstarter:in
248 Beiträge seit 2005
vor 18 Jahren

Ich konvergiere grade gegen 0 ... 🤔

Ist "Domain-Model" dann kein .NET geeigneter Ansatz? Meinst Du "dank" zurückgestelltem ObjectSpaces vielleicht ironisch?

Wie auch immer .. NHibernate scheint sehr geeignet für meinen Architektur und das DataSet fliegt raus.

Danke nochmal ..

Viele Grüße
Torsten

S
8.746 Beiträge seit 2005
vor 18 Jahren

Original von the_lmich
Ich konvergiere grade gegen 0 ... 🤔

Ist "Domain-Model" dann kein .NET geeigneter Ansatz? Meinst Du "dank" zurückgestelltem ObjectSpaces vielleicht ironisch?

Ja. 🙂

MS hatte ja ObjectSpaces versprochen, konnte das Versprechen aber nicht halten. Nun muss man eben auf Sachen wie NHibernate oder gleich auf OO-Dbs ausweichen. Schade, aber vielleicht auch gut so, Wettbewerb belebt das Geschäft und O/R-Lösungen gibt es ja nun zuhauf. Mit NHibernate sogar Freeware und ziemlich mächtig.

OO-basierter Datenzugriff ist im Vergleich zu relationalen Lösungen meiner Erfahrung nach in den meisten Anwendungsszenarien dem klassisch relationalen Ansatz überlegen. Das gilt auch für .NET.

Wie auch immer .. NHibernate scheint sehr geeignet für meinen Architektur und das DataSet fliegt raus.

Gute Wahl denke ich. Das Ding ist ausgereift.