Migration nach VB .NET
Jens Häupel
Developer Platform & Strategy Group
Microsoft Deutschland GmbH
[email protected]
Agenda
 Top News - Was ist IN und was OUT
 Neuigkeiten, Änderungen
 Migration
 Bevor es losgeht
 Die Umstellung
 Technologien für den Teilupgrade
 Gegenüberstellung VB6 – VB .NET
 Performance
 Produktivität
VB .NET = VB6 + 1 = VB7?
 Neues Konzept, neue Basis
 Designed für .NET Framework
 CLR, Base Class Library
 Modernisierte und aufgeräumte Sprache
 Neue Sprachfeatures
 Komplett neue Architektur
 Komplett objektorientiert
VB .NET - Top News
Neues aus der IDE
 Eine IDE für alle Projekte/Solutions
 Web Development
 Desktop Development
 Mobile Development
 Start-Seite bietet Zugriff auf
 Projekte
 Online-Ressourcen
 Server Explorer
 SQL Server-Administration
 Zugriff auf System-Ressourcen
Neues aus der IDE






Eine IDE für alle .NET-Sprachen
MyProfile
Intelligente Code-Formatierung
Regions
Dynamische Hilfe
Aufgabenbereich
 Syntaxfehler
 Benutzerdefinierte Kommentare
Neues aus der IDE




Klassenansicht
Floating Windows
XML Schema Designer
Visual Studio Installer
 Custom Actions als .NET Code
 Benutzerdefinierte Dialoge
 Macro Explorer
 Integrierter Internet Explorer
Neue Features von VB .NET
 Überladung von Funktionen
 Verschiedene Signaturen
 Überschreiben von Funktionen
 Bsp: Ableiten von best. Control
Protected Overrides Sub WndProc(ByRef msg As Message)
' Do something
' Finally: Pass message to default handler:
MyBase.WndProc(msg)
End Sub
 Dock / Anchor - Properties
Neue Features von VB .NET
 Einfach verbindend: WebServices
 ASP.NET – Code Behind Prinzip
 no more Visual Interdev
 GDI+  Visuelle Effekte (Opacity)
 Leichtere Lokalisierung
 Visueller Menüeditor
Neue Features von VB .NET
 Common Type System
 Identische Typen für alle Sprachen
 Strukturierte Ausnahmebehandlung
Try
'execute some code
Catch ix As System.IO.FileLoadException
'Handle IO Exception
Catch sx As System.Security.SecurityException
'Handle Security Exception
Catch ex As System.Exception When Exp=True
'Handle general Exception
Finally
'Execute this code always when Try block is being left
End Try
Neue Features von VB .NET




Attribute
Multithreading
Völlig neues Objektkonzept
Vererbung
 Class Object: Die Mutter aller Objekte
 Visual Tab Order Editing
Sprachliche Änderungen






Array-Basis: 0
Private i, x, y As Integer
i += 1, strName &= “Bob”, etc.
For i As Integer = 0 To 10
ByRef / ByVal erforderlich
VB6.NET
Datentypen in VB




Byte : 8 Bit
Short
Integer: 16
: 16Bit
Bit
Integer
: 32
Long : 32
BitBit
Long : 64 Bit
Ausgediente Controls
Spinner
DomainUpDown, NumericUpDown
Line
und Shape Namespace
System.Drawing
DirListBox,
FileListBox,
DriveListBox
OpenFileDialog,
SaveFileDialog
CommonDialog
Color-, Font-, PageSetup-, PrintDialog
Image
PictureBox
Frame
GroupBox, Panel
Strengere Typüberprüfung
= Knebelung des Programmierers?
 Implizite Konvertierung
Dim d1 As Double
Dim s1 As String
s1 = "12,3"
d1 = s1
12,3 oder 123 ?
Option Strict On
 Vermeidet Programmierfehler
 Erzwingt explizite Konvertierung
Namespaces
 Gruppieren verwandte Objekte
 FileIO, Security, WinForms, …
 Voll qualifizierte Namen für Objekte
 MyGraphicLib.Drawing.Pen
vs.
AnotherPersonsGraphicLib. Drawing.Pen
 Vermeiden Namenskonflikte
 Import von Namespaces
 Imports System.IO
Migration nach .NET
Bevor es losgeht
Vorüberlegungen




Alles umstellen, teilweise oder gar nicht
Modular oder monolithisch?
Größe der Projekte
Abgeschlossen oder in ständiger
Weiterentwicklung
 Art der Projekte
 Verwendete Technologien und
Sprachelemente
 Codequalität
Auswahl / Bewertung
 Welche Vorteile bringt die Umstellung?





Standardisierung auf einer Plattform
Skalierbarkeit
Verbesserung der Architektur
Einfachere Weiterentwicklung
Bessere Interoperabilität mit anderen
Sprachen
 Neue Features, bessere Leistung
 Aufwand bewerten
 Schritte planen
Upgrade Überlegungen
 Nicht-upgradebare Technologien
Technologie
Visual Basic 6.0 drawing model
Empfehlung
In VB6 belassen oder in GDI+ neu
DAO and RDO data binding
Dynamic Data Exchange (DDE)
DHTML Applications
Microsoft® ActiveX®
Property pages
UserControls
Update nach ADO oder ADO.NET
In VB6 belassen oder alternate
Methode verwenden
In VB6 belassen
Upgrade nach Visual Basic 6.0 bzw.
Danach nach Visual Basic .NET
Leave; can work with .NET
Arbeitet über COM interop mit .NET
In VB6 belassen
In VB6 belassen - can work with .NET
WebClasses
In VB6 belassen - can work with .NET
OLE Container Control
Visual Basic 5.0 controls
Wie herangehen?
 Aufspalten in Teilprojekte
 COM Komponenten weiter verwenden
 COM Interop
 Abhängigkeitshierarchie
(Client  Middle Tier  Server)
Server
Middle Tier
Client
.NET
.NET
.NET
Migration: Vorbereitung
 Code vor dem Konvertieren analysieren
 Alte Konstrukte beseitigen






DefInt, DefStr, Def*…
GoTo, GoSub .. Return
VarPtr, ObjPtr, StrPtr, Lset
Option Base <> 0
Strings fester Länge
Implizite Deklaration
Private Sub Test()
Variable1 = "Test"
Variable1 = Varialbe1 & "-Lauf"
Debug.Print Variable1
End Function
Migration: Vorbereitung
 Alte Konstrukte beseitigen




Implizite Typkonvertierung
Late Binding
Werte für Konstanten
Me.MouseCursor
Variants
Private Function Test(x, y)
Test = x + y
End Function
= 3
Migration: Vorbereitung
 Implizite Erstellung von Instanzen
Dim c as MathLib.MyClass
Set c = New MathLib.MyClass
c.CallAMethod
Set c = Nothing
' RunTime Error
c.CallAMethod
Dim c as New MathLib.MyClass
c.CallAMethod
Set c = Nothing
c.CallAMethod
' will execute
VB6 Code Advisor
 Migrationsanalyse in VB6
 Download URL:
http://www.microsoft.com/downloads/details.aspx?familyid=A656371A-B5C04D40-B015-0CAA02634FAE&displaylang=en
Migration nach .NET
Die Umstellung
VB .NET Upgrade Wizard
 VB6 und VB .NET installiert
 Ebenso:
verwendete
Controls
 Keine gegenseitige
Beeinflussung
VB .NET Upgrade Wizard
Prinzipien
 Es ist Ihr Code!
 Struktur bleibt erhalten
 Kommentare ebenso
 Microsoft.VisualBasic.Compatibility
VB .NET Upgrade Wizard
Nach dem Auto-Upgrade





UpgradeReport.htm
Inline Kommentare
Log File
UpgradeSupport.VB
Referenzen
 Alte COM Controls
 TypeLibraries
 Microsoft.VisualBasic.Compatibility
UpgradeReport
Code-Änderungen
 Kommentare im Code
 UPGRADE_ISSUE
 UPGRADE_TODO
 UPGRADE_WARNING
 UPGRADE_NOTE
UpgradeSupport.vb
 Friend-Objekte
 DAO, RDO, …
Upgrade Sample
Demo:
Upgrade eines VB6-Programmes
Endziele
 Verzichten auf die Compatibility Lib
 .NET Befehle verwenden
 Keine ActiveX Controls
 .NET Controls einsetzen
 Keine Win32 APIs
 .NET Klassen verwenden
Code Snippet Tool
 Visual Studio .NET IDE Tool
 Teilupgrade per Snippet
 Cut & Paste
 Type Code
Technologien für den
Teilupgrade
Hello COM - .NET is calling
COM Components in .NET
IUnknown
COM
object
IDispatch
RCW
.NET
object
.NET Components in COM
IUnknown
COM
object
IDispatch
CCW
.NET
object
COM in .NET
 Runtime Callable Wrapper (RCW)
Erzeugen / Binden an COM Objekt
Bedient COM Interfaces und übernimmt
Transformation in managed Code
Data Marshaling
Lifetime Managment des COM Objekts
COM HRESULT  .NET Exceptions
 Beachten Sie
Datentypen (variants, ...)
Primary Interop Assemblies (PIA)
Deployment
.NET in COM
 COM Callable Wrapper (CCW)
Erzeugen / Binden an managed Objekt
Simuliert COM interfaces (IUnknown and
IDispatch)
Data Marshaling
Lifetime Managment der .NET Komponente
.NET Exception  COM HRESULT
 Beachten Sie
Datentypen (Variants, ...)
Default constructor
Deployment
Upgrade von ActiveX Controls
Einige Controls werden nicht supported
Einige Controls wurden ersetzt in .NET
Alle anderen per Wrapper-Klassen
A.ocx
Interop.AxA.
DLL
AxInterop.AxA
.DLL
• COM Interop • Extended
• Translation
properties
Windows
Form
VB6 - VB .NET
Gegenüberstellung
Eventhandling in VB6
 Ein Eventhandler
für jedes Objekt
Eventhandling in VB .NET
 Eine Routine behandelt
mehrere gleiche Events
 Handles-Klausel
 Signatur
Menüs in VB .NET
 Wysiwyg Menü-Editor
 Eventhandler
Private Sub OnClickHandler(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles mnuProp.Click
End Sub
Context-Menüs in VB .NET
 Anzeigen des Menüs
Private Sub MouseUpHandler(ByVal sender As Object, _
ByVal e As System.Windows.Forms.MouseEventArgs) _
Handles MyBase.MouseUp
If e.Button = MouseButtons.Right Then
ContextMenu1.Show(Me, New Drawing.Point(e.X, e.Y))
End If
End Sub
 Eventhandler
Private Sub MenuOnClickHandler(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles mnuSendMail.Click
Dim mnuItem As MenuItem = DirectCast(sender, MenuItem)
' Do something
End Sub
File IO in VB6
4,2 s für 1000 Durchläufe
File IO in VB .NET
Traditionelle VB-Methode
2,6 s
.NET-Methode
1,3 s für 1000 Durchläufe
Drag & Drop
Target Control
Source Control
DragEnter
e.Effect
DragDrop
e.Data.GetData()
MouseDown
DoDragDrop()
DragDropResult
Drag & Drop
Demo:
Drag & Drop eines Bitmap
Drucken in VB.NET
Globales Printer Object wird ersetzt durch:
 PrintDocument
 PrintDialog
 PrintPreview
 (sichtbar)
 PrintPreviewDialog
MSDN:
.NET Framework QuickStarts
.NET Samples - Windows Forms: Printing
Drucken: Prinzip
PrintPage Event:
Win32 APIs bzw. Pinvoke
Aufruf von unmanaged System Code
 Win32 APIs in VB6
 Pinvoke in VB .NET
Kein 'As Any' Type mehr in .NET !!
PInvoke (advanced)
 Attribute spezifizieren genauer
Win32 API
 .NET Framework bieten Win32 API
Funktionalität
 Leichter nutzbar als Win32 API
 Framework Class Library
 Beispiele





System.Diagnostics
System.Drawing
System.Environment
System.Win32
u.a.
ADO versus ADO.NET
ADO
 ActiveX Data
Objects
 Vielzahl von
Datenquellen
 Connected und
disconnected
 XML Support
enthalten
 COM-basierend
ADO.NET
 Native .NET
Komponente
 Vielzahl von
Datenquellen
 Entwickelt für verbindungslosen Zugriff
 Von vorn herein für
XML entwickelt
 .NET-basierend
ADO versus ADO.NET
Demo:
Migration von ADO-Projekten
Angebot
 VB Resource Kit (im Web)
 Special Offer:
VB Res Kit + VS .NET Trial Version
 60 Tage testen
 Sample Apps: WinForms, Web, Data
Access, WebServices
 ComponentOne Studio Enterprise
 Free & Trial Components
 Tech. Infos zum Upgrade nach VB .NET
 Tools
…
Ressourcen
Ressourcen




VB @ MSDN
http://msdn.microsoft.com/vbasic
http://www.microsoft.com/germany/msdn/default.mspx
GotDotNet: The Microsoft .NET Framework Community
http://www.gotdotnet.com
Bücher:
http://www.microsoft.com/germany/ms/mspressnet/index.htm
http://www.microsoft.com/mspress/books/index/6510.asp
http://www.dotnetbooks.com/
http://www.kofler.cc/vbnet.html
http://www.amazon.de/exec/obidos/search-handleform/ref=sr_sp_go_as/028-7168974-2906165
Community
http://www.microsoft.com/germany/ms/msdncommunity/
Newsgroups auf msnews.microsoft.com
For More Information…
 101 Visual Basic Code Samples
 msdn.microsoft.com/vbasic/downloads/samples/
 For Windows developers
 windowsforms.net (TaskVision)
 For Web developers
 www.asp.net (ASP.NET Starter Kits)




Time Tracker Reporting
eCommerce (IBuySpy store)
Portal (IBuySpy portal)
Community
 Upgrading
 msdn.microsoft.com/vbasic/techinfo/articles/
upgrade/
MSDN
Essential Resources for Developers
Subscription
Services
Library, OS, Professional, Enterprise,
Universal Delivered via CD-ROM, DVD, Web
Online
Information
MSDN Online, MSDN Flash, How-to
Resources, Download Center
Training and
Events
MSDN Webcasts, MSDN Online
Seminars, Tech·Ed, PDC, Developer Days
Print
Publications
MSDN Magazine
MSDN News
Membership
Programs
MSDN User Groups
How-to Resources
Simple, Step-by-Step Procedures













Embedded development How-to resources
General How-to resources
Integration How-to resources
JScript .NET How-to resources
Microsoft .NET development How-to resources
Office development resources
Security How-to resources
Microsoft Visual Basic .NET How-to resources
Microsoft Visual C# .NET How-to resources
Microsoft Visual Studio .NET How-to resources
Web development How-to resources (ASP, IIS, XML)
Web services How-to resources
Windows development How-to resources
http://msdn.microsoft.com/howto
MSDN Webcasts
Interactive, Live Online Events
 Interactive, synchronous, live online
events
 Discuss the hottest topics from Microsoft
 Open and free for the general public
 Take place every Tuesday
http://www.microsoft.com/usa/webcasts
MSDN Subscriptions
The Way to Get Visual Studio .NET
Visual Studio .NET
Enterprise Architect
• Software and data modeling
• Enterprise templates
• Architectural guidance
Professional
• Tools to build applications
and XML Web services for
Windows and the Web
MSDN Universal
MSDN Enterprise
NEW
Enterprise Developer
• Enterprise lifecycle tools
• Team development support
• Windows Server 2003 and
SQL Server™
MSDN Subscriptions
MSDN Professional
Where Can I Get MSDN?
 Visit MSDN Online at
msdn.microsoft.com
 Register for the MSDN Flash e-mail newsletter
at
msdn.microsoft.com/flash
 Become an MSDN CD subscriber at
msdn.microsoft.com/subscriptions
 MSDN online seminars
msdn.microsoft.com/training/seminars
 Attend more MSDN events
Microsoft Press®
Essential Resources for Developers
Microsoft Visual Studio .NET is here!
This is your chance to start building the next big
thing. Develop your .NET skills, increase your
productivity with .NET books from Microsoft Press
www.microsoft.com/mspress
Microsoft Certified Solution Developer
 What is MCSD?
 Premium certification for professionals who
design and develop custom business
solutions
 How do I attain MCSD certification?
 Certification requires passing four exams to
prove competency with Microsoft solution
architecture, desktop applications,
distributed application development, and
development tools
 Where do I get more information?
 For more information about certification
requirements, exams, and training options,
visit www.microsoft.com/mcp
Training
Training Resources for Developers
 Course Title:
 Course Number: Application Upgrade and Interoperability with
Visual Studio.NET
 Availability: 2571
 Detailed Syllabus: www.microsoft.com/traincert
To locate a training provider for this course, please access
www.microsoft.com/traincert
Microsoft Certified Technical Education Centers
are Microsoft’s premier partners for training services
Basics of Visual Basic .NET
.NET Framework and Tools
C++
C#
Microsoft®
Visual J#®
…
Common Language Specification
ASP .NET
Web Forms Web Services
Mobile Internet Toolkit
Windows
Forms
ADO .NET and XML
Base Class Library
Common Language Runtime
Operating System
Microsoft® Visual Studio® .NET
Visual
Basic
© 2003 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Microsoft, MSDN, Visual Basic, Windows, Visual J#, Visual Studio, Visual C#, Visual C++, IntelliSense, ActiveX, JScript, and Microsoft Press are either registered trademarks
or trademarks of Microsoft Corporation in the United States and/or other countries. The names of actual companies and products mentioned herein may be the trademarks
of their respective owners.

Migration nach VB .NET - Center