Visual basic 2008 what s new
Download
1 / 30

Visual Basic 2008 – What’s new - PowerPoint PPT Presentation


  • 63 Views
  • Uploaded on

Visual Basic 2008 – What’s new. André Obelink, MCSD – MVP MarYor | software & consultancy www.vbcentral.nl | www.obelink.com | www.maryor.nl. Me.About.ToString (). MarYor | software & consultancy Auteur van artikelen en boeken..

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Visual Basic 2008 – What’s new' - esben


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Visual basic 2008 what s new

Visual Basic 2008 – What’snew

André Obelink, MCSD – MVP

MarYor | software & consultancywww.vbcentral.nl | www.obelink.com | www.maryor.nl


Me about tostring
Me.About.ToString()

  • MarYor | software & consultancy

  • Auteur van artikelen en boeken..

    • Geschreven voor Microsoft .NET Magazine, PC Active,MSDN Magazine Europe, SDN Magazine, VB Magazine

    • Boek: Visual Basic 2005 – de Basis (9/2006)

    • Boek: Visual Basic Kookboek (3/2008)

    • Boek: Visual Basic 2008 – de Basis (verwacht 5/2008)

  • De andere persoon achter VBcentral.nl

  • VP Speakers Bureau INETA Europe

  • Microsoft MVP voor Visual Basic sinds 2006


Wat niet aan de orde komt
Wat niet aan de orde komt…

  • Diverse uitbreidingen binnen VS2008 IDE

    • Quality tools

    • Uitbreidingen ten behoeve van WPF applicaties

    • Uitbreidingen ten behoeve van webapplicaties

    • Reporting: nieuwe Report Projects

    • MSBuild: multi-targetting, multiple processors

    • …….

  • http://msdn2.microsoft.com/en-us/library/bb386063.aspx


Wat wel aan de orde komt
Wat wel aan de orde komt…

  • Performance VB2008 ten opzichte van VB2005

  • IntellisenseEverywhere

  • LanguageIntegrated Query (LINQ)

    • LINQ to Objects, LINQ to SQL en LINQ to XML

    • En de taaluitbreidingen die LINQ mogelijk maakt… Type Infering, Object Initializers, Anonymous types, Extensionmethods, LambdaExpressions, …

  • XML Data Type


Performance vb2008 vb2005
Performance VB2008 ↔VB2005

Bron: Lisa Feigenbaum (VB team). Testmachine: Windows XP, Dual Core Pentium, 3.0 Ghz, 1 GB RAM

  • Verdereperformance verbeteringen

    • - Debugger, projecten laden, …


Intellisense
Intellisense

  • Intellisense ‘everywhere’

  • Performance sterk verbeterd

  • Intellisence voor JavaScript, CSS en XML literals

  • Transparant met CTRL toets

    • onderliggende code zichtbaar

  • VB: filtert het resultaat, waardoor lijst compacter

  • VB: LINQ en Intellisense + tooltip hints


Visual basic 9 0 design goals
Visual Basic 9.0 – Design Goals

  • Vereenvoudig het werken met data

    • Integratie van query- en transformatie opdrachten

    • Universele manier van ‘quering’ van objecten, relationele data en XML data

  • Vereenvoudig het werken met XML

    • Breng structuur in documenten zonder schema

    • Maak creëren van XML documenten makkelijker

    • Vereenvoudig toegang tot XML elementen


Language integrated query linq
LanguageINtegrated Query (LINQ)

Overige…

C#

VB

.NET Language-Integrated Query

Databronnen die LINQ ondersteunen

LINQ binnen ADO.NET

LINQ

To XML

LINQ

To Objects

LINQ

To Datasets

LINQ

To Entities

LINQ

To SQL

<boek>

<titel/>

<auteur/>

</boek>

Objecten

Relationele data

XML


Demo

LanguageIntegrated Query


De magie achter linq
De ‘magie’ achter LINQ

Dim query = Fromproc In Process.GetProcesses _

Whereproc.Threads.Count > 10 _

Select proc.ProcessName, proc.Threads.Count

Dim query = Process.GetProcesses(). _

Where(Function(proc As Process) proc.Threads.Count > 10). _

Select(Function(proc As Process) _

New With{.ProcessName = proc.ProcessName, _

.Count =proc.Threads.Count})

Function _Filter1(proc As Process) As Boolean

Return proc.Threads.Count > 10

Exit Function

  • Function _Projection1(proc As Process) As <AnonymousType>

  • Dim projection As New <AnonymousType>

  • projection.ProcessName = proc.ProcessName

  • projection.Count = proc.Threads.Count

  • Return projection

  • End Function


Query expressions
Query Expressions


Relationele data vandaag de dag
Relationele data vandaag de dag

Dim connectionAs New SqlConnection(…)

  • connection.Open()

    Dim cmd As New SqlCommand(“SELECT c.Name, c.Phone “ & _

    “FROM Customers As c” & _

    “WHERE c.City = @p0”)

    cmd.Parameters(“@p0”) = “London”

    Dim dr As DataReader = connection.Execute(cmd)

    Whiledr.Read()

    Dim name as String = dr.GetString(0)

    Dim telefoon as String = dr.GetString(1)

    Dim gebdatum As Date = dr.GetDateTime(2)

    End While

  • connection.Close()

Queries tussen aanhalingstekens

‘looselybound’ argumenten

‘looselytyped’ resultaten

Geen controle tijdens compileren


Relationele data met linq
Relationele Data met LINQ

Public ClassCustomer

End Class

Public ClassNorthwind

InheritsDataContext

Public PropertyCustomers As Table(Of Customer)

End Class

Klassen beschrijven data

Een Table is een soort collection

‘stronglytyped’ connection

Dim db As New Northwind(…)

Dim contact = Fromcust in db.Customers _

Wherecust.City = “London”

Select cust.Name, cust.Phone

For EachcustInfo in Contacts

DoeIets(custInfo.Name, custInfo.Phone)

Next

Geïntegreerde query syntax

‘stronglytyped’ resultaten


Demo

Linq voor relationele data – Linq to SQL


Even wennen aan de sql syntax
Even wennen aan de ‘SQL’ syntax

Nodig voor IntelliSense

  • From komt voor Select

Dim klanten = From klant in db.Customers _

Select klant.CustomerID, klant.CompanyName

  • Veel vrijheid bij bouwen query

Bouw opdrachten ‘regel voor regel’ …

Dim klanten = From klant in db.Customers _

Select klant.Name, klant.City, klant.ZIP _

Order By ZIP, _ Select Name, City

… en over meerdere statements

Dim klanten2 = From klant in klanten _

Whereklant.Name.StartsWith(“O”) _

Select klant.Name, klant.City

Eventueel Select achterwege laten


Even wennen aan de sql syntax1
Even wennen aan de ‘SQL’ syntax

Zogenaamde ‘GroupingKey’

  • Expliciete aggregatie

  • Bevat ook operators voor hiërarchische data

Dim klanten = Fromsodin db.SalesOrderDetails _

Group Bysod.SalesOrderHeader.CustomerID _

IntoOrderTotaal = Sum(sod.OrderQty * sod.UnitPrice) _

Select CustomerID, OrderTotaal

Expliciete aggregatie

ImportsSystem.Diagnostics

Dim procs = Fromproc In Process.GetProcesses() _

Aggregate thread In proc.Threads _

IntoThreadPriorityGemiddelde = Average(thread.CurrentPriority) _

  • Select LijstProcessen = proc.ProcessName, ThreadPriorityGemiddelde

Groep bestaat al


Demo

Linq to XML – Maak XML


Maak xml vandaag de dag
Maak XML - vandaag de dag

Dim doc As New XmlDocument

Dim wns As XmlElement = doc.CreateElement("Werknemers")

For Each werknemer As Werknemer In werknemers

Ifwerknemer.Achternaam = "Jansen" Then

Dim wn As XmlElement = doc.CreateElement("Werknemer")

Dim BSN As XmlAttribute = doc.CreateAttribute("BSN")

BSN.Value = werknemer.BSN : wn.Attributes.Append(BSN)

Dim an As XmlElement = doc.CreateElement("Achternaam")

an.InnerText = werknemer.Achternaam : wn.AppendChild(an)

Dim voornaam As XmlElement = doc.CreateElement("Voornaam")

voornaam.InnerText = werknemer.Voornaam : wn.AppendChild(voornaam)

wns.AppendChild(wn)

End If

Next

doc.AppendChild(wns)

Imperatief model

Geen geïntegreerde queries

‘Document centric’

Geheugen intensief

<Werknemers>

<Werknemer BSN=“12345”>

<Achternaam>Jansen</Achternaam>

<Voornaam>Piet</Piet>

</Werknemer>

</Werknemers>


Linq to xml maak xml
LINQ to XML – Maak XML

Declaratief model

Dim xml As New XElement("Werknemers", _

From w In werknemers _

Wherew.Achternaam = "Jansen" _

Select New XElement("Werknemer", _

New XAttribute("BSN", w.BSN), _

New XElement("Achternaam", w.Achternaam), _

New XElement("Voornaam", w.Voornaam)))

Geïntegreerde queries

‘Element centric’

Kleiner en sneller


Demo

Linq to XML – Geïntegreerde XML binnen VB


Ge ntegreerde xml binnen vb
Geïntegreerde XML binnen VB

InfersXml.LinqXElement

Dim werknemersxml = _

<Werknemers>

<%= From w in werknemers _

Wherew.Voornaam = “Jan” _

Select <Werknemer>

<Achternaam><%= w.Achternaam %></Achternaam>

  • <Voornaam><%= w.Voornaam %></Voornaam>

    </Werknemer>

    %>

    </Werknemers>

Geen conceptuele barrière

‘Expression holes’ voor dynamische data / variabelen.


Visual basic 2008 features
Visual Basic 2008 - Features

  • Query expressions

  • XML literals

  • XML element access

  • Nullable types

  • Object initializers

  • Local type inference

  • Lambdaexpressions

  • Extensionmethods

  • Expression trees

  • Anonymous types

  • Ternary operator

  • Coalesce operator

  • Relaxed delegates

  • Partialmethods


Tot de tijd op is
Tot de tijd op is…

Taaluitbreidingen die LINQ mogelijk maken,

maar ook erg handig zijn voor eigen gebruik!


Extension methods
Extensionmethods

  • Uitbreiden van bestaande datatypen

    • Plaats methode in module en in zelfde namespace

    • Markeer methode met <Extension()>

<Extension()> _

Public Function Omdraaien(ByValtekst As String) As String

Dim karakterArray() As Char = tekst.ToCharArray()

Array.Reverse(karakterArray)

Return New String(karakterArray)

End Function

Dim strNaam As String = “André”

Debug.PrintstrNaam.Omdraaien()

--------------

Resultaat

érdnA


Object initializers
Object Initializers

  • Specificieer eigenschappen bij instantiëren

    • Is anders dan een overloaded Sub New()

    • Gebruik With {.eigenschapnaam = ….}

Public Class Werknemer

Public Property BSN() As String

….

End Property

….

End Class

Dim werknemer As New Werknemer() With {.BSN = “123”}

of …

Dim bestand As New FileInfo(“c:\test.txt”) _

With {.IsReadOnly = True, _

.CreationTime = Now}


Anonymous types
Anonymous Types

  • Definieer + instantieer objecten ‘on the fly’

    • … dit is waar LINQ op gebaseerd is...

Dim boek = New With {.Titel = "Visual Basic Kookboek", _

.Auteur = "André Obelink", _

.ISBN = 9789043014878}

boek.Titel &= " - Luxe Editie"


Lambda expressions
LambdaExpressions

  • Functiedefinitie binnen een andere functie

    • lambda expressies zijn ook als argument te gebruiken

    • soort instantie van een delegate

Dim woordenLijst As New List(Of String)

woordenLijst.Add("een") : woordenLijst.Add("twee")

woordenLijst.Add("vier") : woordenLijst.Add("zes")

Dim DrieLetterWoorden = Function(s As String) s.Length = 3

Dim lijst = woordenLijst.FindAll(DrieLetterWoorden)

For Each getal In lijst

MessageBox.Show(getal)

Next

Dim Verdubbel = Function(Getal As Integer) Getal * 2

MessageBox.Show(Verdubbel(5).ToString)

MessageBox.Show(Verdubbel(13).ToString)


Visual basic 2008 extra s
Visual Basic 2008 – Extra’s

  • Refactor!

    • Gratis Visual Studio Add-In van DevExpress

    • Geschikt voor Visual Basic 2003 – 2008

    • Veel nieuwe features (>15), enkele alleen VB

  • Visual Basic Power Packs 3.0  VB6 upgrade

    • PrintForm, Printer CompatibilityLibrary

    • Line en Shape Controls

    • InteropForms Toolkit 2.0  MDI + User controls

    • DataRepeaterControl


Vragen
Vragen?

e-mail: [email protected]

web: www.obelink.com | www.maryor.nl


HEROEShappen {here}

LaunchKit


ad