Ralf Westphals Readers' Digest Nr. 11 (16.09.05) ------------------------------------------------ Liebe Entwickler, jetzt ist es wirklich lange her, dass ich meinen letzten Newsletter herausgegeben habe. Das tut mir leid! Eigentlich wollte ich Sie in kürzeren Abschnitten mit Leseempfehlungen aus dem Fachliteraturdschungel versorgen. Aber... irgendwie ist immer etwas dazwischen gekommen. Anfang des Jahres war es z.B. das Enterprise Programming Sonderheft des dot.net Magazins [1] für das ich als Chefredakteur in vielen Texten baden musste, dann im Sommer war es die 12teilige Reise durch Vaubekien [2] bei MSDN Online, die mich wöchentlich mit Beschlag belegt hat... So kam ich immer wieder nicht dazu, die ständig wachsende Liste mit Links zu interessanten Artikel zu veröffentlichen. Schlimm, nicht wahr? Aber nun soll es ja wieder besser werden! Die Konferenzsaison beginnt wieder, die BASTA! (http://www.basta.net/2005/) steht vor der Tür, der dotnetpro persistence.day (http://persistenceday.dotnetpro.de/) kommt Ende Oktober, dann die BASTA! on Tour (eine Roadshow mit BASTA! Themen)... Und ich habe endlich das Redesign meines eigenen Internet-Auftritts geschafft: http://www.ralfw.de. (Geben Sie mir dazu gern Feedback.) Also: Viel Spaß bei der Lektüre der diesmaligen Literaturlinks. Ich denke, es ist wieder eine bunte Mischung geworden. Ich wünsche viel Spaß beim Lesen! Ralf Westphal Freier Autor und Berater Microsoft MSDN Regional Director & MVP www.ralfw.de [1] Enterprise Programming, http://www.dotnet-magazin.de/enterpriseprog/ [2] Die Reise durch Vaubekien, http://www.vaubekien.net Lesenswerte Artikel ------------------- ::Everything You Need to Know About Performance Wer trockenen Humor gepaart mit Expertise mag, der sollte das Blog der "Grumpy Old Programmers" abonnieren! Beispielhaft für ihre lesenswerten Einsichten ist die knappe Liste der einzigen vier Punkte, die man über Performance wissen sollte. Köstlich - und so wahr! Ich kann nur empfehlen: Die Punkte in ein Word-Dokument übertragen, Schrift auf 25pt einstellen, ausdrucken und neben den Arbeitsplatz hängen :-) http://grumpyoldprogrammer.myblogsite.com/blog/_archives/2005/6/3/905790.html ::Ralf Westphal & Christian Weyer, Gespräch über Indigo Technische Artikel sind ja eine schöne Sache. Da kommt Information rüber. Super! Aber: Sie können manchmal in ihrem Monolog des Autors auch etwas trocken sein. thinktecture hat deshalb ein neues Format ins Leben gerufen, um Ihnen technologische Themen näher zu bringen: das Gespräch. In einem Dialog (nicht Interview!) unterhalten sich zwei Experten über ein Thema und beleuchten es aus ihrer persönlichen Warte. Da herrscht nicht immer Einmütigkeit, da kann es auch mal zu Missverständnissen kommen und es wird auch mal über den Tellerrand des Themas geblickt. Insgesamt sollchen die thinktecture Gespräche Wissen auf lockere Art und aus neuem Blickwinkel vermitteln. Dabei geht es nicht um "feature fucking", sondern um Vertiefung, Konzeptionelles und Klärung. Wir sind gespannt auf Ihr Feedback an: gespraeche@thinktecture.com http://www.thinktecture.com/Gespraeche/Indigo_CW_RW.htm http://www.thinktecture.com/Gespraeche ::Vance Morrison, What Every Dev Must Know About Multithreaded Apps Der Titel des Artikels ist Programm: Hier geht es um die Grundlagen der Parallelprogrammierung. Empfehlenswert macht diesen Artikel aber nicht, dass dort nun endlich mal die Thread-Klasse erklärt wird. Nein, das fehlt. Vielmehr geht es um konzeptionelle Grundlagen des Multithreading, nämlich die Synchronisation des gleichzeitigen Zugriffs auf Ressourcen. Deshalb halte ich den Artikel für sehr lesenswert - und ich bin gespannt auf weitere von Vance. http://msdn.microsoft.com/msdnmag/issues/05/08/Concurrency/default.aspx ::Klaus Prinz, User-Interface-Abstraktion – Vom User Interface zum Action Interface, dot.net Magazin 7/8.2005, S. 74 Wenn es um Benutzeroberflächen geht, dann vor allem um Controls und Fenster. Aber wie sollte ein GUI unter dieser Fassade aussehen? Wie steuert man diese Fassade bzw. kommuniziert mit der Logik einer Anwendung? Das Model-View-Controller Pattern zeigt da ja schon eine Richtung auf. Aber am Ende ist es etwas unkonkret und berücksichtigt den Test von Benutzerschnittstellen nicht. Klaus Prinz unternimmt in seinem lesenswerten Artikel einen Versuch, diese Lücke zu schließen. http://www.dotnet-magazin.de/itr/ausgaben/psecom,id,274,nodeid,32.html ::Eric Sink, The Game is Afoot - How to become an ISV Sehr kurzweilige Darstellung der Herausforderungen, denen man sich gegenüber sieht, wenn man selbstständig ist. Das Geschäftsleben wird darin mit verschiedenen Spielen verglichen (z.B. Ping Pong). Sehr angenehm zu lesen, regt zur Reflektion an. Interessant für alle, die sich selbstständig machen wollen - aber auch für die, die es schon sind ;-) http://software.ericsink.com/articles/Game_Afoot.html ::Ralf Westphal, Software Cells Wer das Schichtenmodell für Software zwar für etabliert, aber nicht immer einfach anzuwenden hält, dem sei meine Blog-Serie über ein neues Modell für die Softwareentwicklung ans Herz gelegt. Über die Jahre habe ich viel zum Schichtenmodell auf die eine oder andere Weise gesagt und war auch davon überzeugt - aber diese Überzeugung ist mir in den letzten Monaten abhanden gekommen. Ich habe als zunehmend umständlich empfunden, Software nach dem Schichtenmodell zu entwerfen. Immer wieder habe ich mich mit Fragen rumgeplagt wie z.B. "Kann ich Geschäftslogik in den Sql Server stecken?" oder "Gehört ein Javascript in einer HTML-Seite zur Geschäftslogik oder zum Frontend?" Im April war ich es dann leid und habe versucht, aus meinen Trümmern des Schichtenmodells etwas neues aufzubauen, mit dem sich die heutigen vernetzten Softwaresysteme besser abbilden lassen. Das Ergebnis: Softwarezellen (und das Softwareuniversum). Ausgangspunkt meiner Suche war der überfrachtete Begriff "Applikation". Ihn habe ich zuerst präzisiert und habe dann größere Kreise (im wahrsten Sinn des Wortes) gezogen. Inzwischen bin ich mit dem Modell sehr zufrieden und wende es in meiner täglichen Arbeit bei der Entwicklung, aber auch Beratung an. Und ich finde, es funktioniert. Natürlich sind die Softwarezellen nicht perfekt - aber sie sind pragmatisch und handlich. Wer sich also vom Schichtenmodell eingeengt fühlt, der sollte einen Blick auf meine Blog-Serie werfen. Gerne höre ich Ihr Feedback dazu. Ich bin gespannt. http://weblogs.asp.net/ralfw/category/9899.aspx http://www.sigs-datacom.de/sd/publications/pub_article_show.htm?&AID=1647&TABLE=sd_article (einführender Artikel im OBJEKTspektrum) ::Martin Fowler, Language Workbenches: The Killer-App for Domain Specific Languages? Domain Specific Languages (DSL) sind seit Microsofts Software Factories und DSL Tools in vieler Munde. Nicht, dass das Konzept wirklich neu wäre, aber es hat doch irgendwie an Attraktivität oder Salonfähigkeit gewonnen. Ich persönlich finde das sehr positiv, denn ich habe immer schon ein Faible für Sprachen (formale wie natürliche) gehabt. Nun mag es scheinen, als sei Microsoft mit seinen DSL Tools recht allein auf weiter Flur. Dem ist aber nicht so. Martin Fowler stellt die DSLs vielmehr unter das größere Dach des "Language Oriented Programming" bzw. der "Language Workbenches". Die Botschaft: DSLs are here to stay. Und Microsoft ist nur ein Player von mehreren. Ein grundlegender Artikel von einem bekannten Autor, mit dem es sich lohnt, sich auf einen Paradigmenwechsel in der Programmierung einzuschwingen. Komponentenorientierung ist eine Sache; eine andere ist es, wie Komponenten entwickelt werden. Unterschiedliche Sprachen bieten da einen sehr natürlichen Weg, Komponentengrenzen zu ziehen. Und Werkzeuge, die intelligent mit textuellen und visuellen Sprachen umgehen, werden es uns in Zukunft leichter machen, mit verschiedenen Sprachen zu arbeiten und sie zu integrieren. http://martinfowler.com/articles/languageWorkbench.html ::Stéphane Faroult, How to Misuse SQL's FROM Clause Die From-Klausel einer SQL Select-Anweisung scheint so simpel, dass man doch eigentlich nichts damit falsch machen kann. oder? Wie der Artikel zeigt, liegt der Teufel jedoch im Detail, wenn es um Joins geht. Interessante Lektüre für Zwischendurch insbesondere für Entwickler, die sich nicht den ganzen Tag mit der DB-Programmierung beschäftigen. http://www.onlamp.com/lpt/a/5220 kommentar/Ergänzung: http://www.tek-tips.com/viewthread.cfm?qid=956596&page=1 ::Clemens Vasters, Dealing with Deadlocks and Other Unfortunate Events on the Application Level Deadlocks bzw. Locks (die man nicht bekommt) sind immer eine hässliche Sache. Mit einem sauberen Codeentwurf kann man sie zwar oft vermeiden - aber eben nicht immer. Clemens stellt in zwei Blog-Postings ein kleines Framework vor, mit dem es nun einfacher ist, Situationen beim Datenbankzugriff zu erkennen, in denen es Sinn macht, den Zugriff auf eine Ressource zu wiederholen, wenn sie nicht sofort zugeteilt werden konnte. (Leider fehlt der von ihm versprochene 3. Teil der Serie mit einem Anwendungsbeispiel - aber Clemens ist halt viel beschäftigt ;-) http://staff.newtelligence.net/clemensv/PermaLink.aspx?guid=826bc7c9-8b0f-4df6-aabe-e6c5377a9446 http://staff.newtelligence.net/clemensv/PermaLink.aspx?guid=bafdbe41-0786-4a7f-a488-8ca447d612eb ::Mark Seemann, Mock Objects to the Rescue! Test Your .NET Code with NMock Systematisches Testen von Software kommt immer mehr in Mode. Gut so! Aber testen ist aufwändig. Da ist jede Hilfe recht. Mock-Objekte (Attrappen) sind eine solche Hilfe. Denn wenn man eine Komponente isoliert von anderen testen möchte, dann will man nicht durch Fehler oder Latenzzeiten anderer Komponenten abgelenkt werden. Dennoch ist aber deren Funktionalität für die zu testende Komponente wichtig. Mock-Objekte ersetzen während Tests Komponenten, von denen der Testgegenstand abhängig ist, sozusagen durch deklarative Programmierung. http://msdn.microsoft.com/msdnmag/issues/04/10/NMock/default.aspx ::Rockford Lhotka, Everyone into the Pool COM+ hat soviele Features, da verliert man leicht den Überblick, wenn man sich nicht täglich damit beschäftigt. Und will man es, hat man gerade nicht da richtige Buch zur Hand. Deshalb hier ein Link, der ein wenig besprochenes Feature heraushebt: das Objekt Pooling. Mir gefällt an dem Artikel besonders, dass er drei konkrete Einsatzszenarien für den Objektpool beschreibt: Objekte, deren Initialisierung aufwändig ist, Objekte/Ressourcen, die nur in geringer Zahl zur verfügung stehen und mit einer Lizenz belegte Ressourcen. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnadvnet/html/vbnet11262002.asp Lesenswerte Bücher ------------------ ::Gregor Hohpe, Enterprise Integration Patterns Über Patterns wird ja nun viel geschrieben. Meist geht es jedoch um Entwurfsmuster, d.h. um Muster auf dem Level der objektorientierten Programmierung. Das ist gut und schön, bietet aber nur eine Sichtweise auf Software. Wie steht es aber mit anderen Aspekten (z.B. Kommunikation) und Abstraktionsebenen (z.B. Dienste statt Typen)? Sehr empfehlenswert finde ich da Gregor Hohpes Buch, in dem es um grundlegende Muster der Kommunikation in und zwischen großen Anwendungen geht. Er schlägt eine kompakte Notation vor und liefert auch Implementationsbeispiele. Besonders empfehlenswert auch die anschauliche Erläuterung eines umfangreichen Beispiels am Anfang des Buches. http://www.amazon.de/exec/obidos/ASIN/0321200683/ralfwestphalh-21 ::Eric Freeman et al., Head First Design Patterns Vom Thema her nicht neu, aber in der Form, geht es bei "Head First Design Patterns" um die üblichen Entwurfsmuster. Wem das ursprüngliche "Gang of 4"-Buch aber zu trocken ist, der sollte sich mal diesen Titel ansehen. Er folgt einem innovativen Konzept bei der Darstellung, benutzt viele Bilder, ist anschaulich und locker geschrieben. (Dass die Codebeispiele sich auf Java beziehen, fällt kaum auf ;-) http://www.amazon.de/exec/obidos/ASIN/0596007124/ralfwestphalh-21 http://headfirst.oreilly.com/ Interessante Links ------------------ ::Liste mit O/R Mapping Werkzeugen. Sie ist zwar nicht vollständig (so fehlt z.B. "Vanatec Open Access .NET" (www.vanatec.net, früher Versant)), aber es ist ein recht umfangreicher Einstieg ins Thema. http://groups.msn.com/DotNetPersistence/tools.msnw ::Wer sich mit Web Services beschäftigt, sollte sich dringend dieses Tool anschauen. Es ist eine Implementation des Contract First Design Prinzips für die Web Service Welt. Dass Web Services mehr sind als Webreferenzen in Visual Studio, hat sich ja mittlerweile herumgesprochen. Aber da die Unterstützung für mehr bisher nicht in VS integriert ist, kommt das Tool WSCF von thinktecture gerade recht. http://www.thinktecture.com/Resources/Software/WSContractFirst/WSCF04Walkthrough1.html ::Microsoft hat gerade seine Workflow Engine für den .NET Framework vorgestellt: die Windows Workflow Foundation. Das halte ich für einen ähnlich großen Schritt nach vorn wie MTS/COM+ und Sql Service Broker. Es wird ein großes Stück Infrastruktur kostenlos zur Verfügung gestellt, das erheblichen Einfluss auf die Grundarchitektur von Anwendungen haben kann. Wem bisher Workflow-Denken fremd war, weil die zugehörigen Werkzeuge zu teuer waren und irgendwie immer nur für große Unternehmen passend erschienen, der bekommt jetzt ein ganz neues Programmiermodell an die Hand, von dem auch kleinere Anwendungen profitieren können. http://msdn.microsoft.com/windowsvista/building/workflow/ ::Spezialsprachen (Domain Specific Languages, DSL) werden in Zukunft an Wichtigkeit gewinnen. SQL, RegEx, HTML oder EBNF kennen wir alle. Aber was ist mit einer Sprache für industrielle Stücklisten oder Gerätesteuerung oder Online-Shops? Auf der vorgestellten Seite gibt Microsoft einen Überblick über seine Vision des Themas DSL. http://lab.msdn.microsoft.com/vs2005/teamsystem/workshop/dsltools/ ::Das Thema DSL steht im größeren Zusammenhang der so genannten "Software Factories". Wer an Microsofts langfristiger Strategrie zur Entwicklung von Software im Allgemeinen interessiert ist, sollte diese Seite des öfteren besuchen. Wie "Softwarefabriken" am Ende konkret aussehen werden, ist zwar noch ungewiss - auch für Microsoft. Aber eines scheint schon jetzt sicher: Die Entwicklung von Software wird sich ändern müssen hin zu einer "Industrialisierung", d.h. mehr arbeitsteilige und spezialisierte Produktion statt "Kunsthandwerk". http://msdn.microsoft.com/architecture/overview/softwarefactories/ Web Sites von Magazinen für .NET Entwickler ------------------------------------------- ASP.NET Professional, http://www.aspnet-professional.de/ CODE Magazine, http://www.code-magazine.com (engl.) DNJ, http://www.dnjonline.com/ (engl.) dot.net Magazin, http://www.dotnet-magazin.de dotnetpro, http://www.dotnetpro.de/ MSDN Magazine, http://msdn.microsoft.com/msdnmag/ (engl.) MSDN Online, http://www.msdnonline.de .NET Developer´s Journal, http://www.sys-con.com/dotnet/index.cfm (engl.) Windows Developer Network, http://www.windevnet.com (engl.) ================== Sie erhalten diesen Newsletter, weil Sie mit mir auf die eine oder andere Weise persönlich Kontakt hatten, z.B. durch ein Gespräch auf einer Konferenz oder durch eine Anfrage per Email oder durch eine explizite Registrierung. Ich hoffe, Sie empfinden den Newsletter daher als positive kostenlose Dienstleistung. Sollte das nicht der Fall sein, deregistrieren Sie sich bitte jederzeit durch einen Reply auf den Newsletter mit einem Betreff wie "Deregistrierung" oder "Abmeldung". Anmeldungen für den Newsletter sind natürlich auch jederzeit möglich. Am besten durch eine Email an readersdigest@ralfw.de mit einem eindeutigen Betreff wie "Registrierung" oder "Anmeldung". Sollten Sie Anregungen für die Gestaltung des Newsletter haben, freue ich mich auf eine Email von Ihnen an readersdigestfeedback@ralfw.de. Der Readers' Digest erscheint in unregelmäßigen Abständen mehrfach pro Jahr.