Visual basic 2008 what s new
This presentation is the property of its rightful owner.
Sponsored Links
1 / 30

Visual Basic 2008 – What’s new PowerPoint PPT Presentation


  • 42 Views
  • Uploaded on
  • Presentation posted in: General

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..

Download Presentation

Visual Basic 2008 – What’s new

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


Visual basic 2008 what s new

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([email protected]) = “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


Visual basic 2008 what s new

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


Visual basic 2008 what s new

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


Visual basic 2008 what s new

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


Visual basic 2008 what s new

HEROEShappen {here}

LaunchKit


  • Login