Peter Monadjemi | ActiveTraining

Slides:



Advertisements
Ähnliche Präsentationen
C Sharp (C#) Martin Saternus Senior Student Partner
Advertisements

Was ist neu in VS 2003 ? Ein Überblick. Bernd Marquardt Software & Consulting
Objektorientierung mit VBA
FH-Hof Einbindung von JavaScript Anweisungen
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz.
Imperative Programmierung Funktionen und Parameter
Das Build-Tool ANT ETIS SS05. ETIS SS05 - Nadine FröhlichANT 2 Gliederung Motivation Build - Datei –Allgemeiner Aufbau –Project –Target –Task –Properties.
Programmieren mit JAVA
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Zusammenfassung Vorwoche
Vortrag III Hier in der Vorlesungszeit! Anwesenheitspflicht Jede Gruppe hat 6 Minuten! Stellt eure GUI vor –was ihr besonderes gemacht habt –Spektakuläre.
Software Design Patterns Extreme Programming (XP).
DVG Klassen und Objekte
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
Visual FoxPro 10.0 Visual Extend 10.0
Presenter: Daniel Walzenbach Technologieberater
Presenter: Daniel Walzenbach Technologieberater
MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.
MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 10 Die erste, eigene Klassenbibliothek (Level 100) Presenter: Daniel Walzenbach Technologieberater.
MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 5 Noch mehr Klassen und Strukturen (Level 100) Presenter: Daniel Walzenbach Technologieberater.
Presenter: Daniel Walzenbach Technologieberater
MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 9 Zeichenketten, Delegates und Events (Level 100) Presenter: Daniel Walzenbach Technologieberater.
Was umfaßt die CORBA Core Spezifikation? Welche zusätzlichen Komponenten muß ein ORB Produkt beinhalten? Core: CORBA Objekt Modell CORBA Architektur OMG.
Moderne Visual Basic-Programmierung
Silverlight Eine Einführung. Agenda 1.Was ist Silverlight? 2.Die Silverlight Philosophie 3.Vorstellung des Szenarios 4.Einführendes Beispiel 5.Konzepte.
SQL Server 2005 CLR-Integration
Michael Köster User Experience Specialist Microsoft Corporation.
Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen.
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Bedeutung von Internet-Technologien
Your name Bedeutung von Internet- Technologien Gruppe 1 Andreas Feuerstein Philipp Hochratner Christian Weinzinger.
Einführung in die Programmierung
Windows Presentation Foundation WS 2013/14 Prof. Dr. Herrad Schmidt
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 2 Folie 2 XAML (1) s.a.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Microsoft.NET Framework: Quelle:
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 5 Folie 2 ADO.NET s.a:
Entwicklung verteilter Anwendungen II, SS 13 Prof. Dr. Herrad Schmidt SS 13 Kapitel 2 Folie 2 ASP.NET HTTP-Handler (1)
CGI (Common Gateway Interface)
Was dir Trivialbeispiele in Async and Await nicht sagen! Marcus Kimpenhaus und Martin Möllenbeck.
Die Grundidee Funktionsaufruf Funktionsname (Kopf) Code der Funktion
Grundkonzepte des Programmierens (mit ActionScript)
Von Isabelle Spörl und Simon Schausberger
Vortrag: Visual Basic Neuerungen Autor : Dennis Hoyer
Variablen in Programmiersprachen
SQLite und XML in PHP 5.
Einführung in PHP.
Einführung in PHP 5.
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Variablen. var meineZahl:Number = 7; meineZahl 7 Name TypWert = Zuweisung von Variablen.
SFZ FN Sj. 13/14 Python 3 Rekursion Inf K1/2 Sj 13/14
Parallele Programmierung im.NET Framework Darmstadt, Präsentation am Beispiel von C-Sharp (C#)  Wichtige Grundlagen  Generika, Delegate, Lambda,
Einführung in Java PING e.V. Weiterbildung Andreas Rossbacher 24. März 2005.
Abstrakte Klassen und das Interface-Konzept
Microsoft Student Partner
Microsoft Silverlight Autor: Christian Pirker. Inhalt Einführung Silverlight Einführung XAML Silverlight 1.0 und 1.1 Silverlight 2.0 Silverlight 3.0 Ausblick.
Objektorientierte (OO) Programmierung
© OPITZ CONSULTING GmbH 2010Seite 1SOA Testing Konstruktionsraster 20mm 4mm OPITZ CONSULTING Vorlage Powerpoint 2009; Version 1.0; ; TGA, MVI,
Objektorientierte Programmierung §Klassen §Objekte §Attribute §Eigenschaften §Methoden §Datenkapselung §Ereignisse §Vererbung §Entwicklungszeit §Laufzeit.
Programmierung unter VB.Net mit der IDE VisualStudio. Schritt für Schritt erklärt und beschrieben. Zielgruppe: Komplette Neueinsteiger mit fundiertem Computerwissen.
XML-basierte Beschreibungssprachen für grafische Benutzerschnittstellen Seminarvortrag im Studiengang „Scientific Programming“ von Steffen Richter.
Nksainf.ch/oinf.
 Präsentation transkript:

Peter Monadjemi | ActiveTraining Was ist neu bei VB11?

Die Themen Co-Evolution VB hat aufgeholt Die (drei) Neuerungen auf einen Blick Asynchrone Aufrufe neu definiert Iteratoren Entwickeln für Windows 8 Weitere Neuerungen bei VS 11 und .NET 4.5 Ein Blick in die nähere Zukunft

Co-Evolution „VB und C# werden in Zukunft gemeinsam weiterentwickelt“ Anders Heljsberg, Distinguished Engineer bei Microsoft (und „Vater“ von Turbo Pascal und Delphi) im Juni 2009

C# nähert sich VB an Über das dynamic-Schlüsselwort ist eine späte Bindung möglich Optionale und benannte Argumente bei Methoden C# hat damit VB „eingeholt“ - lediglich „Inline-XML“ gibt es nicht

VB nähert sich C# an Ein – und mehrzeilige Lambdas Einzeilige Properties Collection-Initialisierer Mit VB11 auch Iteratoren Ein paar Kleinigkeiten fehlen, z.B. ein direktes Pendant zum delegate-Befehl und den anonymen Methoden (Lambdas bei VB) delegate int FunDel(int x1, int x2); FunDel f1 = delegate(int p1, int p2) { return p1 + p2; };

VB hat aufgeholt XNA 4.0 – DirectX-Spiele können auch in VB entwickelt werden .NET MicroFramework ab Version 4.2 – VB-Code läuft auf kleinen RISC-CPUs Microsoft Surface 2.0 SDK enthält VB-Beispiele Windows Phone 7 – VB-Code läuft (unter Silverlight) auf einem SmartPhone Im Rahmen von Silverlight läuft VB-Code auch unter Mac OS X Es gibt keine Abhängigkeit zur VB-Laufzeit (Namespace Microsoft.VisualBasic) mehr

Die (drei) Neuerungen bei VB 11 Implementierung des Task-based Asynchronous Pattern (TAP) durch die Schlüsselwörter Async und Await Iteratoren über das Schlüsselwort Iterator Der Stammnamespace kann über Global überschrieben werden (wie in C#) Ich hoffe, ich habe nichts vergessen;) Eventuell enthält die aktuelle Beta1 noch etwas

Asynchrone Aufrufe Warum? Vorteile? Das Task-based Asynchronous Pattern (TAP) in .NET 4.5 Neu bei VB11: Async und Await Ein paar Beispiele Beispiele basieren auf der Async CTP 3 für VS 2010 SP1 – mit .NET 4.5 wird es kleinere Änderungen geben

Asynchrone Aufrufe – warum? Problem: Länger dauernde Operationen blockieren den UI-Thread Warten auf eine Antwort einer Web-Anfrage Warten auf eine Datenbankabfrage Umfangreichere Berechnung usw. Vor allem bei mobilen Anwendungen darf die UI nicht „einfrieren“

Asynchrone Aufrufe – Lösungsansätze Es gibt verschiedene Lösungsansätze: Begin<Operation>/End<Operation>-Entwurfsmuster aus .NET 1.x (z.B. FileStream-Klasse) Auslagern auf einem Backgroundthread aus dem Threadpool Asynchrone Aufrufe über Delegaten, BeginInvoke und einem Callback Einige wenige.NET-Methoden sind von Haus aus asynchron und melden sich über ein Event (z.B. DownloadStringAsync der WebClient-Klasse) Die BackgroundWorker-Komponente (der einfachste Ansatz)

Asynchrone Aufrufe – Schwachpunkte der vorhandenen Ansätze Erhöhter Implementierungsaufwand Viele Entwickler schrecken vor Delegaten, asynchronen Callbacks zurück (wirken kompliziert) Was ist mit vorzeitigem Abbruch oder einer Fortschrittsmeldung? Die Programmlogik muss angepasst werden Threads kosten Ressourcen (1 Mbyte Arbeitsspeicher pro Thread?)

Asynchrone Aufrufe – Neu: TAP TAP – Task-based asynchronous Patterns Empfehlung von Microsoft für die Umsetzung und den asynchronen Aufruf beliebiger Methoden Unbedingt das White-Paper lesen http://www.microsoft.com/download/en/details.aspx?id=19957

Asynchrone Aufrufe – TAP im Detail (1) Basiert auf den mit .NET 4.0 eingeführten Tasks Ein Task steht für eine Operation (Methode), die vom Task Scheduler ausgeführt wird Es gibt nur ein Methode Namenskonvention: <Operation>TaskAsync Gibt immer ein Task- bzw. Task(Of T)-Objekt zurück

Asynchrone Aufrufe – TAP im Detail (2) Die TaskAsync-Methode kehrt „sofort“ zurück Der Initialisierungscode (sofern vorhanden) wird synchron ausgeführt Die Rückgabe ist immer ein Task-Objekt Der Hauptteil wird asynchron ausgeführt, das Ergebnis wird über das Task-Objekt zur Verfügung gestellt Exceptions werden ebenfalls über das Task-Objekt zur Verfügung gestellt Ein TaskAsync-Methode kann über ein CancellationToken jederzeit abgebrochen werden

Asynchrone Aufrufe – ein Beispiel für eine TAP-Methode Eine TaskAsync-Methode gibt ein Task(Of T)-Objekt zurück Dim T = Wc.DownloadStringTaskAsync("http://basta.net") Dim Content = Await T Task(Of String) Ohne den Umweg über eine Task(Of T)-Variable Dim Content = Await Wc.DownloadStringTaskAsync("http://basta.net") Befehl1 Befehl2 Nicht blockierend Werden über einen Callback erst nach Beendigung des Tasks ausgeführt

Asynchrone Aufrufe - TAP bei .NET 4.5 .NET 4.5 implementiert TAP auf zwei Ebenen Es gibt verschiedene AsyncTask-Methoden, z.B. DownloadStringAsyncTask bei der WebClient-Klasse Über die Schlüsselwörter Async und Await (async und await bei C#)

Ein erstes Beispiel Vorher: Synchroner Download mehrerer Webseiten Function DownloadWebContent() As Integer Dim Wc As New WebClient Dim Anzahl = Wc.DownloadString("http://basta.net").Length Anzahl += Wc.DownloadString("http://heise.de").Length Anzahl += Wc.DownloadString("http://www.activetraining.de").Length Return Anzahl End Function Nachher: Asynchroner Download dank Async und Await Async Function DownloadWebContentAsync() As Task(Of Integer) Dim Wc As New WebClient Dim Content = Await Wc.DownloadStringTaskAsync("http://basta.net") Dim Anzahl = Content.Length Content = Await Wc.DownloadStringTaskAsync("http://heise.de") Anzahl += Content.Length Content = Await Wc.DownloadStringTaskAsync("http://www.activetraining.de") Return Anzahl End Function

Die Rolle von Await (1) Neuer Operator in VB 11 Kann nur in Subs/Functions eingesetzt werden, die mit Async deklariert sind (=asynchrone Methode) Wartet auf das Resultat des gestarteten Tasks, ohne den Thread zu blockieren Await „splittet“ die Methode in zwei Abschnitte auf Abschnitt 1 legt den Task an und kehrt zurück Abschnitt 2 umfasst die auf Await folgenden Befehle, die über einen Callback aufgerufen werden

Die Rolle von Await (2) Wird nach Beendigung des Tasks ausgeführt Async Sub Test() Dim z = Await TuWas() Console.WriteLine(z) End Sub Async Function TuWas() As Task(Of Integer) Await TaskEx.Delay(5000) Return Await TaskEx.Run(Of Integer)(Function() Return 1234 End Function) End Function Wird nach Beendigung des Tasks ausgeführt

Beispiel: Asynchroner RSS-Reader WPF-Anwendung RSS-Feeds werden über DownloadStringAsyncTask heruntergeladen Abbruch jederzeit möglich Fortschrittsanzeige über IProgress-Schnittstelle

Mehrere Tasks zusammenfassen Vorher: WhenAll fasst mehrere Tasks zu einem Task zusammen Async Sub DownloadUrls() Dim UrlListe() = {"http:/www.heise.de", "http:///www.basta.net", "http://dotnet.de", "http://msnd.com"} Dim AlleTasks As IEnumerable(Of Task) = From url In UrlListe Select TuWasAsync(url) ' Genial: WhenAll fasst alle Tasks zu einem neuen Task zusammen und Await wartet, dass alle Tasks fertig sind Await TaskEx.WhenAll(AlleTasks) Console.WriteLine("Alle Tasks haben fertig...") End Sub Genial: Methodenaufruf, der ein Task-Objekt liefert, aus der LINQ-Abfrage herausl Async Function TuWasAsync(Url As String) As Task(Of Boolean) Await TaskEx.Run(New Action(Sub() Console.WriteLine("Verarbeite {0} auf Thread-ID: {1}", Url, Thread.CurrentThread.ManagedThreadId) Thread.Sleep(5000) End Sub)) Return True End Function Hilfsklasse der Async CTP Künstliche Verzögerung Thread aus Threadpool

Iteratoren Was ist ein Iterator? Ein Beispiel zur Einstimmung Weitere Beispiele

Iteratoren - Was ist ein Interator? Iterator = Funktion vom Typ IEnumerable(Of T), die wie eine Collection durchlaufen wird Wird mit dem neuen Iterator-Schlüsselwort implementiert Ein Wert wird über den neuen Yield-Befehl zurückgegeben Vorteil: Die Rückgabe der einzelnen Werte lässt sich steuern Vorteil: Generell mehr Flexibilität Der LINQ-Effekt: Sobald man sich daran gewöhnt hat, verwendet man es bei der jeder Gelegenheit

Iteratoren – ein Beispiel zur Einstimmung Beispiel: Ein Range-Methode gibt einen Zahlenbereich zurück Variante A: Dim Zahlen = Range1(4, 10) Iterator Function Range1(Min As Byte, Max As Byte) As IEnumerable(Of Byte) For i = Min To Max Yield i Next End Function Variante B: Function Range2(Min As Byte, Max As Byte) As IEnumerable(Of Byte) Return Iterator Function() For i = Min To Max Yield I Next End Function.Invoke() End Function

Iteratoren – mit einem Lambda Beispiel: Ein Lambda-Iterator gibt einen Zahlenbereich zurück Dim Zahlen = Iterator Function(min As Integer, max As Integer) For i = min To max Yield i Next End Function.Invoke(4, 5) Aufruf des Lambda

Iteratoren und Inline-XML Beispiel: Ein Lambda-Iterator gibt einen Zahlenbereich zurück Dim RSS = <?xml version="1.0"?> <RSS> <chanell> <%= Iterator Function() For Each M In Meldungen Yield <item> <title><%= M.Titel %></title> <date><%= M.Zeitpunkt.ToShortDateString()></date> </item> Next End Function.Invoke() %> </chanell> </RSS> XElement-Objekt Collection mit Meldung-Objekte Lambda-Iterator Xdocument-Objekt

Iteratoren – Weitere Beispiele Implementierung einer einfachen State-Machine Durchlaufen eines Baums

Entwickeln für Windows 8 Neu: Windows Runtime anstelle von .NET Runtime Metro Style-Anwendungen als neuer Anwendungstyp Die Rolle von Visual Basic

Die Windows Runtime (Windows RT) Laufzeit für Windows 8 Metro Style-Anwendungen Umfasst ca. 1.800 Klassen Kapselt viele Win32-API-Funktionen Wird über COM-Schnittstellen angesprochen (IUnknown ist zurück) Über „Projections“ Schnittstellen zu NET, C++ usw. Es gibt eine .NET-Metro-Klassenbibliothek (Metro Style Profile) Der Name ist .NET for Metro Style Apps Teilmenge der .NET-Klassenbibliothek Teilweise nicht kompatibel (andere Typen- und Membernamen)

Das neue Anwendungsmodell

Metro Style Apps Neues Oberflächenmodell - das erste seit Windows 95 (!) Im Mittelpunkt stehen die mit der Windows Phone 7-Oberfläche (Metro) eingeführten Kacheln Kacheln – Einstiegspunkt für eine Anwendung Optimiert für Touch-Oberflächen

Die Rolle von Visual Basic Windows 8 enthält die .NET 4.5-Laufzeit Entwickelt wird mit VS 11 bzw. VS 11 Express Edition Zahlreiche Vorlagen Oberfläche wird in XAML definiert Silverlight-Apps können mit geringem Aufwand umgestellt werden Anwendungen werden nach wie vor von der CLR (4.5) ausgeführt

Verbesserungen bei .NET 4.5 und VS 11 Neue Klassen, z.B. HttpClient Implementierung des Task-based Asynchronous Pattern Neuer WPF- und Silverlight-Designer Der Designer aus Expression Blend wurde in die Visual Studio-IDE „eingepflanzt“ Wichtige Verbesserungen beim Thema Application Life Cycle Management (ALM)

Roslyn – Compiler als Service Die Compiler-Infrastruktur wird aufgebohrt und ihre Funktionalitäten werden über Klassen zur Verfügung gestellt Entwickler können sich damit eigene Syntaxparser oder Codegeneratoren schreiben Seit Oktober 2011 gibt es eine erste CTP – möglicherweise Teil des Nachfolgers von .NET 4.5

Roslyn – viele neue Möglichkeiten Die Compiler-Klassen standen bei .NET schon immer zur Verfügung Namespace System.CodeDom.Compiler Damit lässt sich zur Laufzeit Quellcode in eine Assembly kompilieren und ausführen Roslyn bietet einen Zugriff auf die einzelnen Phasen der Kompilierung und den resultierenden Syntaxbaum, der das kompilierte Programm repräsentiert Neben einer Syntaxanalyse ist eine auch eine semantische Analyse des Codes möglich

Roslyn – Beispiele aus der CTP VisualBasicToCSharpConverter Konvertiert VB-Code nach C# RemoveByValVB Entfernt überflüssige ByVal`s OrganizeSolutionVB Sortiert Import-Anweisungen ConvertToAutoPropertyVB Konvertiert „leere“ Property-Definitionen in Auto-Properties ScriptingIntro (aktuell nur C#) C#-Shell mit einem C#-Intepreter

Ein Blick in die Zukunft (1) Das Innovationstempo wird sich bei der Sprache sicherlich verlangsamen Die „wir müssen die VB6-Entwickler zurückgewinnen“-Phase ist bei Microsoft wieder vorbei Alle wichtigen Sprachelemente sind implementiert Die Möglichkeit jede Methode asynchron aufrufen zu können ist ein wichtiger Schritt in die richtige Richtung - vor allem für VB-Entwickler

Ein Blick in die Zukunft (2) Ein paar Anregungen für künftige Sprachelemente bei VB und C# findet man sicher bei F# Roslyn wird neue IDE-Tools ermöglichen C#->VB-Konverter Eine VB.NET-Skript-Shell Wer braucht weitere Features? Die aktuell vorhandene Funktionalität ist mehr als ausreichend

Feedback und Fragen Bitte Feedbackbogen ausfüllen Bei Fragen rund um VB – pm@activetraining.de Mein Visual Basic-Kompendium kommt im Herbst 2012 ! Der rote Faden ist die „Moderne Visual Basic-Programmierung“