Microsoft .NET 4.0 – Crashkurs

Dr.. Holger Schwichtenberg

Published by Microsoft Press Deutschland

Für Heidi und Felix

Vorwort

Liebe Leserin, lieber Leser,

vor Ihnen liegt die nun schon fünfte Ausgabe meines Buchs .NET Crashkurs. Mit diesem Vorwort möchte ich Sie über Inhalt, Zielsetzung und Aufbau des Buchs informieren, um Ihnen damit eine Hilfe für die Entscheidung zu geben, ob und wie Sie dieses Buch lesen möchten.

Besprochene Version

Nachdem Microsoft drei Jahre lang jeweils im November eine neue .NET-Version veröffentlicht hat (November 2005: .NET 2.0, November 2007: .NET 3.0, November 2007: .NET 3.5), hat sich der Zyklus nun etwas verändert. Im August 2008 erschien .NET 3.5 Service Pack 1 (alias .NET 3.5.1) mit so umfangreichen Neuerungen, dass man es auch .NET 3.7 hätte nennen können. Im Jahr 2009 erschien gar keine neue .NET-Version. Erst im April 2010 kam .NET 4.0 zur Welt.

Dieses Buch thematisiert die endgültige Version des .NET Framework 4.0 und der zugehörigen Entwicklungsumgebung Visual Studio 2010. Ein Service Pack ist für diese Versionen noch nicht öffentlich angekündigt (wird aber sicher kommen). Im Buch berücksichtigt sind auch einige ausgewählte Erweiterungen von Visual Studio 2010, die zwischen April 2010 und Oktober 2010 (Redaktionsschluss) erschienen sind.

Zielsetzung: Konzepte und deren Umsetzung in .NET

Zielsetzung dieses Buchs ist es, die zentralen Konzepte von .NET 4.0 zu beschreiben und anhand ausgewählter Beispiele den Einsatz von .NET 4.0 und der Entwicklungsumgebung Visual Studio 2010 darzustellen. Sie können von diesem Werk einen kompakten Überblick erwarten, mit dem Sie schnell in zahlreiche Teile des Themengebiets hineinfinden. Das Buch liefert neben der Beschreibung der Funktionen auch zahlreiche Beispiele und eine Bewertung des aktuellen Zustands der Produkte. Dieses Werk ist unabhängig von den Produktabteilungen und dem Vertrieb im Hause Microsoft entstanden.

Das Buch ist nicht zu verwechseln mit einer »Schritt-für-Schritt«Anleitung zum Erlernen von Details. Sehr erfahrenen Softwareentwicklern reicht dies für den Einstieg. Weniger erfahrene Entwickler werden aber eine detaillierte Anleitung benötigen. Es gibt zahlreiche Bücher am Markt, die »Schritt-für-Schritt« in C#, VB, ASP.NET etc. einführen.

Das Buch thematisiert die neueste Version .NET 4.0. Frühere Ausgaben dieses Buchs thematisieren .NET 2.0 und .NET 3.0 bzw. .NET 3.5 SP1.

Zielgruppe: Umsteiger von anderen objektorientierten Sprachen

Der .NET 4.0 Crashkurs richtet sich primär an Softwareentwickler, Softwarearchitekten und Projektleiter, die von einer anderen objektorientierten Sprache (wie C++, Delphi, Java, Visual Basic 6.0) auf .NET umsteigen wollen und noch keine bzw. wenig Erfahrung mit den früher erschienenen Versionen des .NET Framework besitzen.

Man braucht für die Lektüre dieses Buchs also keine Vorkenntnisse in .NET, aber man sollte gute Vorkenntnisse in objekt- und komponentenorientierter Programmierung besitzen. Außerdem sollten Sie die grundsätzliche Funktionsweise einer integrierten Entwicklungsumgebung und visueller Gestaltungswerkzeuge kennen. Dieses Buch eignet sich überhaupt nicht für Personen, die Programmierung erst von Grund auf erlernen wollen.

Grundsätzlich kann dieses Buch für Umsteiger einer früheren .NET-Version hilfreich sein. Allerdings werden Umsteiger viele Ausführungen in diesem Buch schon kennen. Umsteiger von früheren .NETVersionen sind nicht die primäre Zielgruppe dieses Buchs.

Schwesterbuch: .NET 4.0 Update (nur die Neuerungen!)

Erstmals zu .NET 4.0 habe ich auch ein Buch geschrieben, dass sich an Entwickler richtet, die bereits mit der vorherigen Version (also .NET 3.5 SP1) gearbeitet haben. Dieses Buch, das ausschließlich die Neuerungen beschreibt, ist im September 2010 bei Microsoft Press unter ISBN 978-3-86645-443-9 erschienen. Manfred Steyer war dabei mein Co-Autor. Wenn Sie bereits Erfahrungen mit .NET 3.5 haben, sollten Sie sich eher .NET 4.0 Update als .NET 4.0 Crashkurs durchlesen.

Naturgemäß wurden einzelne Passagen aus .NET 4.0 Update in .NET 4.0 Crashkurs übernommen.

Keine Vollständigkeit

Wenn es Kritik an den bisherigen Ausgaben dieses Buchs gab, dann bezog diese sich oft darauf, dass bestimmte Funktionen von .NET in diesem Buch entweder zu kurz oder gar nicht dargestellt wurden. Anhand einiger Zahlen möchte ich aufzeigen, dass eine Vollständigkeit in diesem Buch unmöglich ist: Das .NET Framework 4.0 besteht mehr als 10.000 öffentlichen (d.h. vom Entwickler nutzbaren) Klassen (.NET 2.0: 5684, .NET 3.0: 8714, .NET 3.5: 9326). Hinzu kommen die nicht so leicht zählbaren Funktionen der Werkzeuge (wie Visual Studio) und ergänzende .NET-basierte Bibliotheken (z.B. von Microsoft SharePoint und Microsoft SQL Server). Denjenigen, die meinen, dass ein Thema in diesem Buch nicht (ausführlich genug) enthalten sei, möchte ich die Gegenfrage stellen: Wie soll es möglich sein, so viele Funktionen auf rund 1000 Seiten überhaupt erwähnen zu können?

Dieses Buch kann also gar nicht den Anspruch auf Vollständigkeit erheben. Das kann kein .NET-Buch, denn so viel Wissen kann man gar nicht in ein gedrucktes Buch fassen. Das vorliegende Buch zeigt einen repräsentativen und praxisnahen Ausschnitt. Ich erwähne in diesem Buch im Wesentlichen die Funktionen, die die meisten Entwickler in den ersten Monaten mit .NET benötigen werden. Dabei zeige ich diese Funktionen nicht vollständig, sondern exemplarisch. Sicherlich ist die Auswahl der Funktionen durch meinen persönlichen Alltag als .NET-Softwarearchitekt und -entwickler geprägt.

Im .NET 4.0 Crashkurs stehen Konzepte im Vordergrund, nicht kleinste Details. Dieses Buch ist nicht als Ersatz für die Produktdokumentation einsetzbar, sondern dient dem Einsteiger als Erläuterung der wichtigsten Konzepte und Werkzeuge.

Ich musste also einige Themeneinschränkungen vornehmen. Basis für diese Themeneinschränkungen sind meine Erfahrungen in Entwicklungsprojekten, Beratungseinsätzen und Schulungen sowie Gesprächen mit Lesern. Im Abschnitt „Themeneinschränkungen“ lesen Sie, welche .NET-Themen nicht in dem Buch vorkommen.

Quellen

Der Inhalt dieses Buchs basiert auf folgenden Quellen:

Erfahrungen des Autors mit .NET in Kundenprojekten seit Version 1.0 Beta im Jahr 2000

»What’s New«-Listen in der Visual Studio 2010-Dokumentation

Einträge in Weblogs der Produktteams

Weitere Kapitel per Download

Das .NET Framework wächst immer wieder. Die Seitenanzahl in diesem Buch ist leider durch die verlegerischen Vorgaben begrenzt und kann nicht proportional mit dem .NET Framework wachsen. Daher wurden in dieser Ausgabe Maßnahmen ergriffen, um Seiten einzusparen:

Die Themen Windows Forms und LINQ to SQL wurden aus dem gedruckten Buch verbannt. Windows Forms und LINQ to SQL gibt es zwar auch in .NET 4.0 noch im Framework, aber es gibt inzwischen mit Windows Presentation Foundation (WPF) und dem ADO.NET Entity Framework (EF) etablierte Alternativen. Als Service für Sie als Leser können Sie die entsprechenden Kapitel auf der Leser-Website kostenfrei als PDF herunterladen.

Windows Workflow Foundation (WF) wurde zwar in .NET 4.0 komplett überarbeitet, ist aber weiterhin ein Randthema. Es wurde daher aus dem gedruckten Buch verbannt. Sie können sowohl das alte Kapitel zu Workflow 3.5 als auch ein Kapitel zu Workflow 4.0 als PDF auf der Leser-Website herunterladen.

Bereits in der Vorauflage wurde das Kapitel ».NET Remoting« gestrichen, da diese Technologie in der Regel heute meist durch den Einsatz der Windows Communication Foundation (WCF) ersetzt wird. Das Kapitel zu .NET Remoting aus der 3. Auflage können Sie als PDF noch über die Leser-Website herunterladen.

Ebenso ausgelagert als PDF ist das Kapitel über .NET Enterprise Services und Transaktionen.

Wie schon in der Vorauflage sind die Themen ASP.NET und AJAX als PDF ausgelagert (in der 4. Auflage gab es dazu einen getrennten gedruckten Band.

Einen Überblick über alle zum Download verfügbaren Kapitel erhalten Sie in Anhang A.

Download statt CD-ROM

Aus Kostengründen kann der Verlag dem Buch leider keine CD-ROM beilegen (sonst müsste die Seitenanzahl noch weiter reduziert werden). Sie können alle Codebeispiele aus dem Buch von der Leser-Website (siehe Abschnitt „Leserservice“) herunterladen. Das .NET Framework, die Entwicklungsumgebung Visual Studio und weitere im Buch erwähnte Komponenten können Sie direkt bei Microsoft (www.microsoft.com) bzw. bei den jeweils genannten Anbietern herunterladen.

Komplexeres Fallbeispiel

Viele Fachbücher verwenden kleine, isolierte Beispiele auf »Hello World«-Niveau, die zwar einfach zu überschauen sind, aber weder die Architektur einer komplexen .NET-Anwendung noch das Zusammenspiel verschiedener Techniken aufzeigen. Dieses Buch unterscheidet sich deutlich von diesem »Hello World«-Ansatz, indem in weiten Teilen ein durchgehendes Fallbeispiel (die Fluggesellschaft »WordWideWings«) verwendet wird. Das Fallbeispiel ist mehrschichtig (mit mehr als drei Schichten) aufgebaut und besitzt mehrere verschiedene Clients (Windows, Web, Befehlszeile).

Das Fallbeispiel hat den Vorteil, dass Sie im Laufe des Buchs die Daten und Klassen wiedererkennen werden und sich ein großer Grad von Wiederverwendbarkeit in dem entwickelten Code ergibt. Als Nachteil hat sich bei den bisherigen Ausgaben gezeigt, dass weniger erfahrene Softwareentwickler Schwierigkeiten hatten, in das Beispiel hineinzufinden. Ich habe mich aber entschlossen, mit diesem Buch auf die Zielgruppe zu fokussieren, die sich ein großes zusammenhängendes Beispiel wünscht. Mit einem Produkt alle Zielgruppen ansprechen zu wollen, ist meist kein erfolgreicher Ansatz.

Die Qual der Wahl: Programmiersprache und Werkzeuge

Für einige Softwareentwickler steht die Entscheidung fest, andere hingegen haben die Qual der Wahl zwischen den verschiedenen .NET-Programmiersprachen und Entwicklungswerkzeugen. Auch Autoren von .NET-Fachbüchern stehen vor dieser Wahl. Nur sehr selten lassen es die wirtschaftlichen Rahmenbedingungen zu, ein Buch in mehreren Varianten (mit verschiedenen Sprachen und Werkzeugen) zu erstellen.

Für dieses Buch gab es nur die Möglichkeit, die beiden primären .NET-Sprachen (C# und Visual Basic .NET) in einem einzigen Buch zu mischen und sowohl Visual Studio 2010 als auch das »rohe« .NET Framework 4.0 zu behandeln. Primär befasst sich das Buch jedoch mit C# und Visual Studio, weil die meisten .NET-Entwickler inzwischen diese Kombination einsetzen.

Alle Leser, die lieber mit Visual Basic .NET arbeiten, möchte ich darauf hinweisen, dass die Transformation zwischen Visual Basic und C# sehr einfach ist: Es existieren kostenlose Werkzeuge, die dies per Mausklick erledigen (siehe http://www.dotnetframework.de/tools.aspx). Ich selbst arbeite übrigens im Entwickleralltag zu 75% mit C# und zu 25% mit Visual Basic .NET.

Das .NET Framework und das zugehörige SDK sowie die sogenannten Express-Editionen der Entwicklungsumgebung Visual Studio 2010 sind kostenlos auf der Microsoft Website verfügbar.

Sprachversion

Dieses Buch beschreibt die englische Version von Visual Studio 2010, weil inzwischen viele deutsche Entwickler (einschließlich meiner eigenen Person) die englische Version der Software bevorzugen, da die Übersetzungen ins Deutsche oft holprig sind und die Fehlermeldungen nur schwerer verständlich machen. Als Kompromiss zwischen dem Kundenkreis mit englischsprachiger und deutschsprachiger Entwicklungsumgebung wird dieses Buch – so oft es möglich ist, ohne den Lesefluss zu stören – sowohl die deutschen als auch die englischen Namen der Menüpunkte nennen. Die Bildschirmabbildungen sind aus Platzgründen allerdings immer nur in einer Sprache abgedruckt.

Weiterhin möchte ich noch darauf hinweisen, dass die Anordnung der Menüs und auch einige Tastaturkürzel von den gewählten Einstellungen in Visual Studio 2010 abhängen. Alle Ausführungen in diesem Buch beziehen sich auf die Umgebungseinstellung Allgemeine Entwicklungseinstellungen, die bei der Installation des Produkts ausgewählt werden kann.

Danksagungen

Meinen Dank für ihre Mitwirkung an diesem Buch möchte ich aussprechen an

meinen Kollegen Manfred Steyer, der mir gestattet hat, einzelne von ihm geschriebene Abschnitte aus unserem gemeinsamen .NET 4.0 Update in dieses Buch zu übernehmen.

dem Most Valuable Professional (MVP)-Programm bei Microsoft, das mir den direkten Zugang zu Microsoft-Software und Hintergrundinformationen ermöglicht hat.

der Microsoft Press-Lektorin Sandra Michel, die dieses Buch von Verlagsseite betreut hat,

meinem Assistenten Sebastian Stein, der für mich einige Bildschirmabbildungen auf die neue Version übertragen hat,

dem Fachlektor Klaus Löffelmann, der die Inhalte des Buchs und die Codebeispiele überprüft hat,

Silja Brands, die das Buch gesetzt hat,

die Korrektorin Kristin Grauthoff, die das Buch sprachlich verbessert hat.

Viel Erfolg beim .NET 4.0-Programmieren mithilfe dieses Buchs wünscht Ihnen

Dr. Holger Schwichtenberg

Essen, im Oktober 2010

Über den Autor Dr. Holger Schwichtenberg

Studienabschluss Diplom-Wirtschaftsinformatik an der Universität Essen

Promotion an der Universität Essen im Gebiet komponentenbasierter Softwareentwicklung

Seit 1996 selbstständig als unabhängiger Berater, Dozent, Softwarearchitekt und Fachjournalist

Geschäftsführung und Leitung der Softwareentwicklung der Firma www.IT-Visions.de

Mehr als 40 Fachbücher bei Microsoft Press, Addison-Wesley und dem Carl Hanser-Verlag und mehr als 500 Beiträge in Fachzeitschriften

Ständiger Mitarbeiter der Zeitschriften iX und dotnetpro sowie beim Online-Portal heise.de

Regelmäßiger Sprecher auf nationalen und internationalen Fachkonferenzen (z.B. TechEd, Microsoft IT Forum, BASTA, Advanced Developers Conference, OOP, VS One, Wirtschaftsinformatik, Net.Object Days, Windows Forum, DOTNET-Konferenz, XML-in-Action)

Zertifikate und Auszeichnungen von Microsoft:

Microsoft Most Valuable Professional (MVP)

Microsoft Certified Solution Developer (MCSD)

Mitglied im weltweiten Codezone Premier Website-Programm

Thematische Schwerpunkte:

Microsoft .NET Framework, Visual Studio, C#, Visual Basic .NET

.NET-Architektur/Auswahl von .NET-Technologien

Einführung von .NET Framework und Visual Studio/Migration auf .NET

Webanwendungsentwicklung mit IIS, ASP.NET, AJAX und Silverlight

Enterprise .NET, verteilte Systeme mit .NET insbes. Windows Communication Foundation

Relationale Datenbanken, XML, Datenzugriffsstrategien

Objektrelationales Mapping (ORM) insbes. ADO.NET Entity Framework

Windows PowerShell (WPS) und Windows Management Instrumentation (WMI)

Ehrenamtliche Community-Tätigkeiten:

Vortragender für die International .NET Association (INETA)

Betrieb der Community-Websites www.dotnetframework.de, www.windows-scripting.de und www.powershell-doktor.de

Firmen-Website: http://www.IT-Visions.de

Weblog: http://www.dotnet-doktor.de (bei Heise.de)

Kontakt: hs@IT-Visions.de sowie Telefon 0201 7490-700

Leserservice

Den Lesern dieses Buchs werden vom Autor folgende Serviceleistungen im Rahmen einer zugangsbeschränkten Website (»Leser-Website«) angeboten:

Weitere Themen als PDF-Kapitel. Hier können nochmals einige hundert Seiten zu weiteren .NETThemen als PDF erhalten. Eine Liste der Inhalte findet Sie in Anhang A.

Codebeispiele. Laden Sie alle in diesem Buch vorgestellten Codebeispiele herunter

Diskussionsrunde. Ein webbasiertes Forum bietet die Möglichkeit, Fragen an den Autor zu stellen. Bitte beachten Sie jedoch, dass dies eine freiwillige Leistung des Autors ist und kein Anspruch auf eine kostenlose Betreuung besteht.

Newsletter. Alle registrierten Leser erhalten mehrmals jährlich einen Newsletter mit aktuellen Terminen und Publikationshinweisen

Leser-Bewertung. Vergeben Sie Noten für dieses Buch und lesen Sie nach, was andere Leser von diesem Buch halten

Errata. Trotz eines erprobten Vorgehensmodells und der mehrfachen Qualitätskontrolle ist es möglich, dass sich einzelne Fehler in dieses Buch eingeschlichen haben. Im Webportal können Sie nachlesen, welche Fehler gefunden wurden. Sie können hier auch selbst Fehler melden, die Ihnen auffallen.

Zugang zum Leser-Portal

Die URL für den Zugang zum Leser-Portal lautet:

http://www.dotnetframework.de/leser

Bei der Anmeldung müssen Sie das Kennwort UNIVERSE angeben.

Themeneinschränkungen

Auf rund 1000 Buchseiten kann man eine so große und komplexe Softwareentwicklungsumgebung wie Microsoft .NET nicht komplett beschreiben. Viele Aspekte des .NET Framework kann dieses Buch aufgrund der verlegerischen Seitenrestriktion gar nicht behandeln. Allein schon, wenn man diese Themen alle nur auf drei Seiten kurz anreißen würde, müsste man bei der Tiefe der Basisthemen erhebliche Einschnitte vollziehen, die nicht im Sinne des Buchkonzeptes sind.

Ich musste daher als Autor eine Auswahl treffen. Diese Auswahl basiert auf folgenden Grundlagen:

Erfahrungen über die im Markt am meisten eingesetzten Techniken aus Beratungs- und Schulungseinsätzen

Erfahrungen aus eigenen Softwareentwicklungsprojekten

Austausch mit Lesern der vorherigen Auflagen

An dieser Stelle sei auf einige Themen aus dem inzwischen mannigfaltigen .NET-Spektrum explizit hingewiesen, die auf Basis der o.g. Punkte nicht behandelt werden:

C++/CLI, JScript .NET, IronPython, F# und alle anderen .NET-Programmiersprachen, die weniger verbreitet sind als C# und Visual Basic .NET

Microsoft Silverlight

Windows PowerShell

Visual Studio LightSwitch (liegt bei Redaktionsschluss des Buchs erst als Beta 1-Version vor)

ASP.NET »Razor« und Webmatrix (liegt bei Redaktionsschluss des Buchs erst als Beta 1-Version vor)

Projektmanagement, Versionsverwaltung, Aufgabenverfolgung und Build-Management mit dem Team Foundation Server (TFS)

Programmierung mit dem .NET Compact Framework (CF)

Programmierung mit dem .NET Micro Framework (MF)

Entwicklung von Anwendungen für die XBox-Spielekonsole mit dem XNA-Framework

Visual Studio Tools for Microsoft Office (VSTO) zur Entwicklung von Office-Anwendungen

Entwicklung von Programmerweiterungen mit dem Management Add-In Framework (System.AddIn).

Programmierung mit .NET innerhalb des Microsoft SQL Server (SQLCLR)

.NET-Programmierung in Microsoft SharePoint und Microsoft CRM

Microsoft BizTalk Server

Microsoft Application Server »AppFabric«

WCF RIA Services

Entwicklung von Windows-Systemdiensten

Analyse von Code und dynamische Code-Erzeugung mit System.Reflection

Parallelprogrammierung mit System.Threading und Task Parallel Library

Tracing mit System.Diagnostics

Berichterstellung mit Crystal Reports for Visual Studio und SQL Server Reporting Services

Kryptografische Mechanismen

Code Access Security (CAS)

Windows CardSpaces (WCS)

Windows Identity Foundation (WIF)

.NET Platform Invoke (P-Invoke) zum Aufruf von C-Bibliotheken

Message Queuing mit MSMQ und System.Messaging

Erstellung von MSI-Setup-Paketen

.NET Enterprise Library

.NET Software Factories

andere Erkenntnisse und Produkte der Pattern & Practices-Gruppe bei Microsoft

viele Open Source-Projekte z.B. von Codeplex ... und vieles mehr.

Ihre Entwicklungsumgebung für .NET

Für die Nutzung dieses Buchs sollten Sie auf jeden Fall Folgendes besitzen:

.NET Framework 4.0 Redistributable

.NET Framework Software Development Kit (SDK)

Entwicklungsumgebung Visual Studio 2010

Durch die Installation von Visual Studio 2010 werden die ersten beiden Produkte mitinstalliert.

Testversion der kostenpflichtigen Varianten

Wenn Sie noch kein Visual Studio 2010 besitzen, laden Sie sich am besten die Testversion von Visual Studio 2010 herunter. Sie finden sie unter http://www.microsoft.com/visualstudio/en-us/download. Die umfangreichste Version ist die »Ultimate«-Version.

Grundsätzlich liegt es natürlich im geschäftlichen Interesse der Firma Microsoft, dass Sie nach Ablauf des Testzeitraums eine kostenpflichtige Lizenz der Entwicklungsumgebung Visual Studio 2010 erwerben. Der Autor möchte Sie in Ihrer Entscheidung diesbezüglich nicht beeinflussen, sondern Ihnen an dieser Stelle einen Weg aufzeigen, wie Sie auch ohne Kosten für die Entwicklungsumgebung weiterhin komfortabel .NET-Anwendungen entwickeln können.

Express-Varianten von Visual Studio

Microsoft bietet neben Visual Studio auch noch eine Produktfamilie unter dem Titel Visual Studio Express an. Bei den Express-Editionen handelt es sich um größere Bausteine, die aus Visual Studio herausgebrochen wurden und jeweils für einen speziellen Anwendungsfall bereitstehen. Diese Express-Editionen sind kostenlos auf der Microsoft Website beziehbar. Sie dürfen ohne Gebühren unbegrenzt verwendet werden. Es existieren derzeit die in nachfolgender Tabelle genannten Express-Editionen. Die Express-Editionen reichen für die wichtigsten Anwendungstypen aus. Es gibt keine Express-Editionen für exotischere .NETAnwendungsarten, z.B. Microsoft Office-Anwendungen oder SQL Server-Anwendungen.

Tabelle 1 Übersicht über die Express-Editionen von Visual Studio

Programmiersprachen

KonsolenAnwendungen

Windows-Anwendung

Bibliotheken (DLL)

Webanwendungen

Webservices

C++ Express

C++

X

X

X

X (WCF)

C# Express

C#

X

X

X

X (WCF)

Visual Basic Express

Visual Basic

X

X

X

X (WCF)

Visual Web Developer Express

C# und Visual Basic

X

X (ASMX)

Die Express-Editionen können Sie von folgender Website beziehen:

http://msdn.microsoft.com/vstudio/express/default.aspx

Sie können alle Express-Editionen problemlos gemeinsam auf einem Computersystem installieren. Jedoch integrieren sich die Produkte nicht ineinander, d.h. alle Entwicklungsumgebungen besitzen ein eigenes Anwendungsfenster, auch eine Mischung von verschiedenen Projekttypen in einer Projektmappe ist nicht möglich. Diese Integration hat Microsoft den käuflich zu erwerbenden Visual Studio 2010-Vollprodukten vorbehalten.

Im Dateisystem verwenden die vier Express-Editionen viele Dateien gemeinsam, sodass der Platzbedarf der Produkte zusammen weniger ist als die Summe der Einzelinstallationen. Alle Express-Editionen enthalten auch eine reduzierte Version der MSDN-Dokumentation. Diese wird nur bei der Installation der ersten Express-Edition auf die Festplatte gespielt.

Die Express-Editionen müssen nicht bei Microsoft aktiviert oder registriert werden. Die optionale, kostenlose Registrierung verbindet Microsoft jedoch mit einigen Angeboten. Wer sich registriert, erhält Zugriff auf lizenzfreie Bilder und Symbole, E-Books und Softwarekomponenten.

Hinweise zu den Listings

Dieses Buch orientiert sich an einem übergreifenden Fallbeispiel, der Fluggesellschaft Kapitel 2. Während viele Programmcodebeispiele direkt in die entsprechenden Anwendungsteile des Gesamtbeispiels integriert sind, liegen aus didaktischen Gründen einige Beispiele aus den Kapiteln »Sprachsyntax Visual Basic 2010 (VB.NET 10.0) und C# 2010 (C# 4.0)« und ».NET-Klassenbibliothek 4.0« in autonomen, besser überschaubaren Codebeispielen vor. Diese Codebeispiele verwenden zwar oft auch Daten aus dem Fallbeispiel, sind jedoch einzeln startbar. Zum Start dieser autonomen Beispiele wird eine von dem Autor dieses Buchs entwickelte Rahmenanwendung, der Demo-Viewer, eingesetzt. Der Demo-Viewer erlaubt die Anzeige und den Start aller Beispiele, die sich in einer definierbaren Assembly befinden.

Abbildung 1 Start eines Beispiels im Demo-Viewer

Sie werden in den herunterladbaren Beispielen zu diesem Buch bzw. in den im Buch abgedruckten Listings folgende Vorkehrungen zur Nutzung des Demo-Viewers finden:

Projekte, die Beispiele enthalten, referenzieren folgende Softwarekomponente: ITV_DemoViewer.dll

Codedateien, die Beispiele enthalten, importieren folgenden Namensraum: de.ITVisions.DemoViewer

Klassen, die Beispiele enthalten, sind mit [Demo] bzw. <Demo> annotiert

Ausführbare Beispiele sind Instanzmethoden und besitzen keine Parameter

Ausgaben in den Beispielen erfolgen mit Demo.Print() – für normale Ausgaben – und Demo.PrintHeader() – für hervorgehobene Ausgaben

Die Anwendung startet den Demo-Viewer für C# mit:

new de.ITVisions.DemoViewer.Viewer(System.Reflection.Assembly.GetExecutingAssembly())

bzw. für Visual Basic mit:

Dim d As New Viewer(System.Reflection.Assembly.GetExecutingAssembly())

Wenn Sie Beispiele aus diesem Buch in eigene Anwendungen übernehmen wollen, müssen Sie lediglich die o.g. Verbindungen zu dem Demo-Viewer entfernen, insbesondere die Ausgaben mit Demo.Print() und Demo.PrintHeader() ersetzen (siehe Tabelle).

Tabelle 2 Alternative Ausgabemöglichkeiten

Anwendungsform

Einfache sequenzielle Ausgabe

Ausgabe in bestimmtes Element

Konsolenanwendung

Console.WriteLine(Ausgabe)

Nicht möglich

ASP.NET-Web Forms-Anwendungen

Response.Write(Ausgabe)

TextBox1.Text += Ausgabe

Windows Forms-Anwendung

Nicht möglich

RichTextBox1.AppendText(Ausgabe)

Kapitel 1. Einführung

In diesem Kapitel:

„Was ist .NET?“

„Bausteine des .NET Framework“

„Standardisierung bei ECMA und ISO“

„Plattformen“

„Geschichte und Versionen“

„Produkte und Installationspakete“

„Entscheidung zwischen der deutschen und der englischen Version“

„Installation“

Was ist .NET?

.NET (gesprochen DOTNET) ist der Oberbegriff für die wichtigste Softwareentwicklungsinfrastruktur der Firma Microsoft. .NET ist heute neben Java die wichtigste Softwareentwicklungsplattform.

Hinweis

Bezüglich der genauen Schreibweise von .NET gibt es einige Meinungsverschiedenheiten. Zum Teil schreibt Microsoft selbst .net oder .Net. Einige Medien schreiben den Begriff aus: DOTNET oder dotnet. Vorherrschend und von Microsoft selbst meist verwendet ist jedoch die Schreibweise mit drei Großbuchstaben. Diese Schreibweise wird auch in diesem Buch verwendet (außer auf dem Cover, da hier das offizielle Logo abgebildet ist, das die Kleinschreibweise verwendet).

Definition

.NET ist eine betriebssystemunabhängige Softwareentwicklungsplattform mit Unterstützung für die Programmierparadigmen

Objektorientierung

Komponentenorientierung und

Serviceorientierung

Microsoft hatte .NET von Anfang an plattformneutral konzipiert, selbst aber keine Bestrebungen zur Implementierung auf Mac und Unix/Linux unternommen. Weite Teile von .NET sind aber inzwischen durch die Initiative anderer Unternehmen (insbesondere Novell) auch für andere Betriebssysteme verfügbar. Und dies wird von Microsoft sogar unterstützt mit Hinblick auf die wachsende Anzahl von Konkurrenzbetriebssystemen, insbesondere im Markt der mobilen Geräte. Microsoft selbst bietet mit Silverlight eine Variante von .NET auch für Mac OS an.

Ziele von .NET

Primäres Ziel bei der Entwicklung von .NET war es, eine moderne, konsistente, flexible und sichere Softwareentwicklungsplattform auf hohem Abstraktionsniveau für die Entwicklung von Software jeder Art zu schaffen. Zuvor war die Anwendungsentwicklung in verschiedenen Programmiersprachen sehr uneinheitlich und unterschiedlich mächtig. Diese Unterschiede will .NET beseitigen.

Die .NET-Plattform ist insofern vollständig, als schon heute alle Arten von Windows-Anwendungen (mit Ausnahme von Hardware-Treibern) damit entwickelt werden können. Die mitgelieferte Klassenbibliothek ist bereits sehr umfangreich und deckt viele Funktionen ab. Natürlich gibt es weiterhin auch Programmierschnittstellen, die nur in klassischer Form (C-API oder COM-DLL) vorliegen.

Abbildung 1.1 .NET ist die dritte Evolutionsstufe der Windows-Programmierung

Vielfalt von .NET

Die Vielfalt der .NET-Plattform drückt das folgende Bild aus. Für alle Arten von Anwendungen (Web, Desktop, Geräte) bietet das .NET Framework inzwischen mehr als eine Alternative. Zudem gibt es Alternativen für Datenzugriffe, die Implementierung von Diensten sowie zahlreiche Werkzeuge. Dabei nicht berücksichtigt sind die vielen Drittanbieter und Open Source-Projekte, die weitere Alternativen ergänzen.

In allen Fällen stehen mit C# und Visual Basic die gleichen Programmiersprachen, mit Visual Studio das gleiche Werkzeug und den .NET-Bibliotheken die gleichen Klassen zur Verfügung.

Abbildung 1.2 .NET als durchgängige Plattform

Hinweis

Nicht Ziel der .NET-Plattform ist die hardwarenahe Programmierung, zum Beispiel die Entwicklung von Treibern.

.NET hat natürlich viele Anleihen bei Java genommen, sowohl bei der Sprachsyntax als auch den Klassenbibliotheken. Aber auch Java hat inzwischen Einiges bei .NET abgeschaut. Als Beispiele sind Annotationen, Autoboxing und Generics ab Java 5 zu nennen. Bei den im Standard mitgelieferten Klassen haben beide Plattformen inzwischen die 10.000er Marke gerissen. Jede konkrete Java EE-Implementierung fällt noch weitaus größer aus. Darüber hinaus gibt es unzählige Zusatzbibliotheken in beiden Welten. Viele .NET-Entwickler sahen einen Vorteil von .NET gegenüber Java darin, dass »alles« von Microsoft aus einer Hand geliefert wird, während Java-Entwickler die Qual der Wahl vieler (miteinander konkurrierender) Open Source-Bibliotheken haben und meist diese Wahl auch lieben.

Inzwischen ist die .NET-Welt auch nicht mehr so einfach. Neben einer Vielzahl an Drittanbieter- und Open Source-Bibliotheken (siehe SourceForge http://sourceforge.net/ und Microsofts eigenes Quellcodeportal CodePlex http://www.codeplex.com/) bringt auch Microsoft ständig neue .NET-Bibliotheken heraus, die weitere Abstraktionen für schon vorhandene Funktionen bieten oder kommende Erweiterungen von .NET vorab liefern. Das Tempo der An- und auch Absagen von Bibliotheken ist bei Microsoft inzwischen derart atemberaubend, dass sich mancher .NET-Entwickler vorkommt wie auf dem Java-Basar, den er vermeiden wollte. Microsoft liefert immer häufiger Bibliotheken auch als Open Source-Code, manchmal sogar dennoch mit offiziellem Produktsupport. Trotz der inzwischen zahlreichen Newsgroups, Mailinglisten und Webforen gibt es viele .NET-Entwickler, die sich gerade deshalb für .NET entscheiden, weil sie kommerziellen Support aus einer Hand erhalten, der bei Fehlern und unerwartetem Verhalten die »Schuld« nicht so leicht auf andere Software abwälzen kann.

Verbreitung und Akzeptanz von .NET

Die Akzeptanz von .NET verlief in Deutschland sehr schleppend. Bezeichnend der Wikipedia-Eintrag zum Stand von .NET im Jahre 2004: »Obwohl technisch schon einige Jahre alt, steht der Marktanteil an .NET-Programmen immer noch in keinem Verhältnis zur Aufmerksamkeit in Medien und Entwicklergemeinde« (inzwischen gibt es in [WP01] diesen Satz nicht mehr).

Dazu beigetragen haben auch zwei Fehler bei Microsoft:

In den Jahren 2001 bis 2004 hatte Microsoft .NET zunächst als Marketing-Begriff für alle neuen Produkte (Betriebssystem, Server, Office) verwendet – nach Kritik von Kunden und Medien hat die Firma jedoch die sinnvolle Reduzierung auf das .NET Framework und die zugehörigen Softwarekomponenten und Werkzeuge vollzogen

Microsoft hat lange Zeit die eigene Produktentwicklung nicht auf .NET umgestellt. Zeitweise hatte Microsoft daher bei Kunden ein Glaubwürdigkeitsproblem: Man fragt sich, warum man .NET einsetzen soll, wenn bei Microsoft Entwicklungsabteilungen selbst immer noch mit klassischem C++ entwickeln.

Auch in dem aktuellen Windows-Client-Betriebssystem Windows 7 ist kein einziger Teil mit dem .NET Framework geschrieben worden. Es gilt lediglich, dass .NET 3.5 Service Pack 1 mit Windows 7 ausgeliefert wird und man .NET 4.0 zusätzlich installieren kann.

Anders sieht es in Windows Server 2008 R2 aus. Dort sind dies zum Beispiel PowerShell, das PowerShell Integrated Scripting Environment (ISE), die Gruppenrichtlinienverwaltungskonsole und die Teile anderer MMC-Konsolen. Positive Beispiele für den Einsatz von .NET im Hause Microsoft sind allerdings Microsoft SharePoint und Microsoft CRM. Auch die aktuelle Version Visual Studio 2010 ist zum Teil in .NET-Code reimplementiert worden.

Seit der Einführung von .NET 2.0 im November 2005 verzeichnen Schulungsunternehmen, Berater und Softwarehäuser jedoch einen wahren Boom in Hinblick auf .NET. Mittlerweile werden erfahrene .NET-Softwareentwickler händeringend gesucht. Die Adaption von .NET 3.0 hingegen vollzog sich wieder viel langsamer. Ein Grund dafür war, dass .NET 3.0 schon ein Jahr nach .NET 2.0 erschienen ist. Ein weiterer Grund war, dass .NET 3.0 in wesentlichen Teilen eine Alternative für Technologien in .NET 2.0 war und ein Umstieg auf die neuen Technologien beschwerlich war. Mit .NET 3.5 bzw .NET 3.5 Service Pack gibt es – insbesondere durch die dort eingeführten Technologien zum Datenzugriff – mehr Gründe für einen Versionswechsel. .NET 4.0 liefert anders als .NET 3.0 und .NET 3.5 keine großen neuen Bibliotheken, sondern kleinere Ergänzungsbibliotheken sowie Verbesserungen für die bestehenden Bibliotheken. Daher wird .NET 4.0 im Markt als eine Abrundung von .NET angesehen.

Es gibt keine verlässlichen Marktdaten über die Verbreitung von .NET. Es gibt verschiedene Statistiken, die man als Indiz heranziehen könnte, z.B. den GULP.de Projektmarktindex (siehe Bildschirmabbildung).

Abbildung 1.3 GULP.de-Freiberufler-Projektmarktindex der Nachfrage nach Qualifikationen und gebotener Stundensätze (»Glupometer«) [GU01]

Ein anderer Indikator wären die Verkäufe von Computerbüchern. O’Reilly erhebt eine solche Statistik verlagsübergreifend für die USA. Dabei liegt C# allein schon vor Java und inklusive .NET Languages und VB sehr deutlich vor Java.

Abbildung 1.4 Relativer Vergleich der Anzahl verkaufter Bücher in den USA – 2008 und 2009. Quelle: [OR01]

Technische Merkmale des .NET Framework

Wesentliche Merkmale des .NET Framework sind:

Parallelbetrieb verschiedener .NET Framework-Versionen (eine .NET-Anwendung startet automatisch mit der Framework-Version, für die sie entwickelt wurde)

durchgängige Objektorientierung: auch elementare Datentypen wie Zahlen und Zeichenketten sind Objekte

wiederverwendbare Softwarekomponenten (sogenannte Assemblys)

Plattformunabhängigkeit durch Zwischensprache/Intermediation mit Just-in-Time-Compiler wie bei Java: Write Once Run Anywhere (WORA)

verschiedene Anwendungstypen (Fat-Clients, Standard-Webanwendungen, Rich Internet Applications, Systemdienste, Webdienste, Pocket-PC-Anwendungen, SmartPhone-Anwendungen)

Sprachunabhängigkeit (mehr als 45 verschiedene Programmiersprachen) mit sprachübergreifenden Aufrufen und sprachübergreifender Vererbung

einheitliche Laufzeitumgebung mit Diensten wie Codeüberprüfung (Sicherheit, Array-Grenzen etc.), Threading, Speicherbereinigung und Ausnahmebehandlung

umfangreiche Klassenbibliothek mit mehr als 9.000 Klassen, einheitlich für alle .NET-fähigen Programmiersprachen

Schnittstellenverträge, die ermöglichen, dass man Mitglieder ergänzt, ohne den Schnittstellenvertrag zu brechen (Der Vertrag wird erst gebrochen, wenn man Mitglieder oder Parameter entfernt bzw. Datentypen ändert.)

XML-basierte Konfiguration von Anwendungen (Abkehr von der Windows-Registrierungsdatenbank)

Schutz vor »gefährlichem« Programmcode durch Sandbox-Konzepte wie in Java

Nutzung von Metadaten (automatische Metadatengenerierung und manuelle Metadaten)

XCopy-Deployment (Verteilung von Anwendungen durch einfaches Kopieren der Programmdateien sowie der zugehörigen Bibliotheken und Ressourcendateien)

Interoperabilität zu Plattformen: COM, Windows 32 API sowie XML-Webservices (zu Java und CORBA auch durch Drittanbieterprodukte)

Bausteine des .NET Framework

Das .NET Framework ist ein sehr komplexes Gebilde, das durch einige Zusatzprodukte (z.B. Microsoft BizTalk, Microsoft SharePoint) noch umfangreicher wird. Im Folgenden sollen drei grafische Darstellungen aus verschiedenen Blickwinkeln einen Überblick über das .NET Framework geben.

Blickwinkel 1: Anwendungstypen

Eine Möglichkeit der Gliederung des .NET Framework sind Anwendungstypen. Das .NET Framework unterstützt sowohl Client- als auch Server-Szenarien durch verschiedene Anwendungstypen, die im Folgenden aufgelistet sind:

Windows-Anwendungen auf Basis von Windows Forms oder Windows Presentation Foundation (WPF) oder Microsoft Silverlight in der Out-Of-Browser (OOB)-Variante

Webserver-Anwendungen auf Basis von ASP.NET Webforms, ASP.NET Modell View Controller und ASP.NET Dynamic Data

Web-Client-Anwendungen auf Basis von ASP.NET AJAX (HTML/JavaScript ohne Plug-Ins) oder mit Plug-Ins durch Einsatz von WPF im Browser (Web Browser Application – WBA alias XBAP) oder Microsoft Silverlight. (Ab .NET 4.0 wird Windows Forms im Browser mit IEHost.dll nicht mehr unterstützt.)

Erweiterungen für Microsoft Office auf Basis der Visual Studio Tools for Microsoft Office (VSTO)

Konsolenanwendungen auf Basis der .NET-Klasse System.Console

Windows-Dienste auf Basis der Klassen in der Komponente System.ServiceProcess

XML-Webservices auf Basis von ASP.NET Webservices

WMI-Provider auf Basis der Klassen in System.Management

Prozeduren, Funktionen und Datentypen für den Microsoft SQL Server 2005/2008 (inkl. R2) in Form der SQLCLR

Die folgende Grafik verdeutlicht den Sachverhalt in einem zweidimensionalen Raster, bei dem auf der X-Achse die Entscheidung zwischen Client und Server und auf der Y-Achse die Frage aufgetragen ist, ob es eine grafische Benutzerschnittstelle (Graphical User Interface – GUI), eine Kommandozeilenschnittstelle (Command Line Interface – CLI) oder gar keine Benutzerschnittstelle (User Interface – UI) gibt.

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!