Produktvarianten Visual Studio 11

Microsoft hat die Produktvarianten für das neue Visual Studio 11 vorgestellt. wie im Heise-Ticker verlautet, wird es wieder Professional, Premium und Ultimate-Editionen neben den kostenlosen Express-Ausgaben geben.

Lightswitch wird, wie bereits vorher beschrieben, integriert sein.

Überraschung beim Preis: die Professional soll es für ca. 500 US-Dollar geben und damit fast 40 % günstiger sein als die aktuelle Professional für Visual Studio 10.

Ob sich dann noch ein MSDN-Abo rechnet?

Asynchrone Methoden einfach erstellen: ASYNC und AWAIT

Lange Wartezeiten auf Rückmeldung des Computers bei komplexen Programmierroutinen gehören unter .Net wohl bald der Vergangenheit an. Das Framework ab Version 4.5 bietet recht einfache Mittel, um einen Programmaufruf „asynchron“ zu gestalten. Die Zauberworte dazu sind „ASYNC“ und „AWAIT“.


War es bis Framework 4.0 noch ein wenig umständlich, eine Routine so aufzurufen, dass die übrigen Befehle weiter abgearbeitet wurden, so kann man heute fast automatisiert einen bequemeren Weg gehen. Ich zeige Ihnen hier anhand eines Beispiels, wie eine Routine aufgerufen wird, die asynchron ablaufen soll.
Das Beispiel beinhaltet eine Form (WPF), und eine Routine, die Asynchron eine Liste von Webseiten besucht und deren Größen ermittelt. Basis für diese Solution ist das Walk-Through-Beispiel von Microsoft, daher auch die vielen Links zu Microsoft-Webseiten.
Das Beispiel wurde in eine eigene Solution eingestellt, mit einer Form umgeben und insofern erweitert, als das es hier nun möglich ist, eigene Texte zu erfassen während im Hintergrund die Webseiten durchforstet werden.

Hinweis: Der hier angegebene Code wurde gekürzt und ist so nicht ablauffähig. Am Ende des Artikels können Sie die lauffähige Solution herunterladen und damit experimentieren.

Eine asynchrone Methode unterscheidet sich in zwei Dingen von einer normalen Methode:
– Sie beginnt mit dem Schlüsselwort „ASYNC“
– Sie liefert als Function immer das geforderte Objekt eingebettet in einem Task mit (bei einer Prozedur wird immer nur der Task zurückgeliefert).

Private Async Function GetURLContentsAsync(url As String) As Task(Of Byte())

Der Aufruf einer asynchronen Funktion wird wie gehabt durchgeführt, allerdings kann der Fortgang dieser Routine mit dem Schlüsselwort „AWAIT“ solange angehalten werden, bis die asynchrone Aufgabe erledigt ist:.

Dim getContentsTask As Task(Of Byte()) = Nothing
Dim urlContents As Byte() = Nothing
getContentsTask = GetURLContentsAsync(url)
urlContents = Await getContentsTask
'Rest der Routine wird erst abgearbeitet, wenn getContentsTask fertig ist...

D.h. der aufrufende asynchrone Job selbst läuft nicht weiter, aber die Anwendung als solche kann neue Befehle entgegennehmen. In dem Beispiel kann Text in eine Textbox eingegeben werden und der Text wird zu dem bisherigen Ergebnis in einem Label angezeigt, und das alles, während der asynchrone Job noch läuft.


Imports System.IO
Imports System.Net

Class MainWindow

'''
<summary>E: Start Async-Task
''' D: Asynchrone Aufgabe starten</summary>
Async Sub OnAsyncClick(sender As Object, e As RoutedEventArgs) Handles m_AsyncButton.Click
' Two-step async call.
Dim sumTask As Task = SumPageSizesAsync()
'AWAIT-State: the following steps in this method will only be processed when sumTask has finished!
Await sumTask

'...
End Sub

'''
<summary>E: assign textbox-text to result-label in sync-mode
''' D: Synchrone Uebertragung des Textes in die Ergebnisbox</summary>
Private Sub m_SyncButton_Click(sender As Object, e As RoutedEventArgs) Handles m_SyncButton.Click
resultLabelAsync.Content &= String.Format(vbCrLf & "{0,-58}", myTextBox.Text)
myTextBox.Text = ""
End Sub

Private Async Function SumPageSizesAsync() As Task

' Make a list of web addresses.
Dim urlList As List(Of String) = SetUpURLList() 'Routine liefert eine Liste mit URLs

Dim total = 0
For Each url In urlList
' GetURLContentsAsync returns a task. At completion, the task
' produces a byte array.
Dim getContentsTask As Task(Of Byte()) = Nothing
Dim urlContents As Byte() = Nothing
Try
getContentsTask = GetURLContentsAsync(url)

urlContents = Await getContentsTask
Catch ex As Exception
'Never do this in productive-environments!
'D: NIE in Produktivumgebungen so machen!
ex = Nothing
End Try
Next
End Function

Private Async Function GetURLContentsAsync(url As String) As Task(Of Byte())
' The downloaded resource ends up in the variable named content.
Dim content = New MemoryStream()
' Initialize an HttpWebRequest for the current URL.
Dim webReq = CType(WebRequest.Create(url), HttpWebRequest)
' Send the request to the Internet resource and wait for
' the response.
Dim responseTask As Task(Of WebResponse) = webReq.GetResponseAsync()

Try

Using response As WebResponse = Await responseTask

' Get the data stream that is associated with the specified URL.
Using responseStream As Stream = response.GetResponseStream()
' Read the bytes in responseStream and copy them to content.
' CopyToAsync returns a Task, not a Task.
Dim copyTask As Task = responseStream.CopyToAsync(content)

' When copyTask is completed, content contains a copy of
' responseStream.
Await copyTask

End Using
End Using
Catch ex As Exception 'e.g. URL not found
'Never do this in productive-environments!
'D: NIE in Produktivumgebungen so machen!
ex = Nothing
End Try
' Return the result as a byte array.
Return content.ToArray()
End Function

End Class

Ich empfinde das als riesige Erleichterung gegenüber den in den Vorgängerversionen notwendigen Mechanismus, wenngleich damit kein Multitasking eingeleitet wird! Es wird nämlich weder ein eigener Thread geschweige denn ein eigener Task aufgebaut!

Das komplette Beispiel als VS2012-Solution können Sie hier herunterladen.

Hinweis: .NET Framework 4.5 steht erst ab Sommer/Herbst 2012 zur Verfügung. Hier kann eine Vorab-Version installiert werden: FrameworkVS 2012

Haben Sie auch schon erste Schritte mit dem Framework 4.5 gemacht? Schreiben Sie hier Ihre Ergebnisse rein, und wenn Sie Fragen haben dürfen Sie mich gerne kontaktieren.

Visual Studio 2012 und Framework 4.5 erhältlich als Vorabversion

Seit Anfang März ist die Beta-Version von Visual Studio 11 (Visual Studio 2012) bei MSDN veröffentlicht und kann heruntergeladen werden. Hier erfahren Sie, wie Sie die neue Entwicklungsumgebung auf Ihren Rechner bekommen.

Unter http://www.microsoft.com/visualstudio/11/de-de/downloads finden Sie die Version im Beta-Stadium. Auch wenn Sie nicht bei Microsofts MSDN angemeldet sind, können Sie dort diese Version herunterladen.

Zunächst einmal verweist dieser Link auf eine Loader-Datei, die nicht das Visual Studio selbst enthält sondern ein kleines Programm ist, welches die notwendigen Daten aus dem Internet herunterlädt. Auch nachdem die Loader-Datei auf dem Computer gespeichert wurde, ist also eine gute Internetverbindung für das Ausführen des Setup erforderlich!

Die Testversion wurde hier auf einer VirtualBox-Instanz des Windows 8 Consumer Preview installiert. Nachdem die Loader-Datei angestartet wurde, erscheint recht schnell der Setup-Begrüßungsbildschirm im neuen Outfit, ein dunkelgrauer Dialog mit grauschattiertem Visual Studio Logo. Bunte Welt ade.

Mehr als 6 GB zeigt der Dialog an, würden für die Installation an Festplattenplatz benötigt. Nun ja, die VirtualBox wurde mit 20 GB eingerichtet, und da ausser dem Betriebssystem nichts installiert ist, sollte das ausreichen. Nach der Bestätigung des Dialogs kann man erst einmal Kaffee trinken, das Auto waschen, die Kinder vom Kindergarten abholen und was man sonst noch so machen kann, in einer Stunde. Erst jetzt werden die Dateien heruntergeladen und installiert, und das dauert.

Anzeige des Installationsfortschritts

Auf den ersten Blick mag dann die neue Aktivitätsleiste interessant erscheinen: Einzelne Punkte treffen sich in der Mitte des Installationsdialogs von links kommend, und rauschen dann wieder in der gleichen Reihenfolge nach rechts raus, um dann wieder von links kommend sich in der Mitte zu versammeln und das Spiel unendlich oft zu wiederholen. Ob sich dieses Spiel unterbindet, wenn ein Fehler auftaucht und die Installation in sich selbst gefangen ist?

Unerklärlicherweise verschwindet nach etwas mehr als einer Stunde dieser Installationsdialog. Passiert ist sonst nichts. Auch wurde kein Link auf Visual Studio angelegt. Die Installation war gescheitert.

Gleich darauf noch einmal angestartet, gleiche Vorgehensweise, und hier sind dann nach noch einmal einer Stunde Erfolge zu sehen:

Installationsergebnis mit Start-Schaltfläche

Die fehlende App-Certifikation tolerieren wir hier großzügig und klicken voller Erwartung auf „LAUNCH“.

Wie auch bei den Vorgängerversionen darf man sich beim ersten Starten von Visual Studio seine Lieblings-Zielumgebung aussuchen, um die optimalen Tastaturbefehle zu laden. Lightswitch wurde dabei hier gleich integriert.

Die Hilfe, die hier noch gar nicht mit installiert wurde, kann über die Option „Local Help Documentation“ direkt heruntergeladen werden, eine zusätzliche Nachinstallation kann damit entfallen.

Anschließend steht einem das neue Visual Studio in der Beta-Version zur Verfügung. Heureka.

In meinen nächsten Blogs erfahren Sie etwas über die neue Entwicklungsumgebung selbst.

.NET Framework 4.5 und Visual Studio 2012 steht in den Startlöchern

Microsoft bemüht sich redlich um seine Entwicklergemeinde. Nach dem Paukenschlag mit Windows 8 und der Metro-Oberfläche, in der Flash und Silverlight einfach nicht existieren, sickern so nach und nach die ersten Erfahrungen mit den Previews des neuen Frameworks 4.5 und VS 2012 (oder auch VS11) durch. Wer diese Erfahrungen auch machen möchte: am Ende des Artikels sind die Links zu den Previews aufgeführt. Happy Coding ;-).

Das Framework soll als Aufsatz auf 4.0 verstanden werden, dabei aber auch 4.0-Teile beschleunigen und vereinfachen. So wird beispielsweise das bereits in c# bekannte „Yield“ für die Iteration in Schleifen nun auch in VB.Net Einzug halten. Durch die neuen Schlüsselworte „async“ und „await“ wird die asynchrone Verarbeitung, also das Abarbeiten mehrerer Aufgaben gleichzeitig, wesentlich einfacher.

Auch für die Webentwickler, und damit auch evtl. für Windows 8 Metro, ist was dabei: HTML5-Unterstützung, und CSS3 soll auch verstanden werden. Das wiederum muss Auswirkungen auf die Intellisense-Funktion der Editoren haben. Das erstmalige Starten läuft dank Multicore-Just-In-Time-Compile spürbar schneller ab, es wird von ca. 35% Zeitersparnis geredet.

Dr. Holger Schwichtenberg hat in seinem Lexikon einige der Neuerungen aufgeführt, hier die wesentlichen Links dazu:

Das neue Framework 4.5, Webentwicklung mit 4.5 und VisualStudio 2012 (VS11).

Jon Galloway von Microsoft gibt in seinem Blog ein wenig mehr Einblick über die neuen ASP MVC-Umgebung und erklärt dabei auch Details.

Besser, schneller, breiter, verwirrender. Ich möchte nicht behaupten, alle Funktionen im Framework 2.0 zu kennen. Und Welten liegen da noch bis zur Version 4.0. Da ist es doch schön, das sich der Abstand dann bis zur 4.5 noch vergrößert. Das spornt an, einmal wieder etwas neues zu entdecken. Das Framework… unendliche Weiten…

Hier kann man die Previews als Entwickler herunterladen:

Framework 4.5

Visual Studio 2012

Voraussetzung ist dabei Windows 7 oder Windows Server 2008; XP scheidet wohl aus, zumal das OS ab 2014 generell nicht mehr unterstützt werden soll.

Und das Erscheinungsdatum? Nun ja, Visual Studio wird auch unter VisualStudio2013 gehandelt! Vor dem Herbst 2012 wäre ein Release also eher eine Überraschung.

Wie gesagt: happy coding!

%d Bloggern gefällt das: