Foundations for Professionals .NET Professionals im Profil guide to C# guidgen.de

Blog

Nutze den Augenblick
und teile der Welt mit, was Du zu sagen hast.

Architektur lernen

Donnerstag, 27. November 2008, 13:34 Uhr
Permalink | Kommentare (4) | Kommentare als RSSRSS

Von Zeit zu Zeit werde ich gefragt, wie man als Entwickler eigentlich dem Thema Architektur begegnen sollte und wie man einen entsprechenden Einstieg findet. Da es kein allgemein gültiges Rezept gibt, empfehle ich in der Regel die Beschäftigung mit typischen Architekturthemen, an Hand derer ein Einstieg gelingen kann. Dazu gehören unter anderem:

  • Die klassischen Entwurfsmuster. Auch wenn diese letztlich nur ein Werkzeug für den Architekten darstellen, verhilft die Beschäftigung mit ihnen zu einer anderen Denkweise, vor allem hinsichtlich des Nutzens von Schnittstellen. Entwurfsmuster helfen, die eigene objektorientierte Denkweise zu schulen und zu verbessern, was sich wiederum in besser strukturiertem Code niederschlägt. Ein äußerst empfehlenswertes Buch zu diesem Thema ist C# 3.0 Entwurfsmuster von Judith Bishop, das neben den eigentlichen Entwurfsmustern auch deren Einsatz in C# 3.0 beschreibt.
  • Der Einsatz eines Microkernels. Auch dieses Thema fördert das Denken in Schnittstellen, allerdings auf einer anderen Ebene als die Entwurfsmuster - beziehen diese sich nämlich auf das Klassendesign, bezieht sich der Einsatz eines Microkernels auf das Komponentendesign einer Anwendung. Zwar gibt es einige Projekte wie beispielsweise Unity, die man sich näher anschauen kann, allerdings ist ein einfacher Microkernel in wenigen Zeilen selbst implementiert, wobei der Lerneffekt dann allerdings weitaus größer ist.
  • Die aspektorientierte Programmierung. Als Werkzeug empfehle ich hierfür regelmäßig PostSharp mit dem dazugehörigen LAOS-Framework, um einen Einstieg in die Beschäftigung mit den sogenannten Crosscutting Concerns zu erhalten. Als typische Einsatzgebiete für den Anfang dienen in der Regel die Themen Validierung, Sicherheit, Logging und Transaktionen.
  • Der Einsatz von Softwarezellen. Diese sind ein Konzept von Ralf Westphal, mit dessen Hilfe sich die Architektur einer Anwendung auf jeder Granularitätsebene darstellen lässt, und das etliche der gängigen Nachteile des klassischen Schichtenmodells vermeidet. Nähere Informationen hierzu finden sich in Ralfs Blog unter dem Tag Software Cells.

Die meisten Entwickler fragen trotz dieser Fülle an Informationen nach zusätzlicher, empfehlenswerter Literatur. Eine wirklich befriedigende Antwort konnte ich auf diese Frage bislang jedoch nicht geben, da es sich bei Architektur - im Gegensatz zu beispielsweise einer Programmiersprache - um ein ausgesprochen weites Feld handelt, das nicht mit der Lektüre einiger Bücher abgedeckt ist.

Vielmehr erfordert eine gute Architektur vor allem viel Erfahrung, und diese erlangt man letztlich nur durch Learning by Doing. Trotzdem wäre es natürlich hilfreich, zumindest einen Leitfaden mit Fragen an der Hand zu haben, an dem man sich orientieren kann, und der einen in die richtige Richtung denken lässt.

Genau einen solchen Leitfaden hat das patterns & practices-Team von Microsoft nun unter dem Namen Application Architecture Guide bereits in einer zweiten Version veröffentlicht, der kostenlos von der entsprechenden Webseite heruntergeladen werden kann.

In fünf Abschnitten wird detailliert auf verschiedene Themen wie allgemeine Architekturüberlegungen, Dienste, die verschiedenen Schichten, Performance, Sicherheit, RIAs, Webanwendungen und zahlreiches anderes mehr eingegangen. Erfreulicherweise ist der Inhalt größtenteils nicht als Fließtext, sondern als eine Art Checklisten implementiert, was dem Lesefluss und vor allem der praktischen Anwendbarkeit des Guides sehr zu Gute kommt.

Weihnachtsgewinnspiel: IT, quo vadis?

Mittwoch, 19. November 2008, 20:41 Uhr
Permalink | Kommentare (1) | Kommentare als RSSRSS

Noch hat sich das Jahr 2008 nicht endgültig seinem Ende entgegen geneigt, doch die Tage werden zunehmend kürzer und kälter, und der Winter bricht auf absehbare Zeit über uns herein. Der Unwirtlichkeit dieser Jahreszeit zum Trotz bietet es sich an, es sich zu Hause mit Lebkuchen und Glühwein vor dem Kamin gemütlich zu machen, und die rasanten Fortschritte der vergangenen Monate in der Softwareentwicklung zu überdenken.

Das Jahr 2008 hat uns von diesen Fortschritten ausgesprochen viele gebracht, nicht zuletzt auf der PDC 2008 in Form von Windows Azure. Doch nicht nur die Server-, auch die Clienttechnologien haben riesengroße Sprünge gemacht: Von Silverlight als Webtechnologie bis hin zu Surface als neuartiges und hochflexibles Eingabemedium reicht dabei die Spannbreite.

Dass all diese Technologien die zukünftige Entwicklung von Software maßgeblich beeinflussen werden, steht außer Frage. Eine wichtige Frage, die jeder Entwickler individuell für sich beantworten muss, ist die Frage, welche dieser Technologien einen näheren Blick Wert sind: Welche dieser Technologien sind relevant für die eigene, persönliche Zukunft? Denn die Zeit, in der man .NET als Ganzes überblicken und beherrschen konnte, ist spätestens mit .NET 4.0 endgültig vorbei.

Die meiner Meinung nach spannendste Frage, die man im Hinblick auf all diese Technologien stellen kann, ist jedoch eine andere als die bislang genannten. Die für mich spannendste Frage lautet:

Welche Lösungen werden wir Menschen zukünftig auf Basis von Technologien wie Windows Azure, .NET 4.0 und Surface finden können, um die Welt ein bisschen besser zu machen?

Diese Frage möchte ich als Basis für mein diesjähriges Weihnachtsgewinnspiel auf Des Eisbären Blog wählen.

Alle Leser, die mir bis zum 24. Dezember 2008 um 18 Uhr eine E-Mail mit potenziellen Antworten auf diese Frage an webmaster@goloroden.de schicken, nehmen an dem Gewinnspiel teil. Bewertet werden so wohl Kreativität wie auch Umsetzbarkeit der Ideen.

Unter allen Teilnehmern werden folgende Preise verlost, die von Microsoft Deutschland und der Redaktion der dotnetpro zur Verfügung gestellt wurden:

  • 1x Microsoft Flight Simulator X Professional
  • 1x Microsoft Windows Live OneCare
  • 10x jeweils eine Ausgabe der dotnetpro

Ich wünsche allen Lesern viel Fantasie und Erfolg!

Webseite guidgen.de gestartet

Freitag, 14. November 2008, 19:13 Uhr
Permalink | Kommentare (3) | Kommentare als RSSRSS

Die Verbreitung weltweit eindeutiger Identifier, sogenannter GUIDs (Globally Unique IDentifier), hat in den vergangenen Jahren deutlich zugenommen.

Am deutlichsten wird der Vorteil, den man aus ihrem Einsatz ziehen kann, vermutlich in Datenbanken: Falls der Primärschlüssel nämlich als GUID vorliegt, ist es möglich, die Wahl eines solchen von der Datenbank in den Client zu verlagern. Das vermindert nicht nur die Anzahl der notwendigen Roundtrips vom Client zur Datenbank, sondern ermöglicht auch erst den schreibenden Zugriff in replizierte Systeme.

Doch auch außerhalb von Datenbanken hat sich der Datentyp GUID seinen festen Platz erobert: Vom Einsatz als Klassen-Identifier in COM bis hin zum Identifier für Medienelemente in MAML reicht das Einsatzgebiet.

Zudem wird Entwicklern die Verwendung von GUIDs leicht gemacht: Visual Studio bringt ein eigenes kleines Werkzeug namens guidgen.exe mit, das sich ausschließlich der Aufgabe widmet, eine GUID nach der anderen zu generieren, und die generierten Wert zur späteren Verwendung in die Zwischenablage zu kopieren.

So weit, so gut. Doch was, wenn Bedarf an einer GUID besteht, aber kein Visual Studio zur Hand ist?

Da mir persönlich dieser Fall schon einige Male untergekommen ist, habe ich nun eine kleine, aber hilfreiche Webseite geschrieben, die quasi die webbasierte Variante von guidgen.exe darstellt: www.guidgen.de. Wie das Original kann man auch auf dieser Webseite eine GUID nach der anderen generieren, und die generierten Werte ebenfalls in die Zwischenablage kopieren - zumindest, wenn man den Internet Explorer nutzt.

prio.conference 2008: Dependency Hell? Nein danke!

Dienstag, 11. November 2008, 21:18 Uhr
Permalink | Kommentare (6) | Kommentare als RSSRSS

In den vergangenen beiden Tagen fand im Kurhaus von Baden-Baden die prio.conference statt, eine Konferenz der besonderen Art: Die prio ist nämlich eine Konzeptkonferenz, die sich im Gegensatz zu den übrigen Konferenzen jedes Jahr mit nur einem speziell ausgewählten Thema auseinandersetzt - dafür aber mit sehr viel Tiefe und Liebe zum Detail.

Thema der diesjährigen prio war der Begriff Softwarearchitektur, wobei drei parallel laufende Tracks die Unterthemen Konzepte, Technologien und SOA behandelten. Innerhalb des Konzepte-Tracks war ich mit einer Session zum Thema Abhängigkeiten unter dem Titel "Dependency Hell? Nein danke!" vertreten.

Ich muss zugeben, dass ich angesichts der sehr stilvollen Umgebung und der sehr professionellen und zugleich angenehmen Atmosphäre ein wenig aufgeregt war, zumal meine Session deutlich mehr Besucher angezogen hat, als ich jemals erwartet hätte: Eine grobe Abschätzung von der Bühne aus ließ mich auf ungefähr 150 Teilnehmer kommen - in Anbetracht der Tatsache, dass ich bislang eher vor maximal 20 Personen gesprochen habe, durchaus eine neue Erfahrung.

Die Session an sich behandelte das Thema Abhängigkeit, und enthielt im Wesentlichen folgende Punkte:

  • Was sind Abhängigkeiten?
  • Formen von Abhängigkeiten
  • Gründe gegen Abhängigkeiten
  • Abhängigkeiten messen
  • Kopplung und Kohäsion
  • Separation of Concerns
  • Aspektorientierte Programmierung
  • Law of Demeter

Insgesamt bin ich sehr zufrieden, wie die Session verlaufen ist, und die mir danach von Teilnehmern noch gestellten Fragen zeigen, dass das Thema durchaus für viele Teilnehmer und ihre tagtägliche Arbeit von Interesse ist.

Abschließend möchte ich noch dem Team von der prio, allen voran Ralf Westphal als Konferenzmanager, Tilman Börner als Chefredakteur der dotnetpro und den Damen der Veranstaltungsorganisation für die sehr beeindruckende Konferenz und die sehr gute Vorarbeit danken. Vielleicht sieht man sich ja auf einer der nächsten prios wieder ...

guide to C# Live! 2008 Winter Edition

Sonntag, 9. November 2008, 21:09 Uhr
Permalink | Kommentare (1) | Kommentare als RSSRSS

Vom 7. bis zum 9. November 2008 fand zum zweiten Mal guide to C# Live! statt, eine Veranstaltung speziell für die Community mit Themen zu .NET und verwandten Technologien. Nachdem das Thema der ersten Veranstaltung im Februar dieses Jahres die Sprache C# 3.0 gewesen war, lag der Schwerpunkt nun auf Architektur, ergänzt um LINQ und WPF.

Der erste Tag widmete sich der Frage, was überhaupt unter Architektur zu verstehen ist, und warum die Beschäftigung mit Architektur für die Entwicklung von Software relevant ist. Ergänzt wurde dies durch die Diskussion einiger theoretischer Konzepte und der Präsentation geeigneter Maßnahmen zur Erreichung einer lose gekoppelten Architektur so wohl auf Klassen- wie auch auf Komponentenebene.

Thema des zweiten Tages war LINQ, wobei die grundlegende Idee zunächst an Hand von LINQ to Objects erläutert wurde. Neben den Standardabfrageoperatoren und den für LINQ notwendigen Erweiterungen von C# 3.0 wurden danach auch Kernkonzepte von LINQ wie beispielsweise die verzögerte Ausführung vorgestellt.

Außerdem wurden mit LINQ to XML und LINQ to SQL zwei weitere Varianten von LINQ diskutiert, wobei auch die jeweiligen Besonderheiten wie beispielsweise Transaktionen und Locking besprochen wurden. Abgerundet wurde der zweite Tag am Abend durch eine zusätzliche und ausgesprochen interessante Einführung von Hagen Siegel in das Thema WCF.

Am dritten Tag stand WPF im Mittelpunkt, wobei auch hier wiederum zunächst die grundlegenden Konzepte und die Sprache XAML besprochen wurden, bevor die verschiedenen Steuerelemente und Layoutcontainer vorgestellt wurden. Insbesondere auf die umfangreichen Möglichkeiten, die in WPF mit den Layoutcontainern zur Verfügung stehen, wurde ausführlich eingegangen.

Insgesamt haben die drei Tage sehr viel Spaß gemacht. Vor allem der zweite Abend, an dem sich zwischen den Teilnehmern sehr interessante Gespräche und Diskussionen ergeben haben, hat viel zu der sehr angenehmen Atmosphäre beigetragen. Zu guter letzt möchte ich mich noch einmal bei allen Teilnehmern für ihre Aufmerksamkeit und ihr Interesse bedanken. Es war sehr schön und interessant, einige von Euch wieder zu sehen, beziehungsweise die anderen neu kennen zu lernen.

In diesem Sinne: Auf ein neues guide to C# Live! im Jahr 2009 ...