Just Released: Thinktecture.DataObjectModel
Bei der Entwicklung verteilter Anwendungen steht man als Entwickler häufig zwischen den Stühlen. Denn je nach Schicht ist man mit teilweise gegenläufige Anforderungen konfrontiert. Dies betrifft vor allem das Domänenmodell:
Daher habe ich in den letzten Monaten an einem Framework gearbeitet, das diesen Missstand beheben soll: Das Thinktecture.DataObjectModel steht nun in einer ersten Betaversion auf CodePlex zu Verfügung.
Die wichtigsten Features:
Weitere Informationen finden Sie auf http://dataobjectmodel.codeplex.com. Hier gibt’s nicht nur die Sourcen, sondern auch einige Beispiele für Windows Forms und WPF.
Darüber hinaus erscheint in den nächsten Monaten eine vierteilige Artikelserie in der dotnetpro, in der ich das Framework detailliert beschreiben werde.
Falls Sie Fragen oder Anregungen haben, geben Sie Feedback über das Forum der Codeplex-Seite oder per Mail (joerg neumann at thinktecture de)!
- Aus Sicht der Middle Tier sollten Datenklassen dem POCO- bzw. DTO-Ansatz folgen, um eine möglichst hohe Interoperabilität zu gewährleisten.
- Die Datenbankseite interessiert sich hingegen in erster Linie für die Originalwerte der geänderten Objekte, um die Datenkonsistenz bei parallelen Zugriffen gewährleisten zu können. Zudem ist auch Transaktionsunterstützung von Vorteil.
- Auf Clientseite sollen die Objekte möglichst einfach gebunden werden können. Darüber hinaus müssen Änderungen verfolgt werden können, um eine spätere Aktualisierung zu gewährleisten. Der Anwender freut sich hingegen über Inline-Validierung und Undo/Redo-Support. Auch das dynamische Erstellten von Sortier- und Filterregeln zur Laufzeit ist sehr beliebt.
Daher habe ich in den letzten Monaten an einem Framework gearbeitet, das diesen Missstand beheben soll: Das Thinktecture.DataObjectModel steht nun in einer ersten Betaversion auf CodePlex zu Verfügung.
Die wichtigsten Features:
- Support für Data Binding
(inkl. Validierung, Change Tracking und Undo/Redo-Support) - Dynamische Attributierung von Properties
(DisplayName, ReadOnly, Browsable, Ordinal, …) - Implementierung von Views
(inkl. Sortieren, Filtern, Computed Columns, etc.) - Automatische Speicherung von Originalwerten für die Behandlung von Konkurrenzsituationen auf Datenbankseite.
- Übertragen von Objekten, inkl. Änderungen an WCF-Services
- Unterstützung von System.Transactions. So können alle Objekte automatisch an lokalen oder verteilten Transaktionen teilnehmen.
- …
Weitere Informationen finden Sie auf http://dataobjectmodel.codeplex.com. Hier gibt’s nicht nur die Sourcen, sondern auch einige Beispiele für Windows Forms und WPF.
Darüber hinaus erscheint in den nächsten Monaten eine vierteilige Artikelserie in der dotnetpro, in der ich das Framework detailliert beschreiben werde.
Falls Sie Fragen oder Anregungen haben, geben Sie Feedback über das Forum der Codeplex-Seite oder per Mail (joerg neumann at thinktecture de)!
Labels: TT.DOM
4 Comments:
IEditableObject, INotifyPropertyChange/d
Ich beschäftige mich gerade mit APO. Beim durchlesen Ihre Implementierung kamm mir die Idee, das dies doch ein schönes Beispiel für den Einstatz von APO ist.
* Mit dem APO Framwork PostSharp (Post compiler) würde zumdem die Erstellung von Proxies zur Laufzeit entfallen
* Via "Code weaving" würde keine Klasse aus einem gegebenen Namensraum vergessen werden.
By Unknown, at März 13, 2010 3:22 PM
Ich denke, es ist einfach zu viel Funktionalität für Post Compiling. Darüber hinaus finde ich es nicht sinnvoll in jedem Typ redundanten Code hinein zu kompilieren. Post Compiling würde ich eher für einfache Sachen, wie die Implementierung von INofifyPropertyChanged und co. verwenden.
By Jörg Neumann, at März 15, 2010 8:41 AM
Ein T4 Template zum erstellen von Entity Framework Datenklassen die von EntityObject erben und die Funktionalität bereits implementieren wäre hiflreich.
By Marcel, at September 23, 2010 11:18 PM
Das ist schwierig, da die Funktionalität in der Basisklasse DataObject steckt. Wenn Du von EntityObject ableiten willst, kannst Du aber die Runtime Proxy-Funktionen von TT.DOM nutzen.
By Jörg Neumann, at September 27, 2010 9:52 AM
Kommentar veröffentlichen
<< Home