no. ds3, dc4, na11 e-mail [email protected] datasets und objektmodelle wo sind sie geblieben...?
TRANSCRIPT
![Page 2: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/2.jpg)
Marcel Gnoth, www.gnoth.net
Zur PersonDipl. Inf. Marcel Gnoth, MCSD
www.gnoth.net Code und Powerpoint auf der Webseite
NTeam GmbH, Berlinwww.nteam.de IT – Infrastruktur, BI, Entwicklung
Senior Consultant, Trainer, Programmierer
Autor dotnet magazin und dotnetproVB6, COM, DatenbankenVerteilte InformationssystemeUnd ....
.Net
![Page 3: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/3.jpg)
Marcel Gnoth, www.gnoth.net
Agenda
Teil 1 Einordnen der Datasets
Teil 2Einige praktische Betrachtungen
![Page 4: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/4.jpg)
Teil 1
Das Dataset sucht seinen Platz
![Page 5: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/5.jpg)
Marcel Gnoth, www.gnoth.net
Physische ArchitekturenTier -> Schichtdie gute alte Zeit ...Client / Server3 – Tier und jetzt noch der
WebserverZugriff auf externe
Systeme
Arbeitsstation Arbeitsstation
Server
Daten
Arbeitsstation Arbeitsstation
Daten
Arbeitsstation Arbeitsstation
Webserver
Daten
Geschäftskomponenten
![Page 6: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/6.jpg)
Marcel Gnoth, www.gnoth.net
Semantisch Architekturen
Fat ClientsAufteilung in Dienste vertikaler Zugriff -> LayerAufteilung in Komponenten,
Kapselung von FunktionalitätAufteilung:
GUIObjekte (Business Logic)Datenbank
COM
Windows Form
COM
COM
Daten
![Page 7: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/7.jpg)
Marcel Gnoth, www.gnoth.net
Die Geschäfts Logik
Objektmodell EigenschaftenMethoden
Dann kam MTS / COM+statuslose Objekte keine Eigenschaften, nur Methoden
![Page 8: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/8.jpg)
Marcel Gnoth, www.gnoth.net
Was ist schlecht an Status...... in der Mittelschicht ??wenn viele Clients Bindung von Ressourcen auf dem
Server zwischen den Methodenaufrufen ThreadsSpeicherServerfarmen werden schwierig, Server
muß Status des Client wieder finden
![Page 9: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/9.jpg)
Marcel Gnoth, www.gnoth.net
Vier Layer / drei TierTrennung von Bearbeitung
und DarstellungUserAgent in eigene DllObjekte haben Status
Komponenten: .Net EnterpriseServices oder Webservicesmöglichst kein Status,
schlecht für SkalierbarkeitTiers können auf dem selben
Computer laufen
WebserviceCOM+
Data
User Agent
Windows Form
![Page 10: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/10.jpg)
Marcel Gnoth, www.gnoth.net
Modell / View / Controller
altes Design PatternDaten mit denen etwas gemacht wird
passiv, überwiegend EigenschaftenVerschiedene Ansichten auf Daten
(View)Winword (Normal, Seite, Gliederung)Powerpoint
Controllertut etwas mit den Daten überwiegend Methodenkein Status
![Page 11: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/11.jpg)
Marcel Gnoth, www.gnoth.net
Realisierung des MVC-Pattern
Business Logic
Data
Windows Form
User Agent
View
Modell
Contr.
![Page 12: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/12.jpg)
Marcel Gnoth, www.gnoth.net
Warum Controller aufgeteiltUserAgent besorgt Daten für Client, hat
technischen StatusGeschäftslogik
Verarbeitet Daten und liefert ErgebnisseKommunikation mit DrittsystemenTransaktionslogikPooling von Ressourcen für viele Clients
![Page 13: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/13.jpg)
Marcel Gnoth, www.gnoth.net
Datenaustausch
Anwender möchte Daten sehen (oben)Die Daten sind in der DB gespeichert
(unten)Verarbeitung in der Mitte wie wandern die Daten??
zwischen Prozessenzwischen Computernzwischen verschiedenen SystemenSchnelligkeitInteroperabilität......
![Page 14: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/14.jpg)
Marcel Gnoth, www.gnoth.net
Datenaustausch
Kopie der Daten schicken (serialisieren)Menge von Objekten als Byte – Strom
(Byte – Array)Transport über das Netz möglich
Objektreferenzen prozeß- und computerübergreifendDCOM, CORBA, RemotingAchtung: jeder Zugriff ist teuerbei Methodenaufrufen müssen Parameter
serialisiert werden (in, ref, out)
![Page 15: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/15.jpg)
Marcel Gnoth, www.gnoth.net
Datentransport früher
ADODB Recordset (serialisierbar)war nur flache Ergebnismenge
Objekte (serialisierbare), Interface implementieren!Baum möglich
eigene Formate definierenObjekte Status in XML umwandeln und auf
der Empfängerseite zurückwandelnDaten beim Methodenaufruf übergeben
![Page 16: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/16.jpg)
Marcel Gnoth, www.gnoth.net
Die Datasets kommen
mehrere ErgebnismengenRelationen zwischen Tabellen
(Kunde->Bestellung->Detail)können um eigene Elemente erweitert
werden, erbensind das direkte Ergebnis der DB –
Abfrage direktes Binden an GUI
![Page 17: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/17.jpg)
Marcel Gnoth, www.gnoth.net
Datasets
Können Änderungen cachenÄnderungen können direkt in DB
geschrieben werdenAuf Konflikte prüfen
DataAdapter, bei mehr als einer Tabelle aufwendig
Änderungen können rückgängig gemacht werden
![Page 18: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/18.jpg)
Marcel Gnoth, www.gnoth.net
Typisierte Datasets
Erweiterung der Klasse Datasetfür jede enthaltene Tabelle werden
individuelle DataTable – Objekte und DataRow – Objekte generiert
Compiler kann Typsicherheit prüfenwerden generiertTypsicherheit wird nicht erzwungenunübersichtlich
![Page 19: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/19.jpg)
Marcel Gnoth, www.gnoth.net
In Memory DatabaseFilter mit Where KlauselSortierenErzeugen eigener Views über mehrere
Datatables
![Page 20: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/20.jpg)
Marcel Gnoth, www.gnoth.net
Warum noch Objektmodelle???Aufbau der OOModelle
aus Datareader, aus DatasetOverhead der Objektinstaziierung spielt
keine RolleProgrammcode lesbarer und wartbarerDer GUI – und der Server
Programmierer werden es Ihnen dankenAber mehr Aufwand bei Pflege des OO –
Modells Aufwand und Nutzen sollten sich die
Wage halten
![Page 21: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/21.jpg)
Marcel Gnoth, www.gnoth.net
Recordsets und DatasetsNachteile
kein echtes „semantisches“ Objektmodel
nicht typisiertkeine Methoden
VorteileEinfach zu erzeugenÄnderungen in DB schreibenKönnen mit DBNull umgehen
+ / -keine Abstraktion, direkte Daten
![Page 22: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/22.jpg)
Marcel Gnoth, www.gnoth.net
Erfahrungen mit dem DatasetMehrere Tabellen sind gutAber oft speichern und möglichst
TabellenweiseEltern / Kind Änderungen sind komplizierter
zu speichern (Insert / Delete)„dumme“ DataAdapter
NutzerführungNach Laden aus DB DS um eigene
Spalten und Tabellen ergänzen
![Page 23: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/23.jpg)
Teil 2
Ein paar Ideen aus der Praxis
![Page 24: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/24.jpg)
Marcel Gnoth, www.gnoth.net
Beispielprojekt
SpieldatenbankDrei Klassen und drei
Collection – Klassen (Hashtable)Gefüllt über einen DatareaderEin Paket hat Paketschritte und
Speicherungen als EigenschaftenEin Dataset mit drei Datatables
Gefüllt über drei DataadapterRelationen und PK – Contraints
Na? Wer ist schneller ???
Pakete
Paketschritte Speicherungen
![Page 25: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/25.jpg)
Marcel Gnoth, www.gnoth.net
DEMO
![Page 26: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/26.jpg)
Marcel Gnoth, www.gnoth.net
SerialisierenFür Übertragung der Daten wichtig320.000 ZeilenWie groß ist ein serialisiertes
Dataset 52MBObjektmodell 29 MB
Beim Serialisieren hätten sie das XML optimieren könnenDim ms As IO.MemoryStream = New IO.MemoryStream
Dim bf As BinaryFormatter = New BinaryFormatter
bf.Serialize(ms, m_DS)
lblDSSize.Text = ms.Length.ToString("#,#")
![Page 27: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/27.jpg)
Marcel Gnoth, www.gnoth.net
Das Dataset als CollectionErben von oder aggregieren eines
DatasetsImplementieren von
Add, RemoveItem
Item instanziiert Objekte und gibt Referenzen heraus
IEnumarable und IEnumerator evtl. IList ergänzen um Methoden
Alles was das Herz begehrt
![Page 28: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/28.jpg)
Marcel Gnoth, www.gnoth.net
Achtung Objektreferenzen
Intern werden die Daten in DataRows gehalten
Item gibt Objekte herausKopien ?Immer die gleiche Referenz ?
Zugriff auf einzelne ElementeVerwaltung der „Herausgegebenen
Elemente“ da bei Value„On Demand“ werden Objekte generiert
![Page 29: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/29.jpg)
Marcel Gnoth, www.gnoth.net
Beispiel
![Page 30: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/30.jpg)
Marcel Gnoth, www.gnoth.net
Daten in DataRow halten
Normale Collection – Klasse Beim Füllen werden den Objekten ihre
DataRows übergebenIntern wird der Objektzustand in einer
DataRow gespeichertÜber Property – Prozeduren wird auf die
Eigenschaften zugegriffenDatarows sind mit DataTable verbunden
Updates zur DB
![Page 31: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/31.jpg)
Marcel Gnoth, www.gnoth.net
Beispiel
![Page 32: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/32.jpg)
Marcel Gnoth, www.gnoth.net
Schlussfolgerung
Datasets sind eine In-Memory Datenbank, die MS uns mit COM+ versprochen hat
Nicht mehr......und nicht weniger!Umfangreiche Möglichkeiten
Filterung, Sortierung, ViewsIntressante Variante eines
DataObjects!
![Page 33: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/33.jpg)
Marcel Gnoth, www.gnoth.net
Wann Updaten??
MS gibt uns eine InMemory DBkomplexe Operationen können
lokal ausgeführt werdenÄnderungen werden in einem
„Rutsch“ gespeichertschont den Server(bei sehr vielen Anwendern)
![Page 34: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/34.jpg)
Marcel Gnoth, www.gnoth.net
Probleme mit der Nebenläufigkeitwas wenn:
viele Anwender gleichzeitig arbeitenkomplexe Operationen auf Konsistenz
zum DB Modell geprüft werden müssen
Primärschlüssel benötigt werdenDas Leben wird plötzlich sehr
kompliziert...Fummlig
![Page 35: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/35.jpg)
Marcel Gnoth, www.gnoth.net
Wann DS einsetzen
wenn man wirklich den DB-Server entlasten muß (disconnected Ansatz)
Außendienstmitarbeiter ??interessante Datenstruktur für lokale
Auswertungenkann sortieren, filtern,....
![Page 36: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/36.jpg)
Marcel Gnoth, www.gnoth.net
Klassisch OOModell
komplexe Client LogikEigene Objektmodelle
komplexe Objekte, bei denen Sie eine Menge Methoden implementieren „wollen“
sehr effizientso oft speichern wie möglich
erhöht die Konsistenzverringert die Entwicklerprobleme
![Page 37: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?](https://reader033.vdocuments.mx/reader033/viewer/2022051615/55204d7149795902118c3ae2/html5/thumbnails/37.jpg)
Marcel Gnoth, www.gnoth.net
Fragen?
Uff...Uff...
Alles wird gut