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.