Freigeben über


Bessere Codierung

Bessere Codierung mit Visual Studio 2010

Doug Turnure

Vor 13 Jahren hat Microsoft die erste Version von Visual Studio, seiner bewährten, wichtigsten integrierten Entwicklungsumgebung (IDE), eingeführt. Mit der ersten Version von 1997 begann die Zusammenführung der Versionen 5 von Visual Basic und Visual C++ zu einer gemeinsamen IDE. Sie enthielt eine Enterprise Edition mit einer damals berühmten Sammlung von Technologien, wie Visual InterDev, Microsoft Transaction Server und Visual SourceSafe 5.0. Der Hauptzweck dieser Version bestand darin, Entwicklern bei der Erstellung verteilter Anwendungen mit Komponenten als Client/Server-Anwendungen wie auch als Webanwendungen zu helfen.

Seitdem haben wir als Entwickler schon einiges erreicht. Modifizierte Formen von Client/Server- und Webarchitekturen sind in der Programmierszene zwar noch immer weit verbreitet, der Bereich und die Anforderungen dieser Anwendungen haben jedoch die Reichweite homogener Systeme und stark typisierter Objekt-zu-Objekt-Aufrufe längst verlassen.

Representational State Transfer (REST) und verwandte Technologien entwickeln sich nun zu den vorherrschenden grundlegenden Kommunikationsmechanismen. Anwendungen finden ihren Platz in cloudbasierten Architekturen, wo Skalierbarkeit, Zuverlässigkeit und Datensicherheit in der Verantwortung von Drittanbietern liegen. Die Muster von Webanwendungen gleichen sich gemeinsamen Stilen und Standards an. Auch die Hardware ändert sich, während sich die Prozessorgeschwindigkeiten mit der aktuellen Chiptechnologie theoretischen Maximalwerten nähern und Mehrkernsysteme neue Möglichkeiten eröffnen, um immer mehr Leistung mit einem einzelnen Computer zu erzielen.

In diesem Szenario und seinen beispiellosen Anforderungen an Software und Softwareentwickler tritt Visual Studio 2010 auf den Plan. Vollgepackt mit neuen Möglichkeiten ist es bestens gerüstet für die wachsenden Anforderungen an Software in einer Welt, die nun verschiedene Plattformen, Kerne, Stile und Standards umfasst. Dieser Artikel behandelt einige herausragende Features, die Visual Studio 2010 den modernen Herausforderungen entgegensetzt, um Entwicklern bei der Erstellung erfolgreicher Lösungen in dieser komplexen Branche zu helfen. Nicht alle neuen Funktionen können hier behandelt werden. Das Ziel des Artikels besteht vielmehr darin, einige Features hervorzuheben, die Entwickler sofort in ihrer täglichen Arbeit einsetzen können. Vollständige Featurelisten sind in der Produktdokumentation verfügbar.

Verbesserungen der Visual Studio-IDE

Da die Softwareentwicklung immer komplexere Szenarien behandelt, sind Entwickler häufig zu einer höheren Produktivität gezwungen. Visual Studio 2010 enthält mehrere neue visuelle Features für den Editor, die zu einer höheren Produktivität beitragen. Drei davon werden in diesem Abschnitt ausführlich besprochen.

Eine der einfacheren Verbesserungen in der Visual Studio 2010-IDE ist die Möglichkeit, ein untergeordnetes Fenster aus dem übergeordneten IDE-Fenster heraus zu ziehen. Monitore sind mittlerweile so erschwinglich, dass Entwickler zwei (oder mehr) davon verwenden können. Mit diesem neuen Feature können Sie die Codier- und Entwurfsfenster auf mehrere Bildschirme verteilen.

So geht's Klicken Sie auf die Registerkarte des Fensters, und ziehen Sie es aus dem Fenster der Visual Studio-IDE. Das Fenster wird genauso einfach wieder angedockt, indem Sie auf die Titelleiste klicken und es zurück in den IDE-Bereich ziehen, wobei Sie die Titelleiste an den Registerkarten der anderen Fenster ausrichten. Beim erneuten Andocken erhalten Sie einen optischen Hinweis, wenn das Fenster richtig ausgerichtet ist: Das Fenster wird schattiert, wenn es angedockt werden kann, sobald sie es loslassen. Abbildung 1 zeigt ein Codefenster, das aus dem umgebenden Fenster der IDE gezogen wurde.

Abbildung 1: Lösen eines Fensters aus der IDE
Abbildung 1 Lösen eines Fensters aus der IDE

Ein anderes neues Feature im Visual Studio 2010-Editor ist die Möglichkeit, einen vertikalen Textblock zu markieren und zu bearbeiten. Manchmal müssen Sie eine lange Liste von Elementen bearbeiten und führen immer wieder die gewohnte schnell wiederholte Tastenfolge aus (z. B. "n+Pfeil nach unten+Pfeil nach links"). Auch wenn dies vielleicht kein sehr häufiges Problem darstellt, kommt es doch gelegentlich vor, und viele Entwickler würden gern einen ganzen vertikalen Block auswählen und eine Änderung auf alle Zeilen gleichzeitig anwenden. Visual Studio 2010 bietet diese Möglichkeit zum Bearbeiten von Blöcken.

So geht's Halten Sie die ALT-TASTE gedrückt, und markieren Sie die vertikale Auswahl, die Sie bearbeiten möchten. Der markierte Bereich verhält sich wie bei der Bearbeitung einer einzelnen Zeile, die Bearbeitung wird jedoch gleichzeitig auf alle ausgewählten Zeilen angewendet, wie in Abbildung 2 dargestellt.

Abbildung 2: Auswählen eines vertikalen Bereichs
Abbildung 2 Auswählen eines vertikalen Bereichs

Es gibt auch ein nützliches Feature zur Hervorhebung von Verweisen im Code. Wenn Sie im Editor auf eine Variable, ein Objekt, eine Methode, eine Eigenschaft, einen Typ oder ein anderes Symbol klicken, werden alle Verweise auf das Symbol im Code hervorgehoben, um sichtbar zu machen, wo das Element verwendet wird.

So geht's Klicken Sie auf einen Typ/eine Variable/eine Methode oder ähnliches, und die anderen Instanzen werden hervorgehoben. Abbildung 3 zeigt dies für eine Variable namens jumpList. Beachten Sie die graue Schattierung aller Vorkommen im Code, nachdem die Variable mit einem Mausklick ausgewählt wurde.

Abbildung 3: Hervorgehobene Symbole
Abbildung 3 Hervorgehobene Symbole

Unterstützung für Parallelprogrammierung

Wenn wir etwas tiefer in die neuen IDE-Funktionen vordringen, ist das nächste wichtige neue Feature die Unterstützung für Parallelprogrammierung. Visual Studio 2010 verfügt über Diagnosetools für das Debugging und die Analyse paralleler Anwendungen. Bevor diese Tools behandelt werden, möchte ich kurz den Begriff Parallelprogrammierung erklären. Anschließend werden wir sehen, wie diese neuen Funktionen durch das Laufzeitmodul und die Bibliotheken implementiert sind.

Viele der aktuellen Standardentwicklercomputer sind Mehrkernsysteme, das heißt, sie verfügen über mindestens zwei Prozessoren. Der Trend geht zu Computern mit wesentlich mehr Kernen. Neben der reinen Innovation beeinflussen Faktoren wie Energiesparen und realistische Beschränkungen der Taktrate, Stromverbrauch und Hitze den Trend zu Mehrkernsystemen. Manche Branchenführer sagen voraus, dass die Mehrheit der Computer in den nächsten Jahren über 50 oder mehr Kerne verfügen wird.

Dies führt zu einem speziellen Problem. Vor der Mehrkernrevolution bedeuteten schnellere Computer auch schneller ausgeführte Anwendungen. Software, die an einen einzelnen Kern gebunden ist (wie dies derzeit meist der Fall ist), kann diese neue Architektur jedoch nicht ausnutzen. Daher ist es von zentraler Bedeutung, die Entwicklung auf die kommenden Mehrkernarchitekturen auszurichten. Vor Visual Studio 2010 und .NET Framework 4 war das Schreiben von Code für mehrere Kerne kompliziert. Als Antwort auf diese Herausforderung enthält die aktuelle Version einige Updates des Laufzeitmoduls sowie einige neue Typen, Bibliotheken und Tools, die Entwickler bei der Nutzung von Mehrkernsystemen unterstützen.

.NET Framework 4 enthält Parallelerweiterungen, die drei Komponenten umfassen: eine neue Task Parallel Library (TPL), ein neues PLINQ-Ausführungsmodul und eine Reihe neuer Coordination Data Structures (CDS). Die TPL enthält zwei primäre Klassen. Eine davon, System.Threading.Tasks.Parallel, enthält parallele Konstrukte wie z. B. parallele Versionen der Methoden For und ForEach. Wie der Name besagt, stellt das PLINQ-Ausführungsmodul eine parallele Version von LINQ to Objects dar. Es enthält eine ParallelEnumerable-Klasse anstelle der Enumerable-Klasse von LINQ. Die Verwendung von PLINQ gleicht der Verwendung von LINQ to Objects. CDS schließlich enthält eine Gruppe threadsicherer Auflistungen und Synchronisierungsprimitive zur Vereinfachung paralleler Szenarien. CDS umfasst die üblichen Elemente threadsicherer Auflistungen (z. B. ConcurrentDictionary, ConcurrentQueue und ConcurrentStack) und Synchronisierungstypen (SemaphoreSlim, SpinLock, SpinWait usw.).

Die Unterstützung für parallele Erweiterungen wird in Visual Studio 2010 über die Fenster Parallele Stapel und Parallele Aufgaben sowie einen Concurrency Visualizer (Parallelitätsschnellansicht) realisiert. Diese Fenster sollen einen Eindruck vermitteln, in welchem Stadium der Ausführung sich verschiedene Tasks bzw. Aufgaben zu einem bestimmten Zeitpunkt befinden. Das Fenster Parallele Stapel zeigt, wie mehrere Tasks ihre jeweiligen Pfade abarbeiten. Außerdem werden Aufruflisten für die Tasks angezeigt. Sie können es in Form von Taskabstraktion oder direkt als Threads anzeigen. Abbildung 4 zeigt das Fenster Parallele Stapel zur Laufzeit in der Anzeigeoption der Taskabstraktion.

Abbildung 4: Fenster 'Parallele Stapel' in Visual Studio 2010
Abbildung 4 Fenster "Parallele Stapel" in Visual Studio 2010

Das Fenster Parallele Aufgaben wurde speziell zur Unterstützung des neuen taskbasierten Programmiermodells hinzugefügt. Wenn sich eine Anwendung im Unterbrechungsmodus befindet, können Sie in diesem Fenster z. B. die Liste der Aufgaben (Tasks) und dazu die jeweils ausgeführte Methode, den zugehörigen Thread, die Anwendungsdomäne, die ID und mehr anzeigen. Das Fenster stellt nicht nur eine statische Ansicht dar. Wenn Sie auf einen Task klicken, wird dessen Status in Form des gerade ausgeführte Codes angezeigt. Abbildung 5 zeigt dieses Fenster für eine Beispielanwendung. Zusammen mit dem Fenster Parallele Stapel bietet das Fenster einen schnellen Überblick über den derzeit ausgeführten Code.

Abbildung 5: Fenster 'Parallele Aufgaben' in Visual Studio 2010
Abbildung 5 Fenster "Parallele Aufgaben" in Visual Studio 2010

Für die genauere Analyse paralleler Anwendungen gibt es einen neuen Concurrency Visualizer (Parallelitätsschnellansicht) in Visual Studio 2010. Dieses Fenster ist wesentlich komplexer als die beiden anderen Fenster und unterstützt derzeit keine Webprojekte. Es soll Ihnen Einblick in die Interaktion einer Anwendung mit ihrer Umgebung in Mehrkern- und Multithreadszenarien geben. Es gibt drei Ansichten:

  • Die CPU-Auslastungsansicht zeigt die Prozessoraktivität an.
  • Die Threadansicht zeigt die Interaktion der Threads in der Anwendung an.
  • Die Kernansicht bietet Einblick in die Migration von Threads zwischen Kernen.

Die Parallelitätsschnellansicht ist von der Ereignisablaufverfolgung für Windows anhängig, muss also in Windows Vista oder höher ausgeführt werden. Die Ansichten, von einfachem Text bis hin zu rein grafischen Darstellungen, tragen dazu bei, ineffizienten Code aufgrund von schlecht auf die CPUs verteilter Last, Ausführungsengpässen, Konflikten und anderen möglichen Leistungsbeeinträchtigungen zu erkennen. Abbildung 6 zeigt die Parallelitätsschnellansicht mit der Threadauslastung für eine Anwendung, für die ein Profil erstellt wird.

Abbildung 6: Parallelitätsschnellansicht in Visual Studio 2010
Abbildung 6 Parallelitätsschnellansicht in Visual Studio 2010

Webupdates

Neben den beschriebenen allgemeinen Updates wurden bemerkenswerte Verbesserungen für Webentwickler vorgenommen, die zu Visual Studio 2010 wechseln. Auch das neue MVC-Programmiermodelltool (Model View Controller) ist nun enthalten. Es wird im nächsten Abschnitt behandelt. Darüber hinaus gibt es verbesserte Webentwicklungsverfahren für client- und serverseitige Webtechnologien sowie ein neues Webbereitstellungsmodell mit einem einzigen Klick. Ich beginne jedoch mit ASP.NET AJAX und den zugehörigen neuen Funktionen der IDE.

ASP.NET AJAX-Tools sind in Visual Studio seit Visual Studio 2008 verfügbar. Aufgrund der serverzentrierten Vorlagen waren einige Entwickler jedoch der Meinung, sie brächten keinen nennenswerten Nutzen für die clientseitige Entwicklung. Auch wenn die clientseitigen Funktionen schon immer vorhanden waren, umfasst Visual Studio 2010 zusätzliche Unterstützung für die clientseitigen und die serverseitigen Funktionen von ASP.NET AJAX. Clientseitige Vorlagen und Steuerelemente stellen einen wichtigen Teil der neuen Features dar, da sie die Nutzung der verbesserten clientseitigen Datenzugriffsfunktionen ermöglichen. Viele andere neue Elemente, wie z. B. die Integration von jQuery, sind jedoch ebenfalls einen Blick wert.

Wenn Sie vor Visual Studio 2010 und .NET Framework 4 den Softwaredownload verwenden und die Microsoft AJAX-Bibliothek in Visual Studio integrieren wollten, wurde diese beim Hinzufügen von ScriptManager als Ganzes in Ihre Seite eingefügt. In dieser Version wurden die Microsoft AJAX-Bibliothek und das AJAX Control Toolkit kombiniert. Zudem hat das Microsoft AJAX-Team die Bibliotheken umstrukturiert, sodass Sie jetzt auch beliebige einzelne Teile anfordern können. Sie können einen Modus angeben und alle, keine oder bestimmte Teile der Microsoft AJAX-Bibliothek anfordern.

So geht's Schließen Sie einfach im ScriptManager-Tag das AjaxFrameworkMode-Attribut mit ein. Sie können es auf Disabled, Enabled oder Explicit festlegen:

<asp:ScriptManager ... AjaxFrameworkMode="Disabled"/>

Disabled gibt an, dass die Microsoft AJAX-Frameworks nicht geladen werden sollen. Enabled gibt an, dass das Verhalten aus früheren Versionen (Laden der gesamten Bibliothek) verwendet werden soll. Mit Explicit können Sie angeben, welche Microsoft AJAX-Bibliotheken geladen werden sollen. Sie können dies zur Laufzeit mit Quelle anzeigen überprüfen, während die Seite geladen ist.

Ebenso können Sie mit dem neuen CDN-Attribut (Content Delivery Network, Netzwerk für die Inhaltsübermittlung) die aktuellen Versionen von Skriptbibliotheken verwenden. Früher haben Sie Skriptbibliotheken wie jQuery oder Microsoft AJAX in Ihr Projekt eingebunden, und auf die eingebundenen Versionen waren Sie dann für diese Projektversion festgelegt. Nun können Sie den Download der neuesten Version aus dem Web anfordern, statt eine feste Version in Ihre Projektmappen zu integrieren.

So geht's Schließen Sie im asp:ScriptManager-Tag das EnableCdn-Attribut mit ein, und legen Sie es auf "true" fest:

<asp:ScriptManager ... EnableCdn="true"/>

In ASP.NET AJAX 4.0 können Sie auch rein clientseitige Vorlagen definieren. Sie richten einen Platzhalter <ItemTemplate> ein und lassen den Client das Rendering basierend auf Laufzeitwerten, z. B. einem JSON-gebundenen Objekt, ausführen. Das Laufzeitmodul erledigt die Instanziierung für Sie, und Sie müssen keine DOM-Codierung vornehmen, um die Vorlage funktionsfähig zu machen.

Eine der nützlichsten Erweiterungen von ASP.NET AJAX 4.0 ist der verbesserte Clientdatenzugriff. Über ein neues DataView-Steuerelement und Clientvorlagen werden einfacher Zugriff und bidirektionale Datenbindung im Client ermöglicht. Dabei können ASMX Web Services, WCF-Dienste, WCF Data Services, MVC Controllers oder irgendetwas, das JSON zurückgibt, verarbeitet werden, und dies geschieht ausschließlich über clientseitigen Code.

Das DataView-Steuerelement ist das zentrale Steuerelement für die Unterstützung von Clientvorlagen. Es funktioniert ähnlich wie das ListView-Steuerelement, ist jedoch ausschließlich in Clientcode implementiert. Es ermöglicht, eine Vorlage im Client zu definieren, die Daten zur Laufzeit hereinzuholen und die Datensätze erst dann zu formatieren, wenn Sie sie anzeigen.

So geht's Sie müssen nur wenige Vorbereitungen treffen: Erstellen Sie ein Entity Data Model über der Northwind-SQL-Datenbank, und verwenden Sie einen gewöhnlichen WCF Data Service, der es ohne Änderungen weiterleitet, sodass die Employees-Tabelle für Abfragen verfügbar ist. Vor diesem Hintergrund wählen Sie das Steuerelement aus, das als Vorlage dienen soll, und weisen ihm ein ID-Attribut und das Attribut class="sys-template" zu. Wenn Sie die Datenansicht erstellen, wird die ID verwendet, um das Ziel für die über die Bindung übermittelten Daten anzugeben. Sie können die Bindung manuell vornehmen, Sie können aber auch eine Syntax mit geschweiften Klammern verwenden, um den Feldnamen direkt in das Markup einzubetten. Er wird dann ersetzt, wenn die Daten abgerufen und gebunden werden. Hierfür gibt es mehrere syntaktische Möglichkeiten, eine der besser lesbaren Schreibweisen für das Skript und Markup ist jedoch die Verwendung doppelter geschweifter Klammern, wie in Abbildung 7 dargestellt.

Abbildung 7 Verbesserter Datenzugriff mit dem DataView-Steuerelement

...
   <script type="text/javascript">
    Sys.require([Sys.components.dataView, 
                 Sys.components.adoNetServiceProxy], function () {
            
       var adoNetDataServiceProxy = 
         new Sys.Data.AdoNetServiceProxy('NWDataService.svc');
         
       Sys.create.dataView("#employeetemplate", {
         dataProvider: adoNetDataServiceProxy,
         fetchOperation: "Employees",
         autoFetch: true
            });
       });
    </script>
</head>
<body>
  <div id="employeetemplate" class="sys-template">
      <span>{{ FirstName }}</span><br/> 
  </div>
</body>

Eine weitere bemerkenswerte Neuerung von ASP.NET AJAX besteht in der stärkeren Integration in jQuery. Damit jQuery-Entwickler die Steuerelemente in ASP.NET AJAX verwenden können, werden alle Steuerelemente aus dem AJAX Control Toolkit nun automatisch als jQuery-Plug-Ins verfügbar gemacht. Somit können jQuery-Entwickler die Steuerelemente verwenden, ohne ihren Entwicklungsstil zu ändern. Die Steuerelemente können einfach als Erweiterungen von jQuery betrachtet werden.

Außerhalb von ASP.NET AJAX gibt es eine Reihe anderer nützlicher Verbesserungen der ASP.NET-Programmierumgebung. Durch URL-Routing mit Webformularen wird die Verwendung von URLs einfach und logisch. Sie ist besser für die Suchmaschinenoptimierung geeignet und für den Benutzer leichter lesbar. Sie können Routen in einer Datei global.asax definieren, durch die Anforderungen den entsprechenden Ressourcen zugeordnet werden. Dies trägt nicht nur zur Verbesserung der Suchmaschinenoptimierung bei, die Seiten erhalten auch einen vorhersehbaren Pfad für den Benutzer, wie in Abbildung 8 dargestellt.

Abbildung 8 Verbesserungen des URL-Routings in Visual Studio 2010

New URL Routing Format:
    /CurrentPosition/Bob/Tester

Old URL Style:
    /CurrentPositions.aspx?name="Bob"&role="Tester"

Es gibt wesentlich mehr erwähnenswerte webbezogene Verbesserungen, wie Startwebsites, saubereres HTML und kleinere Konfigurationsdateien, aber ich kann hier nicht auf alle eingehen. Stattdessen fahre ich nun mit den zusätzlichen MVC-Tools fort.

Integration von MVC

Das MVC-Architekturmuster ist ein beliebtes Verfahren zum Erstellen gut wartbarer und testbarer Webanwendungen mit wohldefinierten Grenzen und klarer Kategorisierung des Codes nach Funktion. MVC ist ein ASP.NET-Programmierstil, der die Vorteile des ASP.NET-Frameworks voll nutzt. Es stellt eine Alternative zu Webformularen dar, ist jedoch kein Ersatz dafür. Beide Modelle sind für bestimmte Szenarien und Fähigkeiten gut geeignet. Entwickler haben nun die Wahl zwischen Programmiermodellen für Webanwendungen, die beide auf ASP.NET basieren und in Visual Studio 2010 voll unterstützt werden.

Version 2 von MVC und die zugehörigen Tools, die zwischen Versionen von Visual Studio entwickelt wurden, sind in der Visual Studio 2010-IDE in Form von zwei Projektvorlagen integriert, wie in Abbildung 9 dargestellt.

Abbildung 9: MVC-Projektvorlagen in Visual Studio 2010
Abbildung 9: MVC-Projektvorlagen in Visual Studio 2010

Bei der Version Visual Studio 2010 standen Verbesserungen des MVC-Programmiermodells in drei Punkten im Vordergrund. Der erste betrifft eine bessere Trennung von Bereichen. Dies bedeutet besser wartbaren Code z. B. über eine neue RenderAction-Methode für die Zusammensetzung von Geschäftslogikteilen und über Bereiche, die das Erstellen von "Teilanwendungen" zur Unterteilung der Funktionalität in einer Anwendung ermöglichen. Die zweite Verbesserung betrifft ein besser verständliches Validierungsergebnis durch Anmerkungen zu Daten und eine bessere Darstellung der Validierungsregeln für den Client. Schließlich wurden Verbesserungen an der Hilfe vorgenommen. Es gibt nun stark typisierte Hilfsobjekte sowie Vorlagenhelfer, die die automatische Generierung der Benutzeroberfläche für Entitäten ermöglichen.

So geht's  Mit RenderAction kann ein Logik-Teilkonstrukt problemlos gemeinsam von mehreren Controllern genutzt werden. Verwenden Sie zum Aufruf der RenderAction-Methode in einer Ansicht das folgende Skript (das die NewEmployee-Aktion im HRController aufruft):

<%  Html.RenderAction("NewEmployee" "HRController"); %>

SharePoint-Integration

Als weitere wichtige Tools wurden in Visual Studio 2010 Vorlagen für SharePoint Foundation (früher Windows SharePoint Services) aufgenommen. Visual Studio 2010 umfasst 12 neue Vorlagen für SharePoint Foundation sowie die sequenziellen und Zustandsautomatworkflow-Vorlagen von SharePoint 2007 aus dem Visual Studio Tools für Office-Add-In zu Visual Studio 2008. Diese Vorlagen ermöglichen eine erstklassige SharePoint-Entwicklung mit Schwerpunkt auf Produktivität und flexible Bereitstellung.

Der Schwerpunkt der Verwendung von SharePoint Foundation selbst verschiebt sich von einem einfachen, erweiterbaren Portal hin zu einer Plattform für die Erstellung völlig neuer Anwendungen mithilfe von Komponenten wie Benutzerverwaltung, zugrunde liegender Listeninfrastruktur und Websitemodell. In den Bereichen Datenzugriff, Integration von Branchenanwendungen und Workflow wurden erhebliche Fortschritte erzielt. Ferner gibt es ein flexibleres Bereitstellungsmodell. Viele Unternehmen verfügen über umfangreiche SharePoint-Installationen und sind daher eher vorsichtig mit der Ad-hoc-Bereitstellung neuer SharePoint-Anwendungen. Das neue flexible Bereitstellungsmodell ermöglicht die Sandkasteninstallation für bestimmte Gruppen anstelle der Bereitstellung im gesamten SharePoint-Ökosystem.

Visual Studio 2010 stellt enorm verbesserte Tooloptionen für die Erstellung von SharePoint-Anwendungen bereit. Zwar waren leistungsstarke Funktionen dafür bereits vorhanden, die anfängliche Lernkurve war jedoch sehr steil. In dieser Version finden Sie hervorragende Unterstützung für SharePoint direkt in den Tools. Dazu gehören vollständiges, integriertes Debuggen, flexible Bereitstellungstools und verbesserte Entwurfsunterstützung für Business Connectivity Services (BCS), Workflow, LINQ to SharePoint und visuelle Webparts. Zudem wurde das Importieren von Elementen aus dem Tool SharePoint Designer in Visual Studio 2010 erleichtert.

So geht's Das Erstellen eines visuellen Webparts ist in Visual Studio 2010 mit der neuen Entwurfsoberfläche wesentlich einfacher. Erstellen Sie zunächst ein neues Projekt, und wählen Sie SharePoint | Visuelles Webpart aus, wie in Abbildung 10 dargestellt.

Abbildung 10: Vorlage für visuelles SharePoint-Webpart in Visual Studio 2010
Abbildung 10 Vorlage für visuelles SharePoint-Webpart in Visual Studio 2010

Dazu muss auf dem Entwicklercomputer SharePoint installiert sein, aber dies ist nicht mehr so kompliziert wie früher. Wenn Sie Windows Vista SP1 (oder höher) bzw. Windows 7 verwenden, können Sie nun SharePoint direkt auf diesem Computer installieren und müssen sich nicht um die Installation von Windows Server oder die Einrichtung eines virtuellen Computers dafür kümmern.

Sie werden aufgefordert, Visual Studio 2010 mitzuteilen, wo die Debugginglösung installiert werden soll. Während der Editor geöffnet ist, können Sie auf die linke untere Schaltfläche Entwurf klicken und mit dem visuellen Konstruieren des Webparts beginnen, indem Sie einfach Steuerelemente auf die Oberfläche ziehen. Gegebenenfalls müssen Sie zuvor die Toolbox öffnen (Menü Ansicht | Toolbox).

Windows 7-Entwicklung

Angesichts der wachsenden Beliebtheit von Windows 7 möchten Entwickler u. U. die Funktionalität ihrer Anwendungen erweitern, um die reichhaltigen Features der neuen Plattform zu nutzen. Entwickler können ihren Anwendungen auf verschiedene Arten Windows 7-spezifische Funktionen hinzufügen. Eines der beliebten neuen Features ist die Taskleiste. Dank ihrer schnellen Akzeptanz bei Benutzern und ihrer leichten Programmierbarkeit ist sie für Anwendungen für Windows 7 gut geeignet.

Die Taskleiste ersetzt die Schnellstartleiste aus früheren Windows-Versionen. Die Taskleiste wird (standardmäßig) unten im Windows 7-Bildschirm angezeigt und ermöglicht das Anheften von Anwendungen. Zudem können Anwendungen Elemente wie Sprunglisten enthalten, d. h. Quicklinks, die Sie durch Rechtsklicken auf die angedockten Symbole anzeigen können, und eine Taskleistenvorschau, die aus Miniaturansichten der geöffneten Fenster einer Anwendung besteht. Die Taskleiste ist über verwalteten Code (über das Windows 7 API Code Pack) wie auch über nicht verwalteten Code leicht programmierbar und sollte direkt im Fokus von Entwicklern stehen, die Anwendungen für Windows 7 erstellen möchten.

So geht's Benutzer können Anwendungen an die Taskleiste anheften (und von der Taskleiste lösen), indem sie im Startmenü, im Explorer oder in der Taskleiste mit der rechten Maustaste auf die Symbole klicken. Zum Anheften einer Anwendung klicken Sie mit der rechten Maustaste auf das Symbol der Anwendung (nicht eines Dokuments, sondern der Anwendung selbst), und wählen Sie An Taskleiste anheften aus. Zum Entfernen aus der Taskleiste wählen Sie Dieses Programm von der Taskleiste lösen aus.

Die Taskleiste bietet optische und funktionale Verbesserungen für Anwendungen. Jedes Programm kann an die Taskleiste angeheftet werden, unabhängig davon, ob es gerade ausgeführt wird. Das angeheftete Symbol dient entweder zum Starten der Anwendung oder zur Darstellung minimierter Fenster. Wenn Sie die Maus über ein Symbol in der Taskleiste platzieren und die entsprechende Anwendung ausgeführt wird, wird ein visueller Effekt namens Hot-Tracking ausgelöst. Dabei wird das Symbol in der vorherrschenden Farbe hervorgehoben. Darüber hinaus wird eine Vorschau der ausgeführten Instanzen der Anwendung über dem angehefteten Symbol angezeigt.

Die Taskleiste verfügt auch über ein Feature namens Aero Peek. Wenn Sie mit der Maus auf eine Fenstervorschau zeigen, wird das Fenster für die ausgewählte Vorschau im Vordergrund angezeigt, während die anderen Fenster abgeblendet werden. Auf diese Weise können Benutzer schnell einen Blick auf ausgeblendete oder minimierte Fenster werfen, ohne den Fokus zu ändern oder eine Taste zu drücken.

Zur Nachverfolgung von Anwendungen erhalten Instanzen ausgeführter Anwendungen eine ID und werden dem entsprechenden Symbol in der Taskleiste zugeordnet. Als Entwickler können Sie die Klassen TaskbarManager und JumpList verwenden, um in Anwendungen programmgesteuert mit der Taskleiste zu interagieren. Um diese Klassen verwenden zu können, müssen Sie die Assemblys im kostenlosen Windows 7 API Code Pack unter code.msdn.microsoft.com/WindowsAPICodePack herunterladen und Verweise darauf erstellen.

Dieses Code Pack wurde vom Windows SDK-Team erstellt und ermöglicht die programmgesteuerte Verwendung der Taskleiste. Außerdem enthält es mehrere Beispielanwendungen mit Verbesserungen von Windows 7. Sie müssen in Ihrem Code nur einen Verweis auf die kompilierten Assemblys festlegen (indem Sie in diesem Beispiel nach dem Taskbar-Projekt suchen).

Sie können mehreren Instanzen einer Anwendung dieselbe Anwendungs-ID oder jeweils eindeutige Anwendungs-IDs zuweisen. So können Sie sie in der Taskleiste entweder gruppieren oder trennen. Wenn Sie verschiedenen Instanzen einer Anwendung eindeutige IDs zuweisen möchten, müssen Sie die Anwendungs-ID vor dem Aufruf von Application.Run festlegen. Wenn Sie nur untergeordneten Fenstern ein eigenes Symbol in der Taskleiste zuordnen möchten, können Sie deren Anwendungs-ID jederzeit ändern.

So geht's Um einem untergeordneten Fenster ein eigenes Symbol in der Taskleiste zuzuordnen, verwenden Sie die JumpList-Klasse und rufen die statische Methode CreateJumpListForIndividualWindow auf. Übergeben Sie dabei die Anwendungs-ID eines untergeordneten Fensters und den Fensterhandle. Der Code sieht folgendermaßen aus:

childWindowJumpList = JumpList.CreateJumpListForIndividualWindow(
childWindowApplicationId, this.Handle);

Integration von Windows Azure

Cloud Computing entwickelt sich rasch zu einer echten Alternative zu den herkömmlichen Architekturlösungen des Hostings vor Ort und des Webhostings. Kurz gesagt steckt dahinter die Idee, einen Teil (oder alle) Ihrer Softwarelösungen einer Firma zu übergeben, die sie in einem riesigen Datacenter hostet, wo sie bei Bedarf skaliert und mit hoher Verfügbarkeit bereitgestellt werden. Die Windows Azure Platform stellt die Cloud Computing- und Diensteplattform von Microsoft dar. Sie besteht aus drei Gruppen von Diensten: Windows Azure, SQL Azure und Windows Azure Platform AppFabric.

Windows Azure bietet die Umgebung zum Hosten von Anwendungen. Es stellt praktisch das Betriebssystem in der Cloud dar. SQL Azure ist im Wesentlichen die Datenbank in der Cloud. Und Windows Azure AppFabric besteht aus einem Satz allgemeiner Bausteine, die von Anwendungen in der Cloud verwendet werden. Windows Azure AppFabric umfasst derzeit zwei Dienste: Access Control Service (für Verbundauthentifizierung und anspruchsbasierte Autorisierung) und Service Bus (für Konnektivität zwischen Lösungen in der Cloud und Lösungen vor Ort).

Visual Studio 2010 enthält mehrere Projektvorlagen für die Erstellung von Windows Azure Platform-Lösungen. Für VB.NET und C# sind vier verschiedene Vorlagen für Web-Rollen und eine für eine Worker-Rolle vorhanden. Es gibt auch eine Projektvorlage für die Worker-Rolle für F#. Die Vorlagen für die Web-Rolle für VB.NET und C# enthalten jeweils eine für ASP.NET, MVC mit ASP.NET, WCF-Dienste und CGI.

Ein besonderer Aspekt bei der Verwendung von Windows Azure Platform-Projekten in Visual Studio 2010 ist, dass Sie beim Erstellen eines Projekts mehrere Rollen für das Projekt auswählen können. Sie können beispielsweise ein neues Projekt mit einer ASP.NET MVC-Web-Rolle in C# und einer Worker-Rolle in VB.NET erstellen. Deshalb ist das Verhalten von Neu | Projekt bei Cloud-Anwendungen etwas anders. Sie wählen die Rollen in einem Dialogfeld aus statt über die Einzelauswahl, die Sie aus anderen Projektvorlagen kennen.

So geht's Zum Erstellen eines Projekts für die Windows Azure Platform in Visual Studio 2010 wählen Sie in der Liste der installierten Vorlagen die Option der Cloud aus, wie in  Abbildung 11 dargestellt.

Abbildung 11: Auswählen des Projekttyps Cloud in Visual Studio 2010
Abbildung 11 Auswählen des Projekttyps Cloud in Visual Studio 2010

Daraufhin wird ein Dialogfeld angezeigt, in dem Sie die gewünschten Rollen auswählen können. Dabei kann jede Rolle einem anderen Typ bzw. einer anderen Sprache angehören. Abbildung 12 zeigt ein neues Projekt für den Windows Azure Cloud-Dienst mit einer ASP.NET MVC-Web-Rolle, zwei VB.NET-Worker-Rollen und einer F#-Worker-Rolle.

Abbildung 12: Einrichten eines Projekts für den Cloud-Dienst mit mehreren Rollen und Sprachen
Abbildung 12 Einrichten eines Projekts für den Cloud-Dienst mit mehreren Rollen und Sprachen

Festlegung von Zielversionen

Die Festlegung von Zielversionen selbst ist nicht neu in Visual Studio 2010. Sie verfügt jedoch über ein neues Erweiterungsfeature, das eine nähere Betrachtung verdient. Überraschenderweise sind die Vorteile der Festlegung von Zielversionen weitgehend unbekannt. Sie ermöglicht es, mit Visual Studio 2010 Lösungen zu erstellen, die auf früheren Versionen von .NET Framework ausführbar sind. Die Festlegung von Zielversionen soll Entwicklungsteams die Nutzung der neuesten Tools ermöglichen – mit ihren erweiterten Debuggingfunktionen und verbesserten Editorfeatures – auch wenn diese (oder vielleicht ihre Kunden) noch nicht bereit sind, ihren Code zu .NET Framework 4 zu migrieren. Mit der Festlegung von Zielversionen haben Sie die Möglichkeit, Anwendungen für die .NET Framework-Versionen 2.0, 3.0, 3.5 oder 4 zu erstellen.

So geht's Wählen Sie beim Starten eines neuen Projekts in der Dropdownliste das Zielframework aus, wie in Abbildung 13 dargestellt.

Abbildung 13: Auswählen einer Framework-Zielversion
Abbildung 13 Auswählen einer Framework-Zielversion

Eine neue Option <Weitere Frameworks> (beachten Sie den letzten Eintrag im eingekreisten Dropdownfeld in Abbildung 13) ermöglicht die Erweiterung der unterstützten Zielframeworks. So können Sie zukünftige Frameworkversionen und später vielleicht auch andere .NET Framework-Profile hinzufügen. Solche Erweiterungen würden wahrscheinlich über MSI installiert. Sie könnten jedoch letztlich auch manuell mit einer XML-Beschreibungsdatei hinzugefügt werden, indem die Framework-Assemblys direkt auf den Computer kopiert werden.

Weitere neue Features

Visual Studio 2010 bietet wesentlich mehr neue Features, als ich in diesem Artikel behandeln konnte. Nicht zu vergessen die anpassbare Startseite, die Unternehmen großartige Möglichkeiten bietet, firmenspezifische Ressourcen einzubinden. Und dann die C++/ANSI-Updates, die ständig aktualisierte Hilfe, die neue Programmiersprache F#, Verbesserungen des Entity Framework, Codevisualisierungen und viele andere interessante neue Features. Diese Funktionen tragen dazu bei, Visual Studio 2010 weiter als attraktives Entwicklungstool zu positionieren, mit dem sich die Art von Software erstellen lässt, die in unserer Branche jetzt erwartet wird. Ich hoffe, Sie haben einen Eindruck von den Vorzügen von Visual Studio 2010 erhalten. Wenn Sie es ausprobieren möchten, können Sie unter microsoft.com/vstudio eine Evaluierungskopie herunterladen. 

Doug Turnure ist Program Manager im Visual Studio-Team bei Microsoft und beschäftigt sich hauptsächlich mit Kundenfeedback und Anpassung. In seiner beruflichen Laufbahn war er Entwickler, Autor, Ausbilder, Tweeter und Vermarkter und hielt gelegentlich Vorträge auf Konferenzen. Turnure lebt jetzt in Seattle, nachdem er Jahre lang geschworen hat, dort nie hinziehen zu wollen.

Unser Dank gilt den folgenden technischen Experten für die Durchsicht dieses Artikels: Miguel Castro, Mark Dunn und Jim Wooley