590 likes | 812 Views
Visual Basic .NET & C# Die Qual der Wahl?. Frank Prengel Technologieberater Microsoft GmbH frankpr@microsoft.com. Agenda. Das .NET Framework Visual Basic .NET: Überblick Visual C# .NET: Überblick Vergleich der Sprachen Gemeinsamkeiten, Syntax, Sonstiges Migration Zusammenfassung.
E N D
Visual Basic .NET & C#Die Qual der Wahl? Frank Prengel Technologieberater Microsoft GmbH frankpr@microsoft.com
Agenda • Das .NET Framework • Visual Basic .NET: Überblick • Visual C# .NET: Überblick • Vergleich der Sprachen • Gemeinsamkeiten, Syntax, Sonstiges • Migration • Zusammenfassung
Agenda • Das .NET Framework • Visual Basic .NET: Überblick • Visual C# .NET: Überblick • Vergleich der Sprachen • Gemeinsamkeiten, Syntax, Sonstiges • Migration • Zusammenfassung
MSMQ (Message Queuing) COM+ (Transactions, Partitions, Object Pooling) IIS WMI Das .NET Framework VB C++ C# J# JScript … Visual Studio .NET Common Language Specification Web Services User Interface ASP.NET WinForms ADO.NET: Data and XML Base Class Library Common Language Runtime Win32
Das .NET Framework • Visual Studio .NET: integrierte Entwicklungsumgebung • Solution Explorer, Toolbox, Debugger • visuelle Designer, Code Editor • IntelliSense, Syntaxkontrolle, dyn. Hilfe • mehrsprachige Projektmappen • RAD für • Desktop • Server • Web (UI, -services) • Smart Devices Visual Studio .NET VB C++ C# J# JScript … Common Language Specification Web Services User Interface ASP.NET WinForms ADO.NET: Data and XML Base Class Library Common Language Runtime MSMQ (Message Queuing) COM+ (Transactions, Partitions, Object Pooling) IIS WMI Win32
Das .NET Framework • Common Language Specification • definiert Anforderungen, die .NET-Sprachen erfüllen müssen • sichert Interoperabilität der Sprachen • Datentypen sind Teilmenge des Common Type System • Microsoft: Visual Basic®, C#, C++, J#, JScript® • andere: Cobol, Perl, Python, Smalltalk, Delphi, ... Visual Studio .NET VB C++ C# J# JScript … Common Language Specification Web Services User Interface ASP.NET WinForms ADO.NET: Data and XML Base Class Library Common Language Runtime MSMQ (Message Queuing) COM+ (Transactions, Partitions, Object Pooling) IIS WMI Win32
Das .NET Framework • Common Language Runtime • verwaltet ausgeführten Code • Typprüfungen, Fehlerbehandlung, Garbage Collection, … virtuelle Maschine • selbstbeschreibende Komponenten • Assemblies enthalten Metadaten + Code • Just-In-Time-Compiler • MSIL Maschinencode • Komp. auf Methodenebene • Optimierung zur Laufzeit • feinkonfigurierbare Sicherheit Visual Studio .NET VB C++ C# J# JScript … Common Language Specification Web Services User Interface ASP.NET WinForms ADO.NET: Data and XML Base Class Library Common Language Runtime MSMQ (Message Queuing) COM+ (Transactions, Partitions, Object Pooling) IIS WMI Win32
Agenda • Das .NET Framework • Visual Basic .NET: Überblick • Visual C# .NET: Überblick • Vergleich der Sprachen • Gemeinsamkeiten, Syntax, Sonstiges • Migration • Zusammenfassung
Visual Basic .NET • Basic für das neue Jahrtausend… • bietet Features, die Entwicklerbisher an Basic vermissten • mehr als nur Visual Basic "6 + 1" • …mit der Power von .NET • einfaches Web Development • voller Zugriff auf die .NET-Plattform • Daten, XML, WinCE-Entwicklung, ... • einfaches Deployment • Microsoft Installer
Visual Basic .NET • modern & leistungsfähig • komplett objektorientiert • unterstützt freies Threading • unterstützt strukturierte Fehlerbehandlung • robust • strikte Typprüfung • Variableninitialisierung bei Deklaration • vereinfacht • basiert auf .NET Base Class Library • viele "Legacy"-Features entfernt
Visual Basic .NET • volle Objektorientierung • Strukturierung in Namensräumen • Vererbung: von einer Basisklasse, von beliebig vielen Interfaces • Overriding & Shadowing von Basisklassenmethoden • Überladen von Methoden • nicht a priori abwärtskompatibel • CLS-konform
Agenda • Das .NET Framework • Visual Basic .NET: Überblick • Visual C# .NET: Überblick • Vergleich der Sprachen • Gemeinsamkeiten, Syntax, Sonstiges • Migration • Zusammenfassung
Visual C# .NET • erste konsequent komponentenorientierteSprache der "C-Familie" • Syntax ähnlich C++ & Java • vereinfachte Programmierung • keine Header-Dateien, Makros, IDL • keine Mehrfachvererbung • typsicher • XML-Kommentare zwecks Dokumentation
Visual C# .NET • bestmögliche Interoperabilität mit bestehendem Code • COM-Komponenten: COM Interop • Win32 API: P/Invoke • vorzeichenlose Datentypen • unterstützt Pointer und C-ähnliche Speicherverwaltung • unsafe, stackalloc • memory pinning von Variablen (fixed)
Agenda • Das .NET Framework • Visual Basic .NET: Überblick • Visual C# .NET: Überblick • Vergleich der Sprachen • Gemeinsamkeiten, Syntax, Sonstiges • Migration • Zusammenfassung
Gemeinsamkeiten • gleichberechtigte Sprachen in .NET • visuelle Designer für WinForms, WebForms, XSD, HTML, ... • verwenden .NET-Klassenbibliothek • unterstützen COM Interop, P/Invoke • Sprachcompiler generieren MSIL • hohe Performance • s. z.B. B. Marquardt "Performance in .NET", XML in Action 2002, Potsdam
Demo Gemeinsamkeiten Sub Main(ByVal args() As String) Console.WriteLine("Hello VB") End Sub VB .method public static void Main(string[] args) cil managed { .entrypoint .custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 ) // Code size 14 (0xe) .maxstack 8 IL_0000: nop IL_0001: ldstr "Hello VB" IL_0006: call void [mscorlib]System.Console::WriteLine(string) IL_000b: nop IL_000c: nop IL_000d: ret } // end of method Class1::Main [STAThread] static void Main(string[] args) { Console.WriteLine("Hello C#"); } C# .method private hidebysig static void Main(string[] args) cil managed { .entrypoint .custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 ) // Code size 11 (0xb) .maxstack 1 IL_0000: ldstr "Hello C#" IL_0005: call void [mscorlib]System.Console::WriteLine(string) IL_000a: ret } // end of method Class1::Main
Agenda • Das .NET Framework • Visual Basic .NET: Überblick • Visual C# .NET: Überblick • Vergleich der Sprachen • Gemeinsamkeiten, Syntax, Sonstiges • Migration • Zusammenfassung
Syntax: Daten & Typen Datentypunterstützung • nicht CLS-konform
Syntax: Daten & Typen VB unterstützt außerdem: • Steuerung expliziter Variablendeklaration:Option Explicit { On | Off } • Steuerung von Typumwandlungen:Option Strict { On | Off } • Steuerung des Stringvergleichs:Option Compare { Binary | Text }
Demo Syntax: Daten & Typen C# unterstützt außerdem: • ?:++-- • <<>> • operator overloadingpublic static MyType operator –(MyType x){ ... } • Testen auf Überlauf bei arithmetischen Operationen:checked / unchecked VB: IIf(a,b,c)
Demo Syntax: Funktionen
Demo Syntax: Funktionen
Syntax: Objekte • Garbage Collector nichtdeterministische Finalisierung • besser: IDisposable.Dispose() zur expliziten Freigabe von Ressourcen • in C# autom. Scoping durch using:using (Font myFont=new Font(...)) { ... }
Demo Syntax: Verschiedenes
Agenda • Das .NET Framework • Visual Basic .NET: Überblick • Visual C# .NET: Überblick • Vergleich der Sprachen • Gemeinsamkeiten, Syntax, Sonstiges • Migration • Zusammenfassung
Agenda • Das .NET Framework • Visual Basic .NET: Überblick • Visual C# .NET: Überblick • Vergleich der Sprachen • Gemeinsamkeiten, Syntax, Sonstiges • Migration • Zusammenfassung
Migration VB 6 VB .NET
VB6 VB .NET 3 Upgrade-Strategien: • komplette Neuimplementierung in .NET • komplette Portierung • alte Programmarchitektur bleibt intakt • Mischlösung • auf bestehenden Code aufbauen • VB 6-Komponenten weiterverwenden, .NET-Komponenten sinnvoll darauf aufsetzen • später Schritt für Schritt migrieren
VB6 VB .NET • Sie entscheiden: • Wie sieht Ihre Anwendungsarchitektur aus? • Handelt es sich um eine Neuentwicklung oder soll die Applikation nur noch gewartet werden? • Machen Sie einen Upgrade-Plan! • Welche Aspekte/Teile Ihrer Anwendung gewinnen "added value" durch .NET? • Wie kann die bestehende Anwendung für das Upgrade "fit" gemacht werden?
VB6 VB .NET Upgrade-Technologien: • Code-Migration • Upgrade Wizard • Sourcecode Analyzer Tools (Dritthersteller) • Application Mining Tools (Dritthersteller) • Interoperabilität • COM Interop • Platform Invoke (P/Invoke)
Demo VB6 VB .NET
VB6 VB .NET Weiterführende Infos im Internet: • MSDN® Website: • http://msdn.microsoft.com/ • VB .NET Upgrade Websites: • http://msdn.microsoft.com/vbasic/technical/upgrade/guide.asp • http://msdn.microsoft.com/vstudio/nextgen/Technology/vbupgrade.asp • http://msdn.microsoft.com/library/techart/VB 6tovbdotnet.htm
VB6 VB .NET Weiterführende Informationen – Bücher: • Ed Robinson, Michael Bond, Ian Oliver:"Upgrading Microsoft Visual Basic 6.0 to Microsoft Visual Basic .NET"Microsoft Press; ISBN 073561587X"Von Microsoft Visual Basic 6.0 nach Microsoft Visual Basic.NET" Microsoft Press; ISBN 3860636669 • Dan Appleman: "Moving to VB.NET"Apress; ISBN: 1893115976
Migration Java Visual C#
Java C# 3 Wege zu .NET für Java-Programmierer: • VJ++ 6.0 COM-Anwendungen: COM Interop • Visual J# .NET:Java-Sprache für .NET (erzeugt MSIL) • Java Language Conversion Assistant (JLCA): Sourcecode-Migration Java C#
Java C# Java Language Conversion Assistant • aktuell: Beta2 (http://msdn.microsoft.com/vstudio/downloads/jca/default.asp) • konvertiert automatisch • Java C# • JSP ASP.NET (final version) • J2EE .NET (ArtinSoft, MS-Partner) • Integration in Visual Studio .NET • unterstützt JDK 1.1.4