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.

.NET Reflector Pro

Freitag, 19. Februar 2010, 19:08 Uhr
Permalink | Kommentare (1) | Kommentare als RSSRSS

Von den zahlreichen Werkzeugen, die für die Softwareentwicklung auf Basis von .NET zur Verfügung stehen, sind nur einige wenige derart gelungen, dass sie ohne Wenn und Aber für wirklich jeden Entwickler empfehlenswert sind.

Zu diesen Werkzeugen zählen meiner Meinung nach unter anderem Resharper von JetBrains und .NET Reflector von Red Gate.

Resharper ist ein typisches Mausrad-Produkt: Eigentlich braucht man es nicht – aber nachdem man es für einige Weile genutzt hat, vermisst man es schmerzlich, wenn man dann ohne es auskommen muss. Erst in solchen Augenblicken spürt man, wie nützlich das Werkzeug ist, und wie nahtlos es sich in die eigene Arbeitsweise integriert.

.NET Reflector ist im Gegensatz zu Resharper bislang kein Addin für Visual Studio, sondern ein eigenständiges Produkt gewesen: Es ermöglicht das Disassemblieren und Rückübersetzen von Assemblies in zahlreiche Sprachen wie C#, Visual Basic oder auch MSIL.

Die Anwendungsgebiete sind vielfältig: Diese reichen von der Analyse von bestehendem Code zu Lernzwecken bis hin zur Fehlersuche in externen Assemblies. Zweifelsohne zählt .NET Reflector daher zu den Werkzeugen, die ein Entwickler früher oder später tatsächlich benötigt.

So praktisch .NET Reflector bislang war, so hakelig war auch die Bedienung: Da keine Integration in Visual Studio stattfand, musste .NET Reflector als eigenständiger Prozess nebenher laufen, die zu analysierenden Assemblies mussten per Hand gesucht und eingebunden werden, … nahtlose Integration sieht anders aus.

Vor einigen Tagen ist nun die neue Version 6 von .NET Reflector erschienen. Neben der Unterstützung von .NET 4.0 gibt es als neues Feature eine Integration in Visual Studio, die es ermöglicht, direkt aus dem Kontextmenü des Quellcodeeditors an die zugehörige Stelle innerhalb der disassemblierten Assembly zu springen.

Allein dieses Feature macht die Arbeit mit .NET Reflector bedeutend angenehmer und vor allem schneller, da aufwändige Suchen der Vergangenheit angehören. Aber – die neue Version bietet noch mehr: Erstmalig steht von .NET Reflector eine zweite Edition zur Verfügung: .NET Reflector Pro.

Die Webseite von Red Gate verspricht zu .NET Reflector Pro, dass es aus Visual Studio heraus möglich sein soll, Assemblies zu disassemblieren und diese disassemblierten Assemblies gemeinsam mit dem eigenen Code im Rahmen des Debuggers verwenden zu können.

Und – es funktioniert tatsächlich! .NET Reflector Pro verspricht nicht nur eine nahtlose Integration, tatsächlich ist es eine nahtlose Integration! So ist es mit .NET Reflector Pro problemlos möglich, gemeinsam mit eigenem Code die von dort verwendeten .NET-eigenen Assemblies Step-by-Step zu debuggen.

Kaum ein Produkt hat mich in den vergangenen Jahren derart begeistert wie .NET Reflector Pro – hinter einer schlichten und sehr kompakten Benutzeroberfläche verbirgt sich ein unglaubliches Potenzial.

Als einziger Wermutstropfen kann gelten, dass .NET Reflector Pro kostenpflichtig ist. Mit einem Preis von 145 Euro bewegt es sich aber – ebenso wie auch Resharper – in einem durchaus auch für private Entwickler erschwinglichen Rahmen, zudem muss man lange suchen, bis man ein weiteres Produkt mit einem ähnlichen, derart herausragenden Preis-Leistungs-Verhältnis findet.

FogBugz

Mittwoch, 4. März 2009, 21:12 Uhr
Permalink | Kommentare (10) | Kommentare als RSSRSS

Seit einigen Jahren verfolge ich begeistert die Artikel von Joel Spolsky, die er in seinem Blog Joel on Software und seinen Büchern veröffentlicht. Seine Artikel sind ausgesprochen lesenswert, und kommentieren auf amüsante und zugleich nachdenkliche Art Entwicklungen, Technologien und Themen der IT.

Einige der Artikel ziehe ich seither immer wieder zu Rate, weil sie in gewissem Sinne zeitlos und allgemeingültig sind, wie beispielsweise Fire and Motion und The Joel Test: 12 Steps to Better Code.

Neben dem Schreiben seines Blogs ist Joel Spolsky zudem Gründer der Firma FogCreek, die er wie folgt charakterisiert:

We didn't start with a particular product in mind: our goal was simply to build the kind of software company where we would want to work, one in which programmers and software developers are the stars and everything else serves only to make them productive and happy.

Eines der Produkte von FogCreek ist FogBugz, eine webbasierte Projektmanagementsoftware, die Joel Spolsky unter anderem in seinem Artikel Painless Bug Tracking erwähnt. Auf Grund all dessen, was ich bisher über FogBugz gelesen habe, hätte ich die Software schon lange gerne eingesetzt - dem stand leider immer im Wege, dass sich die Kosten für mich als Privatperson nicht gerechnet hätten.

Seit Dezember 2008 arbeite ich nun aber mit Peter Bucher an einem gemeinsamen Projekt, für das wir neben Subversion als Versionsverwaltung auch ein Bugtrackingsystem auf Basis von .NET einsetzen wollten. Es sollte kostenlos verfügbar sein, trotzdem aber über alle relevanten Funktionen eines solchen Systems verfügen.

Während unserer Recherchen sind wir auf BugNET gestoßen - eine zwar kostenlose, aber wie sich inzwischen herausgestellt hat leider absolut instabile und fehlerhafte Software. Da wir jedoch auf keine wirkliche Alternative gestoßen sind, haben wir uns in den vergangenen Monaten damit herumgeschlagen.

In den vergangenen Tagen bin ich nun durch Zufall wieder einmal auf die Webseite von FogBugz gestoßen, das inzwischen nicht nur als Datenträger, sondern auch als von FogCreek gehostete Lösung angeboten wird - allerdings ist auch diese Lösung für uns als Privatpersonen zu teuer.

Jedoch habe ich noch eine weitere interessante Entdeckung gemacht: Die gehostete Version gibt es nämlich auch in einer sogenannten Student and Startup Edition, die für Einzelpersonen und Teams mit maximal zwei Teammitgliedern kostenlos zur Verfügung gestellt wird. Alles, was zu ihrer Nutzung notwendig ist, ist das Erstellen eines entsprechenden Accounts unter Angabe einer E-Mail-Adresse.

Der erste Eindruck ist ausgesprochen gut: FogBugz läuft dank intelligenter Nutzung von AJAX extrem schnell, arbeitet bislang fehlerfrei und ist vor allem ausgesprochen intuitiv bedienbar. Man merkt, dass die Software mit viel Liebe zum Detail erstellt wurde, und das Wort hochwertig trifft absolut zu.

Wer also noch auf der Suche nach einer geeigneten Projektmanagementsoftware für maximal zwei Teammitglieder ist, dem kann FogBugz nur uneingeschränkt empfohlen werden. Abschließend von meiner Seite aus noch ein großes Lob an FogCreek, und Danke für die kostenlose Bereitstellung!

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.

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.

Argot

Freitag, 26. September 2008, 14:20 Uhr
Permalink | Kommentare (0) | Kommentare als RSSRSS

Wie ich selbst erst erfahren habe, bezeichnet der französische Begriff argot im allgemeinen Sinne einen Jargon, der nur von einer dedizierten Menge von Personen als Fachsprache genutzt wird. Auf diese Bedeutung spielt der Name des Projektes Argotic Syndication Framework an, dessen selbstgewählte Parole frei übersetzt

Wir beherrschen die Sprache bereits, so dass Sie sie nicht lernen müssen.

lautet. Mit Argotic steht ein Framework für .NET zur Verfügung, das einen abstrahierten Zugriff auf diverse Syndikationsformate ermöglicht, unter anderem auch RSS, Atom, OPML, APML, BlogML und RSD. Dieser Zugriff kann dabei nicht nur lesend, sondern auch schreibend stattfinden, so dass es für in .NET geschriebene Anwendungen beispielsweise ein leichtes ist, einen RSS-Feed zu konsumieren oder einen ebensolchen zu erstellen.

Auf Argotic aufmerksam wurde ich durch Alexander Zeitler, seines Zeichens MVP, der mir dieses Framework als Antwort auf meine Frage empfohlen hat, wie man mit möglichst geringem Aufwand zwei RSS-Feeds zu einem gemeinsamen zusammenführen könnte. Daher an dieser Stelle: Vielen Dank für den wirklich ausgesprochen guten Tipp!