Track .NET: Geschäftsobjekte mit ADO.NET

Manfred Rätzmann stellt sich zunächst vor. Ein interessanter Punkt seiner Biographie ist ein Buch, das er vor einem Jahr über Software Tests geschrieben hat.

Zuerst werden Geschäftsobjekte allgemein erklärt und dabei darauf hingewiesen, dass wir aufpassen sollen, dass sie in einer Weise erzeugt werden, die es erlaubt, sie unter den üblicherweise zu erwartenden zukünftigen Szenarien zu verwenden. Dies Einsatzzwecke sind:

Nach einer kurzen allgemeinen Einführung (dieser Vortrag ist für Fortgeschrittene) stellt Manfred die sogenannte Geschäftsobjektmanager-Klasse vor. Sie ist verantwortlich für alles, was mit mehreren Instanzen eines Geschäftsobjekts zu tun hat. Dadurch hat das Geschäftsobjekt selbst eine gute Kapselung und wird recht leichtgewichtig. Dann führt er diese am Beispiel von zwei typischen Anwendungfällen vor, damit wir sehen, warum eine bestimmte Arbeit von einem Geschäftsobjekt selbst oder durch eine Managerklasse erledigt werden sollte. Ein Kunden-Geschäftsobjekt kann die Summe der bestehenden Konten für einen Kunden zur Verfügung stellen, aber es kann kein Abfrageergebnis der Summen der Konten für alle oder einige der Kunden in der Datenbank bereitstellen. Ein Geschäftsobjektmanager kann sowohl neue Instanzen eines Geschäftsobjekts erzeugen als auch Veränderungen an bereits existierenden speichern.

Dann erklärt er seine Service Providerklasse, die fast mit einer Geschäftsprozessklasse übereinstimmt, abgesehen davon, dass Manfreds Klasse nur für die Prozesse zuständig ist, bei denen verschiedene Geschäftsobjekte beteiligt sind. Wenn lediglich Objekte der gleichen Geschäftsobjektklasse beteiligt sind, ist der Business Object Manager die richtige Stelle, wo diese Fälle kodiert werden können.

Als nächstes sahen wir die Implementation dieses Modells unter Verwendung der Sprache C#. Manfred erklärt, wie er die Sachen programmiert, die er uns zuvor theoretisch erklärt hat. Er führt vor, wie flexibel sein Ansatz ist, indem der die Datenquelle für sein Demo von der Ansteuerung einer Visual FoxPro Datenbank über den OLEDB-Provider auf die Datenhaltung in eine SQL Serverdatenbank umstellt, auf die direkt von einem SQLServer Adapter zugegriffen wurde.

Manfred erwähnt, dass er bereits erfolgreich das gezeigte Modell in Visual FoxPro, .NET und Delphi umgesetzt hat. Damit ist erkennbar, dass es sich um ein soweit möglich allgemeines Modell handelt, aber, da es „nur“ ein Modell ist, unabhängig von der späteren Implementation ist. Natürlich muss man immer einige Fähigkeiten des Programmierwerkzeuges, mit dem man die Umsetzung bewerkstelligt, berücksichtigen (z.B. strenge Typzuweisung), damit das Modell wirklich passt.

Track .NET: Architektur für das .NET Event Modell

Wie immer fängt der Vortrag von Kevin McNeish anstatt mit dem eigentlichen Thema mit einer lustigen Anekdote an. Dieses mal sehen wir einen kleinen Ausschnitt einer Videoaufzeichnung von Rick Strahl, in dem er über zwei Minuten lang lacht. Ich überlasse es der Vorstellungskraft des Lesers, sich auszumalen, was in diesen zwei Minuten in dem Vortragsraum passierte. ?

Danach fängt Kevin mit einer Einführung in das .NET Event Model an und hebt hervor, dass dessen Design auf dem uns allen bekannten Subject-Observer Muster basiert. Er führt den regulären Code, den man benötigt, um Steuerelemente mit Datenfeldern in .NET zu verbinden, vor.

Dann erklärt Kevin die Zielsetzung, dieses auf die Visual FoxPro-Weise zu bewerkstelligen, was bedeutet, dass man lediglich eine DataBind Eigenschaft füllen und man nicht mehr unzählige Zeilen Code schreiben muss.

Zur Erklärung beginnt er mit einem deutlichen und ausführlichen Beispiel aller notwendigen Schritte, um Events in .NET zu erzeugen:

Vor allem seine Erklärung des ziemlich komplizierten Konzepts von Delegates hilft den Teilnehmern, einen der schwierigsten Teile der .NET Programmierung zu verstehen und nachzuvollziehen.

Nachdem alle Schritte erklärt sind, zählt Kevin die Möglichkeiten dieser Events auf:

Und natürlich wird das Ziel des Vortrags, intelligentes DataBinding in Windows- und WebForms zu haben, erreicht mit dem Resultat, dass man durch das einfache Setzen einer Eigenschaft das Steuerelement an ein Datenbankfeld angebunden hat, wie es in Visual FoxPro schon seit jeher möglich ist. Wir haben eine gute Demonstration zu all diesen Themen bekommen und Kevin zeigt uns, wie er das alles in seinem Framework MereMortals.NET umgesetzt hat.

Track .NET: Einführung in Multithreading

Rick Strahls Vortrag fängt mit einer detaillierten Erklärung an, was Multithreading bedeutet und wo man es benutzen kann. Neben nahe liegenden Beispielen wie Server- oder Monitoring-Anwendungen führt er auch Beispiele wie ein intelligenteres Verhalten der Benutzeroberfläche und die Fähigkeit, Operationen zu unterbrechen, an.

Danach beschreibt Rick einige der Probleme bei der Benutzung von Multithreading und wie man sie lösen muss. Der nächste Schritt ist ein genauerer Blick auf die Arbeitsweise in .NET. Er führt vor, wie einfach die Erzeugung und Benutzung von Threads ist und welche verschiedene Möglichkeiten, z.B. Multithreading mit Delegates existieren.

Gute und realistische Beispiele wie das Versenden von eMails im Hintergrund, ohne dass das Interface des Users blockiert wird, helfen, die Technik und den Code, den man zum Implementieren benötigt, zu verstehen.

Nach dieser Präsentation folgen viele Tipps und nützliche Hinweis für die Lösung von Problemen in einer Multithreading Umgebung. Dazu gibt es noch einige Erklärungen über das Debugging.

Und wer nicht alles gleich beim ersten Mal verstanden hat, hat die Gelegenheit, auf den 26 (!) Seiten seiner Vortragsunterlagen im Konferenzordner alles nochmals gründlich nachzulesen.