Ralf Westphals Readers' Digest Nr. 6 ------------------------------------ Liebe Newsletter-Leser, es tut mir leid, dass Sie auf diese Ausgabe ein wenig warten mussten. Natürlich habe ich in den vergangenen Monaten auch viel gelesen - aber verschiedene Projekte haben mir irgendwie die Zeit geraubt, das Gelesene auch zu sortieren und für Sie aufzubereiten. Aber jetzt nach der PDC 2003 muss es wieder sein. Denn die Konferenz hat gezeigt, dass die Menge des zu Lernenden in den nächsten Monaten und Jahren nur steigen wird. Und deshalb tut Aussondern bzw. Empfehlen besonders Not. Insofern kann ich auch auf den obligatorischen Jahresanfangsevent in jedem Jahr hinweisen: Ende Januar 2004 findet wieder die OOP in München statt: http://www.sigs-datacom.de/sd/kongresse/oop_2004/index.htm Am 21.1.2004 wird es einen ganzen Tag um den .NET Framework gehen, aber auch darüber hinaus beschäftigen sich Vorträge mit dem Thema. Ich denke, es sind ein paar spannende Sessions zu erwarten. Nicht zuletzt wird am .NET Tag auch erstmalig die Zukunft des .NET Framework (.NET 2.0 und Windows Longhorn) vorgestellt. Wenn Sie Interesse haben, melden Sie sich mit Bezugnahme auf mich (!) jetzt noch bei der OOP an und nehmen Sie einen von SIGS eingeräumten Rabatt von 20% mit. Da ich den .NET Tag wieder moderieren werde, haben wir dann bestimmt auch eine Gelegenheit, uns persönlich auszutauschen. Und jetzt viel Spaß beim Stöbern in der Literaur... Ralf Westphal Lesenswerte Artikel ------------------- Creating Your Own Research Service for the Microsoft Office 2003 Research Library, Jan Fransen, CoDe Magazine http://www.code-magazine.com/focus/Article.aspx?quickid=0302052 Der Gedanke, dass uns Entwicklern die Arbeit ausgehen könnte, wenn Microsoft mit Entwicklungen in mancher Richtung so weitermacht (Anspielung auf einige ASP.NET 2.0 Features, die viel Codierungsaufwand sparen), entbehrt zum Glück jeder Grundlage. A case in point: Microsoft Office bekommt als gewichtiger Smart Client gerade mit Office 2003 richtig Fahrt. Excel, Word usw. sind komplette komplexe GUIs - die sich aber mit Backend-Logik versehen lassen. Und das wird mit Office 2003 noch einfacher bzw. vielfältiger. Der Artikel zeigt einen neuen API, mit dem Webservice-basierte Suchdienste in Dokumenten angeboten werden können. Wie ich finde, eine sehr spannende Sache in der Linie der schon etwas älteren Smart Tags. Warum also umständliche GUIs programmieren, wenn man sich auf Geschäftslogik konzentrieren kann? Parallel Computing with .NET Remoting, Eric Bergman-Terrell, Microsoft http://msdn.microsoft.com/library/?url=/library/en-us/dnhcvs03/html/vs03d1.asp Verteilte Anwendungen müssen nicht immer mit Datenbanken zu tun haben. Es geht auch anders! Wie wäre es z.B., wenn viele, viele parallel und verteilt laufende Prozesse - natürlich geschrieben in Managed Code - zusammen daran arbeiten würden, Pi auf möglichst viele Nachkommastellen genau zu berechnen? Eine Idee, die ich vor 2 Jahren hatte - aber nie umgesetzt habe, weil mir am Ende dann doch einige mathematische Kenntnisse gefehlt haben. Cool finde ich ein solches Projekt aber immer noch und ich denke, es ließe sich damit auch positive PR für den .NET Framework erzeugen. Dieser Artikel hat nun die Idee unabhängig von mir umgesetzt. Das ist interessant zu lesen und 'mal ein ganz anderes Szenario für .NET Remoting. Aber vielleicht ist das Thema auch noch nicht ausgeschöpft. Denn zu einem PR-Ereignis hat es noch nicht gereicht. Wer also Lust hat, daran zu arbeiten, der melde sich doch einfach mal bei mir. Vielleicht können wir die Idee und Technik des Artikels vertiefen und öffentlicher anwenden. WS-Security Drilldown in Web Services Enhancements 2.0, Don Smith, Microsoft http://msdn.microsoft.com/webservices/building/wse/default.aspx?pull=/library/en-us/dnwebsrv/html/wssecdrill.asp Webservices werden schrittweise erwachsen. Features, die zu Beginn schmerzlich vermisst wurden - insbesondere mangelnde Sicherheit -, werden nachgereicht. Der Artikel zeigt, wie der Stand der Dinge der Absicherung von Webservices ist. Serving Images from .NET Assemblies, Morgan Skinner, Microsoft http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/servingimages.asp Der Artikel serviert Bilder im Internet einmal anders. Er zeigt, dass Bilder nicht unbedingt als Dateien oder Datenbankblobs vorliegen müssen, sondern in Assemblies eingebettet sein können. Das kann die Verteilung von Bildern vereinfachen und sie sogar sicherer machen. Applikations- und Systemmanagement mit WMI.NET - Schweizer Taschenmesser für Entwickler, Dirk Primbs, dotnetpro http://www.dotnetpro.de/community/freearticles/pdf/2003-11-wmi.pdf Möglichst große Kontrolle über ein System zu haben, ist eigentlich immer ein mehr oder weniger explizites Ziel von Software. Und WMI kann dabei helfen. Mit WMI lassen sich "Parameter" des lokalen Rechners oder auch anderer Rechner im Netzwerk abfragen und setzen. WMI ist ein umfassendes Instrumenatrium zur Kontrolle von Rechnersystemen. Insofern gehören Grundkenntnisse über WMI eigentlich in den Wissenskanon jedes Entwicklers. Der Artikel vermittelt solche Grundkenntnisse und zeigt, wie mit WMI aus Managed Code heraus gearbeitet werden kann. Design Your Own Weblog Application from Scratch Using ASP.NET, JavaScript, and OLE DB, Marco Bellinaso, MSDN Magazine http://msdn.microsoft.com/msdnmag/issues/03/10/Blogging/default.aspx Der Artikel zeigt im Rahmen einer kleinen, aber vollständigen Blog-Anwendung, wie Master-Detail-Beziehungen, also hierarchische Daten, auf WebForms mit dem Repeater-Steuerelement angezeigt werden können. More on Generics in the CLR, Jason Clark, MSDN Magazine http://msdn.microsoft.com/msdnmag/issues/03/10/NET/default.aspx Über Generics in der nächsten Version von C# wurde schon viel hier und dort berichtet. Dieser Artikel geht dankenswerter Weise aber einmal tiefer. Wer also etwas mehr Vorgeschmack auf C# 2.0 haben möchte, sollte hier einmal hineinlesen. Deploying Assemblies, Ted Pattison, MSDN Magazine http://msdn.microsoft.com/msdnmag/issues/03/10/BasicInstincts/default.aspx Hübsche Zusammenschau der drei Wege um Assemblies zu deployen: lokal (privat), zentral (GAC), beliebig. Insbesondere die letzte Möglichkeit des beliebigen Deployments von Assemblies auch auf einem Rechner und ihre Referenzierung über in der config-Datei wird ansonsten wenig besprochen, aber hier ausführlich dargestellt. Cryptography Simplified in Microsoft .NET, Paul D. Sheriff, Microsoft http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/cryptosimplified.asp Einen Hash für ein Dokument zu berechnen oder es gar zu verschlüsseln ist endlich mit dem .NET Framework nicht mehr schwer. Aber den Einstieg in den Kryptographie API in System.Security zu finden, ist nicht so leicht. Der Artikel geht da, finde ich, einen schön pragmatischen Weg. Eine lohnende Lektüre ohne Theorieballast für einen Überlick. Jumping into ASP.NET Part 2: Creating the Data Storage Layer with SQL Server 2000, Mike Amundsen, Microsoft http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/aspnet-jumpinto-part2.asp Bei dem Titel denkt man schnell, es ginge um Komponenten für den Datenbankzugriff, also ADO.NET Programmierung. Aber weit gefehlt! Der Artikel beschäftigt sich mit der Einrichtung einer Datenbank inkl. Stored Procedures. Die Datenbankmodellierung ist dabei am uninteressantesten. Gut hat mir gefallen, dass gezeigt wird, wie Stored Procs mit VS.NET verwaltet werden können, wie der Zugriff auf eine Datenbank für ASP.NET Anwendungen mit Windows User Accounts beschränkbar ist (inkl. Impersonation für die ASP.NET Anwendung) und das VS.NET komplette Scripts zur Erzeugung einer SQL Server-Datenbank generieren kann. The Flowchart Lie, Ingo Rammer http://www.ingorammer.com/ArchitectureBriefings/TheFlowChartLie.pdf Mein Microsoft Regional Director Kollege Ingo Rammer spricht mit mit diesem Artikel in seinem Newsletter (http://www.ingorammer.com/NL) aus dem Herzen: Zuviele Verarbeitungsschritte in heutigen (größeren?) Anwendungen werden immer noch synchron ausgeführt - und gehen damit zu Lasten der Benutzer, die auf ihre Beendigung warten müssen. Und nicht nur das: Synchrone verarbeitung koppelt Programmteile auch enger und macht damit die Anwendungsarchitektur komplexer, weniger transparent, weniger modular. Ich meine also, der Artikel ist ein "must read"! Insbesondere, weil er eine der Ursachen für das Denken in synchronen Verarbeitungsschritten offenlegt: Den Programmentwurf mit Flowcharts. Lesenswerte Bücher ------------------ *Thread- und Netzwerk- Programmierung mit Java. Praktikum für die Parallele Programmierung, Heinz Kredel und Akitoshi Yoshida, Dpunkt Verlag 2002 http://www.amazon.de/exec/obidos/ASIN/3898641333/ralfwestphalh-21 Parallelprogrammierung ist gerade für VB6-Programmierer wie mich bisher kein Thema gewesen. Wir haben also Nachholbedarf in Sachen Multithreading, denn das Konzept ist in manchen Fälle sehr nützlich. Die Technik ist leicht zugänglich im Namespace System.Threading und wie ein Thread gestartet und angehalten wird, ist schnell gelernt. Aber bis zu einem soliden Verständnis der Fallstricke bei der Entwicklung nebenläufiger Prozesse in puncto Zugriff auf gemeinsame Ressourcen, Synchronisation, Vermeidung von Deadlocks usw. ist es dann noch ein ganzes Stück. Da der .NET Framework immer noch vergleichsweise neu ist, fehlt dazu jedoch leider noch grundlegene Literatur. Für die Java Plattform allerdings ist sie reichhaltig vorhanden. Das obige Buch (und das folgende) haben mir sehr geholfen beim Aufholen von Wissen. Insbesondere "Thread- und Netzwerkprogrammierung" bietet eine Einführung, die auch die Theorie nicht vernachlässigt. Dass die Titel mit Java arbeiten, ist übrigens nicht nachteiligt. Auch ich konnte die Codebeispiele verstehen - und nach VB.NET (oder C#) übertragen. *Concurrent Programming in Java. Design Principles and Patterns, Doug Lea, Addison Wesley 2000 http://www.amazon.de/exec/obidos/ASIN/0201310090/ralfwestphalh-21 *Windows Multithreading mit C++ und C#, Olaf Neuendorf, mitp 2003 http://www.amazon.de/exec/obidos/ASIN/3826609891/ralfwestphalh-21 In den API des .NET Framework zur Parallelprogrammierung führt dieses Buch sehr umfassend ein, weil es sowohl die Grundlagen dafür im Win32 API behandelt, wie deren Abbildungen in die Klassenbibliothek des .NET Framework. Es ist technologisch also grundlegend, nicht aber konzeptionell (das Kapitel über Entwurfsmuster kann diesen Eindruck nicht entschärfen). Daher würde ich zum Einstieg in das Multithreading die Kombination mit dem obigen "Thread- und Netzwerkprogrammierung mit Java" empfehlen. (Ich freue mich übrigens, dass beide Bücher von deutschen Autoren geschrieben wurden. Gute Fachbücher müssen also nicht immer aus den USA importiert werden.) (Auch wenn ich eigentlich nur Empfehlungen aussprechen möchte, so erlaube ich mir an dieser Stelle einmal, von einem auch abzuraten, weil es keinen Nachteil mehr für den Verlag bedeutet: Wrox Publishing gibt es nicht mehr. Von dem Titel "Visual Basic .NET Threading Handbook" (http://www.amazon.de/exec/obidos/ASIN/1861007132) hatte ich mir viel versprochen, weil ich das Format des "Handbook" sehr mag. Nach dem Einstieg in die Lektüre allerdings war ich sehr enttäuscht. Weite Passagen führen in den Gebrauch der System.Threading-Klassen nur mit recht trivialen Beispielen ein. Das Konzept, mehrere Autoren am Buch zu beteiligen, ist, scheint mir, "nach hinten losgegangen" zu sein - und ein technisches Lektorat mit Verständnis für das Thema und einer Vision für das Buch hat es auch nicht recht gegeben. Schade.) Interessante Links ------------------ http://www.datagridgirl.com/ 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.) .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 periodisch ca. alle 14 Tage.