No. DS3, DC4, NA11 E-Mail [email protected] Datasets und Objektmodelle Wo sind sie geblieben...?

37
No. DS3, DC4, NA11 E-Mail [email protected] Datasets und Objektmodelle Wo sind sie geblieben...?

Transcript of No. DS3, DC4, NA11 E-Mail [email protected] Datasets und Objektmodelle Wo sind sie geblieben...?

Page 1: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?

No. DS3, DC4, NA11E-Mail [email protected]

Datasets und Objektmodelle

Wo sind sie geblieben...?

Page 2: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?

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...?

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...?

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...?

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...?

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...?

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...?

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...?

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...?

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...?

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...?

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...?

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...?

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...?

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...?

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...?

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...?

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...?

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...?

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...?

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...?

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...?

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...?

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...?

Marcel Gnoth, www.gnoth.net

DEMO

Page 26: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?

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...?

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...?

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...?

Marcel Gnoth, www.gnoth.net

Beispiel

Page 30: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?

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...?

Marcel Gnoth, www.gnoth.net

Beispiel

Page 32: No. DS3, DC4, NA11 E-Mail Marcel@Gnoth.net Datasets und Objektmodelle Wo sind sie geblieben...?

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...?

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...?

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...?

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...?

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...?

Marcel Gnoth, www.gnoth.net

Fragen?

Uff...Uff...

Alles wird gut