Folien zu meinen Vorträgen bei der BASTA Spring

Sunday, March 01, 2009 5:59:15 PM (W. Europe Standard Time, UTC+01:00)

Letzte Woche war ich wieder mit 2 Vorträgen auf der BASTA Spring in Darmstadt.

Im ersten Vortrag ging es um mehrschichtige Webanwendungen mit dem Entity Framework. Dabei habe ich anhand eines Beispiels eine Anwendung schrittweise verbessert und so eine per Drag&Drop zusammengeklickte Anwendung zu einer mehrschichtigen Anwendung mit Dependency Injection umgebaut. Der Vortrag war super besucht, mit ca. 125 Teilnehmern hatte ich wohl die am besten besuchte Session am Dienstag.

Folien zu “Mehrschichtige Webanwendungen mit dem ADO.NET Entity Framework”

Die Beispiele werde ich demnächst online stellen. Ich wollte sie übers Wochenende noch einmal überarbeiten, da ich aber im Moment fast den ganzen Tag krank im Bett liege bin ich noch nicht dazu gekommen.

In meinem 2. Vortrag ging es mal wieder um die ADO.NET Sync Services. Im Prinzip fast der gleiche Vortrag, den ich schon mehrfach gehalten habe, mit ein paar kleineren Änderungen.

Folien zu “ADO.NET Sync Services 2.0”

Kick it on dotnet-kicks.de

Das Model-View-Presenter Pattern in ASP.NET – Teil 1

Tuesday, October 21, 2008 7:10:09 PM (W. Europe Daylight Time, UTC+02:00)

Im Moment liest man überall vom ASP.NET Model View Controller (MVC) Framework. Das MVC Framework unterscheidet zwischen einem Model, einer View und einem Controller, und führt so zu einer klaren Aufgabentrennung und leichter testbarem Code.

Um testbare ASP.NET Web Seiten zu schreiben, bei der die Darstellung (View) sauber von der Logik und vom Modell getrennt ist, muss  man jedoch nicht erst auf das MVC Framework warten. Auch mit ASP.NET Web Forms ist es möglich, gut strukturierte und testbare Anwendungen zu entwickeln.

Ein Ansatz dafür ist das Model-View-Presenter (MVP) Pattern. Auf den ersten Blick ist das MVP Pattern dem MVC Pattern sehr ähnlich. Beide Ansätze verfolgen im Prinzip die gleichen Ziele, erreichen diese nur auf einem anderen Weg. Eine genaue Beschreibung der Unterschiede gibt es z.B. unter

http://ameleta.spaces.live.com/blog/cns!5F6316345A821420!163.entry

http://stackoverflow.com/questions/2056/what-are-mvp-and-mvc-and-what-is-the-difference#101561

Das Pattern das ich verwende ist eine Variante des MVP Patterns, und nennt sich “Supervising Controller”. Dieses Pattern wird von Fowler sehr ausführlich beschrieben.

Meine Implementierung des MVP Patterns basiert auf einer Implementierung von David Hayden: http://www.pnpguidance.net/Post/UnityIoCDependencyInjectionASPNETModelViewPresenter.aspx

David verwendet das MVP Pattern zusammen mit Microsoft Unity als Dependency Injection Container. Über das Thema Dependeny Injection werde ich später vielleicht in einem eigenen Beitrag schreiben, bis dahin soll es ausreichen zu wissen, dass sich Unity darum kümmert, dass Model, View und Presenter richtig miteinander “verdrahtet” werden.

David hat Basisklassen für View und Presenter geschrieben. Die View ist bei ihm eine von System.Web.Page abgeleitete Klasse. Die View hat zwei Typparameter, TView und TPresenter. Als TView übergeben wir ein Interface, das die Methoden enthält, über die der Presenter Daten in der View darstellen kann. TPresenter ist der zur View passende Presenter. Die View erhält eine Referenz zu ihrem Presenter, und benachrichtigt diesen dann über verschiedene Ereignisse (Seite geladen, Button geklickt usw.).

Ich habe mit Davids Code angefangen und bin dann mehrfach an Stellen gekommen, wo ich seinen Code erweitern musste. So soll z.B. eine einzelne Seite oft nicht nur eine View, sondern gleich mehrere unterschiedliche Views in Form von Steuerelementen darstellen können. Dafür habe ich eine BaseControl-Klasse geschrieben, die von UserControl ableitet und so MVP basierte UserControls ermöglicht. Auch für MasterPages möchte ich das MVP Pattern einsetzen können, und habe dafür eine BaseMasterPage geschrieben.

An einigen Stellen musste ich auf ASP.NET-spezifische Klassen wie SessionState und Cache zugreifen. Um diese besser testen zu können und in meinen Tests unabhängig von ASP.NET zu bleiben habe ich mir für diese Fälle die Interfaces ICacheProvider bzw. IStateProvider geschrieben, die von BasePage/BaseControl/BaseMasterPage implementiert werden, und somit einen Zugriff auf SessionState und Cache ermöglichen, ohne dass ich dafür in meinen Tests ASP.NET Klassen verwenden müsste.

Als letzte Klasse gibt es dann schließlich noch die BaseApplication, die sich genau wie die HttpApplication-Klasse in Davids Beispiel um die Initialisierung des Unity-Containers kümmert.

Zusammengenommen ergibt sich damit folgendes bild:

image

Da ich diese Klassen so in mehreren Projekten verwenden kann (und auch bereits verwendet habe) habe ich das alles noch in ein eigenes Projekt ausgelagert.

Soweit die Theorie. In Teil zwei zeige ich dann an Beispielen aus meinem Quellcode, wie ich das MVP Pattern angewendet habe.

Kick it on dotnet-kicks.de

Vortrag von Holger Schwichtenberg zum Thema ASP.NET 3.5 Extensions in der .NET User Group Paderborn

Thursday, April 24, 2008 10:02:27 AM (W. Europe Daylight Time, UTC+02:00)

Zu unserem nächsten User Group Treffen am 05.05.2008 haben wir Holger Schwichtenberg eingeladen. Er wird die ASP.NET in .NET 3.5  und die ASP.NET 3.5 Extensions vorstellen:

Das zusammen mit .NET 3.5 erschienene ASP.NET 3.5 und die zugehörige Entwicklungsumgebung Visual Web Developer 2008/Visual Studio 2008 bieten neben der Integration der AJAX-Erweiterungen einige sehr interessante neue Steuerelemente (ListView, DataPager, LinqDataSource) sowie einen Designer, der im Bereich Formatierung, CSS sowie JavaScript-Programmierung stark verbessert wurde. Mitte 2008 wird ein weiteres Feature-Paket erscheinen: Darin enthalten sind vordefinierte Webservices zum Zugriff auf Daten (ADO.NET Data Services), Dynamic Data Controls, die eine Oberfläche zur Pflege von Datentabellen automatisch herstellen, die Lösung für das Problem mit der "Zurück"-Schaltfläche bei AJAX, Unterstützung für Silverlight sowie eine Framework für das Model-View-Controler-Pattern in ASP.NET.

Mehr Infos zur User Group gibt es unter http://www.dotnet-paderborn.de

Kick it on dotnet-kicks.de

Silverlight 2.0 und ASP .NET 3.5 Extensions - die Microsoft .NET Web Product Roadmap

Thursday, November 29, 2007 10:57:26 PM (W. Europe Standard Time, UTC+01:00)

Scott Guthrie hat in seinem Blog die Roadmap für .NET im Webbereich veröffentlicht. So wird z.B. Silverlight 1.1 wegen der Umfangreichen Neuerungen und Erweiterungen gegenüber 1.0 in Silverlight 2.0 umbenannt. Außerdem gibt es bald wieder eine neue CTP mit vielen Neuerungen, z.B. gibt es endlich viele Standard-Controls, Layout Manager und Databinding.

Außerdem gibt es Informationen zur nächsten Version von ASP.NET, den ASP .NET 3.5 Extensions, die unter anderem das ASP.NET MVC Framework beinhalten werden.

Ausführliche Informationen gibt es direkt bei Scott.

Technorati tags: , ,
Kick it on dotnet-kicks.de

Auf dem Weg zur Xtopia

Tuesday, October 09, 2007 6:56:02 PM (W. Europe Daylight Time, UTC+02:00)

Am Mittwoch + Donnerstag bin ich in Berlin auf der Xtopia, der neuen Microsoft Konferenz zu User Experience und Web Design. Ich arbeite dort als "Ask the Experts" (ATE), werde also Fragen der Teilnehmer beantworten. Das gibt sicher wieder einige sehr interessante Gespräche.

Im Moment sitze ich im Hauptbahnhof in Hannover und warte auf meinen Zug. Der hat mal wieder 30 Minuten Verspätung. War ja klar, wo ich sowieso schon 30 Minuten Zeit zum Umsteigen hatte. Aber inzwischen bin ich's ja gewohnt, deshalb fahre ich auch schon heute Abend nach Berlin und nicht erst morgen früh, wo ich mit dieser Verspätung schon zu spät zur Konferenz gekommen wäre.

Technorati tags: , , , ,
Kick it on dotnet-kicks.de
Page 1 of 2 in the ASPNET category Next Page