Ralf Westphals Readers' Digest Nr. 2 ------------------------------------ Liebe Entwickler, die Menge der Veröffentlichungen zum Thema "Softwareentwicklung auf der Microsoft Plattform" ist angesichts der Zahl von Zeitschriften, Büchern und Web-Sites kaum noch für den in immer dringende Projekte eingebundenen Entwickler zu bewältigen. Da es zu meinem Job als Softwaretechnologievermittler und Microsoft MSDN Regional Director gehört, viel zu lesen, habe ich mir überlegt, ob und wie ich in dieser Situation helfen kann. Meine Antwort: Statt durch Artikel oder Buch zur Informationsflut selbst beizutragen, möchte ich in diesem Newsletter einmal auf Lesenswertes, bereits Geschriebenes in verschiedenen Medien hinweisen. Meine Auswahl ist natürlich subjektiv und enthält nur, was mir persönlich positiv aufgefallen ist - vielleicht hilft sie Ihnen ja aber doch ein wenig bei der Bewältigung des Zeitschriften- und Bücherstapels. Ich wünsche viel Spaß beim Lesen! Ralf Westphal Freier Autor und Berater Microsoft MSDN Regional Director www.ralfw.de Lesenswerte Artikel ------------------- *What´s New in Visual Studio 1.1?, Juwal Löwy, CoDe Magazine, March/April 2003 http://www.code-magazine.com/Article.aspx?QuickID=0303121 Eine schöne Übersicht neuer Features in VS.NET. Es geht also um Intellisense-Verbesserungen und neue Projekteigenschaften, nicht um neue Befehle in VB.NET oder dergleichen. Wussten Sie z.B., dass VS.NET grundsätzlich dafür vorbereitet ist, mit anderen Versionen der Common Language Runtime zu arbeiten als dem .NET Framework? Wie wäre es, mit VS.NET Mono-Anwendungen zu schreiben? Es scheint möglich und sogar von Microsoft vorausgedacht. Anmerkung: Das CoDe Magazin (www.code-magazine.com) ist leider in Deutschland so gut wie unbekannt. Hervorgegangen aus einer Visual FoxPro Publikation hat es sich aber inzwischen auf das Thema .NET gestürzt und liefert viele gute Beiträge. *Using the ASP.NET Runtime to Extend Desktop Applications with HTML Scripts, Rick Strahl, CoDe Magazine March/April 2003 http://www.code-magazine.com/Article.aspx?QuickID=0303131 Sehr interessante Demonstration, wie die komplette ASP.NET Infrastruktur ohne IIS in eigenen Anwendungen gehostet werden kann. Damit eröffnen sich ganz neue Möglichkeiten für Applikationen: von der Auslieferung von ASP.NET Anwendungen auf CD mit Autostart beim Einlegen bis zur generativen Programmierung mittels ASP.NET Seiten. Viel Stoff zum Spielen und Nachdenken. *A Not-So-Quick Tour of the Web DataGrid Control, Dino Esposito, CoDe Magazine, March/April 2003 http://www.code-magazine.com/Article.aspx?QuickID=0303091 Eine pragmatische Einführung in das ASP.NET Databinding mit dem DataGrid-Control. Der Umfang ist genau richtig für einen Einstieg in die Web-Programmierung. Dass Dino hier Material aus seinem empfehlenswertes Buch "Building Web Solutions" (s.u.) verarbeitet hat, ist kein Nachteil. ***Thema No-Touch-Deployment *Security and Versioning Models in the Windows Forms Engine Help You Create and Deploy Smart Clients, Chris Sells, MSDN Magazine July 2002 http://msdn.microsoft.com/msdnmag/issues/02/07/NetSmartClients/ Intranetanwendungen waren bisher synonym mit HTML und ASP, als typischen Web-Anwendungen. Der Grund: einfacheres Deployment. Für Web-Anwendungen müssen keine Veränderungen an Client-PCs vorgenommen werden, weil sie zental installiert werden und ablaufen. Mit dem .NET Framework ändert sich das Bild jedoch entscheidend. Er ermöglicht sog. "No Touch Deployment" (NTD), d.h. die automatische (!) Installation von "normalen" Anwendungen bestehend aus mehreren Assemblies allein durch Angabe einer URL, z.B. http://www.meinedomain.de/CRM/main.exe. main.exe würde automatisch auf den Client heruntergeladen (auf dem der .NET Framework installiert sein muss) und gestartet, wenn Sie die URL in das IE Adressfeld eingäben. Damit sinkt die Notwendigkeit zur Programmierung von Web-Anwendung erheblich, wann immer Sie Kontrolle über die Client-PCs haben und sicherstellen können, dass darauf der .NET Framework installiert ist. Sie müssen also nicht mehr auf das unhandlichere Web-Programmiermodell umsteigen, nur weil Sie vielen Clients ohne großen Installationsaufwand eine Anwendung zur Verfügung stellen wollen. Mit NTD können Sie das gleiche erreichen, ohne sich auf die umständliche Gestaltung von HTML-Seiten einzulassen. Der Artikel ist zwar schon etwas älter, aber durchaus grundlegend. Eine gute Einstiegslektüre zum Thema NTD. *Launching No-Touch Deployment Applications with Command Line Arguments, Chris Sells, MSDN Online May 2003 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnforms/html/winforms05152003.asp NTD ist für die Windows Softwareentwicklung revolutionär und eine echte Alternative zur ASP.NET Programmierung im Intranet. Aber NTD hat auch seine Lücken. Der Artikel schließt eine dieser Lücken: die Übergabe von Kommandozeilenparametern an Programme, die per URL aufgerufen werden. *Patterns & Practices: Updater Application Block, Microsoft 2003 http://www.microsoft.com/downloads/details.aspx?familyid=c6c17f3a-d957-4b17-9b97-296fb4927c30&displaylang=en Im Zusammenhang mit NTD ist auch dieser Application Block von Microsoft interessant, mit dem sich auch komplexere Anwendungen mit möglichst wenig manuellem Aufwand verteilen und aktuell halten lassen. ***Thema Property Grid Control Anlässlich eines Postings in einer dotnetpro Newsgroup bin ich wieder auf das PropertyGrid-Control gestoßen. Ich finde, es ist das am meisten unterschätzte Control in der VS.NET Toolbox. Das Formulardesign (insb. in einer ersten Phase der Software-Frontendentwicklung) ließe sich damit radikal vereinfachen. Mit einem PropertyGrid kann man Anwendern Funktionalität zum Testen geben, ohne großen Aufwand in das Layout von Fenstern gesteckt zu haben. Design und Code lassen sich damit auch bei WinForms lange Zeit trennen. Mit einem geeigneten Framework drumherum, ist es dann sogar möglich, schrittweise PropertyGrid-basierte Dialoge umzuwandeln in solche, die "von Hand gesetzt" wurden. Der Engpass UI-Gestaltung gerade bei formularreichen Geschäftsanwendungen kann damit erheblich entschärft werden. Nachfolgend einige Artikel, die ich zum Thema gefunden habe: *Make Your Components Really RAD with Visual Studio .NET Property Browser, Shawn Burke, MSDN Online http://www.microsoft.com/germany/ms/msdnbiblio/show_all.asp?siteid=547828 *Optimale Nutzung des PropertyGrid-Steuerelements in .NET Framework, Mark Rideout, MSDN Online Deutschland http://www.microsoft.com/germany/ms/msdnbiblio/show_all.asp?siteid=547828 *Using PropertyGrid - Part I, Sreenivas Vemulapalli, The Code Project http://www.codeproject.com/useritems/Using_PropertyGrid.asp *Build Flexible UIs With Ease, Jonny Anderson, Visual Studio Magazine http://www.fawcette.com/vsm/2003_08/magazine/features/anderson/default_pf.asp *Customized display of collection data in a PropertyGrid, Gerd Klevesaat, The Code Project http://www.codeproject.com/cs/miscctrl/CustomizingCollectionData.asp Anzeigen mehrerer Objekte innerhalb eines PropertyGrid. Auf der einen Seite war ich überrascht zu sehen, dass das geht. Auf der anderen Seite ist es aber eigentlich selbstverständlich und demonstriert, wie universell Microsoft das PropertyGrid ausgelegt hat, denn es wird an vielen Stellen in VS.NET eingesetzt, z.B. zur Bearbeitung von Steuerelementeigenschaften, aber auch zur Anzeige der Inhalte von Variablen während des Debuggens. (Und das bedeutet, dass man sogar Bäume im PropertyGrid anzeigen kann.) *Globalized property grid, Gerd Klevesaat, The Code Project http://www.codeproject.com/cs/miscctrl/globalizedpropertygrid.asp Wie kann man Label und Beschreibung einer Property lokalisieren? *Globalized property grid- Revisted, Gerd Klevesaat, The Code Project http://www.codeproject.com/cs/miscctrl/GPG_Revisited.asp Lokalisierung von Kategorienbezeichnungen und Behandlung von Vererbungsbäumen. *Bending the .NET PropertyGrid to Your Will, Tony Allowatt, The Code Project http://www.codeproject.com/cs/miscctrl/bending_property.asp Stellt generische PropertyDescriptor-Klasse vor, um den Aufwand zu reduzieren, damit eigene Typen ausführlich für die Anzeige im PropertyGrid beschrieben werden. ***Thema Anwendungsarchitektur *Application Architecture for .NET: Designing Applications and Services, Microsoft December 2002 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/distapp.asp Über einzelne Technologie wie WinForms, Remoting, ADO.NET gibt es Unmengen an Informationen. Darüber allerdings, wie diese Technologien zusammenspielen und nach welchen Prinzipien ganze Anwendungen gebaut werden sollten, gibt es traditionell wenige Hinweise vom Technologiehersteller Microsoft. Es ist daher sehr erfreulich, dass Microsoft in den letzten Monaten viel Aufwand getrieben hat, um die Softwareentwicklung auf eine höhere Abstractionsebene zu heben. Im Patterns & Practices (http://www.microsoft.com/resources/practices/) Bereich gibt Microsoft sehr konkrete Empfehlungen dazu, wie mit den eigenen Technologien umgegangen werden sollte. Sehr lesenswert ist dabei dieses Paper zur Architektur von Anwendungen. Auf 166 (!) Seiten beschreibt es den Aufbau von (verteilten) Anwendungen auf allen Ebenen: vom User Interface bis zum Datenzugriff. *Architecture of an Autonomous Application, Sten & Per Sundblad, MSDN Magazine July 2003 http://msdn.microsoft.com/msdnmag/issues/03/07/DesignPatterns/default.aspx Zum Thema Anwendungsarchitektur lohnt sich auch der Überblicksartikel von Per & Sten. Er erklärt grob die Konzepte von Fiefdom und Emissary, die als Patterns verteilten Anwendungen zugrunde gelegt werden können. Und es wird klar: Die Zukunft gehört Anwendungen bestehend aus lose gekoppelten Subsystemen. *** Thema Performance *Writing High-Performance Managed Applications: A Primer, Gregor Noriskin, MSDN Online http://msdn.microsoft.com/library/?url=/library/en-us/dndotnet/html/highperfmanagedapps.asp Ausführliche Beschreibung der Auswirkung von Speicherverwaltung und IL-JIT auf die Anwendungsperformance. Performancetipps sind für den schnellen Überblick als Bulletpoints hervorgehoben. Gute Grundlageninformation. Writing Faster Managed Code: Know What Things Cost, Jan Gray, MSDN Online http://msdn.microsoft.com/library/?url=/library/en-us/dndotnet/html/fastmanagedcode.asp Wer nach dem ersten Performance-Artikel noch Lust hat, kann hier tiefer einsteigen. Es geht um die Messung einzelner Operationen (Artihmetische Op, Methodenaufrufe usw.) und auch grundsätzliche Gedanken. Interessant die Diskussion des Einflusses von Speicherausnutzung auf die Performance nicht nur im Hinblick auf die Garbage Collection, sondern auf den Cache-Inhalt. Lesenswerte Bücher ------------------ *Building Web Solutions with ASP.NET and ADO.NET, Dino Esposito, MSPress 2002 http://www.amazon.de/exec/obidos/ASIN/0735615780/ralfwestphalh-21 http://www.amazon.de/exec/obidos/ASIN/3860636634/ralfwestphalh-21 (Link zur deutschen Ausgabe) Umfassendes Buch über das weite Feld des Databinding in ASP.NET Anwendungen. Wer mit DataGrids in WebForms arbeiten will, der sollte dieses Buch unterm Kopfkissen liegen haben. *Design Patterns for Scalable Microsoft .NET Applications, Sundblad&Sundblad 2002 http://www.2xsundblad.com/eShop.aspx Eines der wenigen Bücher zum Thema Anwendungsarchitektur, das konkret auf die Microsoft Plattform zugeschnitten ist. Ein "must read" - wie auch das Application Architecture Paper von Microsoft (s.o.) -, selbst wenn Sie am Ende nicht in allen Details mit den Autoren übereinstimmen sollten. Hier wie dort geht es einfach darum, dass langsam ein allgemeines gemeinsames Verständnis über die Grundlagen von Anwendungsdesigns etabliert wird und eine Terminologie entsteht. ================== 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.