Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Magda Stracke Geändert vor über 10 Jahren
1
Visual Basic .NET & C# Die Qual der Wahl?
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich Visual Basic .NET & C# Die Qual der Wahl? Frank Prengel Technologieberater Microsoft GmbH
2
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Agenda Das .NET Framework Visual Basic .NET: Überblick Visual C# .NET: Überblick Vergleich der Sprachen Gemeinsamkeiten, Syntax, Sonstiges Migration Zusammenfassung
3
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Agenda Das .NET Framework Visual Basic .NET: Überblick Visual C# .NET: Überblick Vergleich der Sprachen Gemeinsamkeiten, Syntax, Sonstiges Migration Zusammenfassung
4
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
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 MSMQ (Message Queuing) COM+ (Transactions, Partitions, Object Pooling) IIS WMI Win32
5
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
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 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 MSMQ (Message Queuing) COM+ (Transactions, Partitions, Object Pooling) IIS WMI Win32
6
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
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, ... VB C++ C# J# JScript … Visual Studio .NET What is the Common Language Specification? 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
7
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
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 VB C++ C# J# JScript … Visual Studio .NET Common Language Runtime 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
8
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Agenda Das .NET Framework Visual Basic .NET: Überblick Visual C# .NET: Überblick Vergleich der Sprachen Gemeinsamkeiten, Syntax, Sonstiges Migration Zusammenfassung
9
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Basic für das neue Jahrtausend… bietet Features, die Entwickler bisher 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 Introduction to Visual Basic .NET for Visual Basic Veterans
10
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
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
11
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
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
12
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Agenda Das .NET Framework Visual Basic .NET: Überblick Visual C# .NET: Überblick Vergleich der Sprachen Gemeinsamkeiten, Syntax, Sonstiges Migration Zusammenfassung
13
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Visual C# .NET erste konsequent komponentenorientierte Sprache der "C-Familie" Syntax ähnlich C++ & Java vereinfachte Programmierung keine Header-Dateien, Makros, IDL keine Mehrfachvererbung typsicher XML-Kommentare zwecks Dokumentation Visual C# Language Comparison Between C++ and C#
14
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
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)
15
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Agenda Das .NET Framework Visual Basic .NET: Überblick Visual C# .NET: Überblick Vergleich der Sprachen Gemeinsamkeiten, Syntax, Sonstiges Migration Zusammenfassung
16
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
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
17
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Gemeinsamkeiten Demo 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() = ( ) // Code size (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# Demo "MSIL_CHECKED" .method private hidebysig static void Main(string[] args) cil managed { .entrypoint .custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( ) // Code size (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
18
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Agenda Das .NET Framework Visual Basic .NET: Überblick Visual C# .NET: Überblick Vergleich der Sprachen Gemeinsamkeiten, Syntax, Sonstiges Migration Zusammenfassung
19
Syntax: Grundlegendes
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich Syntax: Grundlegendes Groß-/Kleinschreibung VB kein Unterschied DIM a as dOuBle ' OK Dim b As Integer, B as Long ' Fehler! C# wesentlich int a, A; // OK Long b; // Fehler! nicht CLS-konform, falls public! [CLSCompliant(true)] verwenden "For two identifiers to be considered distinct, they must differ by more than just their case. "
20
Syntax: Grundlegendes
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich Syntax: Grundlegendes Anweisungstrennzeichen VB CR/LF (auch: ":") Zeilenfortsetzung: " _" Formatierung ist entscheidend! C# ; freie Formatierung möglich Blocktrennzeichen VB Sub ... End Sub (u.ä.) keine beliebigen Blöcke möglich C# { ... }
21
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Syntax: Daten & Typen Datentypunterstützung Visual Basic .NET C# .NET CTS Object object System.Object String string System.String Byte byte System.Byte Short short System.Int16 Integer int System.Int32 Long long System.Int64 Single float System.Single Double double System.Double Boolean bool System.Boolean Char char System.Char Decimal decimal System.Decimal sbyte System.SByte ushort System.UInt16 uint System.UInt32 ulong System.UInt64 nicht CLS-konform
22
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Syntax: Daten & Typen Arrays: Erstellung VB Dim a(n) as Integer erzeugt n+1 Elemente (0 ... n) ! C# int [] a = new int[n]; erzeugt n Elemente (0 ... n-1) ! Arrays: Größenänderungen VB ReDim Preserve ... C# n/a Framework-Klassen wie ArrayList verwenden
23
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Syntax: Daten & Typen Variableninitialisierung VB automatisches Initialisieren mit 0 oder Nothing nur bei Erzeugung (lokale Variablen!) C# explizites Initialisieren notwendig VB + C# Initialisieren bei Deklaration möglich: Dim i as Integer = 0 int i = 0; Wichtige Neuerung in VB.NET gegenüber VB6: Dim a, b, c As Integer erzeugt 3 Integer-Variablen(!)
24
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
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 } EXPLICIT: force expl. decl. of all variables default: OFF, if nothing specified if OFF, all vars are of type object STRICT: (neu in VB.NET) restricts implicit type conversions to only widening conversions OFF if nothing specified COMPARE: default comparison methods for strings Text: case insensitive
25
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Syntax: Daten & Typen Demo C# unterstützt außerdem: ?: << >> operator overloading public static MyType operator –(MyType x){ ... } Testen auf Überlauf bei arithmetischen Operationen: checked / unchecked VB: IIf(a,b,c) Demo operator overloading: OP_OVERLOADING Demo checked/unchecked: MSIL_CHECKED
26
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Syntax: Funktionen Deklaration VB Function FunctionName(arg1 as Type, ... argN as _ Type) as ReturnType ... Return someVariableOfReturnType End Function Sub ProcedureName(arg1 as Type, ... argN as Type) ... End Sub C# ReturnType FunctionName(Type arg1, ... Type argN) { ... return someVariableOfReturnType; }
27
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Syntax: Funktionen Demo Select Case / switch VB Select Case i Case "Frank", "Michael" To "Paul" Console.WriteLine("Frank's group") Case o Console.WriteLine("It's John") Case Else Console.WriteLine("S.o. else") End Select C# switch(i) { case "Frank" : case "Michael" : ... case "Paul" : Console.WriteLine("Frank's group"); break; case "John" : Console.WriteLine("John"); break; default: Console.WriteLine("S.o. else"); break; } Demo: SWITCH_SELECTCASE
28
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Syntax: Funktionen Demo Verschiedenes VB Vorhandensein von Return in allen Rückkehrzweigen einer Funktion wird nicht geprüft Unterstützung optionaler Parameter OLE Automation! Unterstützung von Modulen Variablen & Funktionen Assembly-global Shared members: Zugriff über Typ oder Instanz Standardsichtbarkeit in Klassen: Public C# static members: Zugriff nur über Typ Standardsichtbarkeit in Klassen: private Demo Return: RETURN Demo optionale Parameter: OLEAUT Demo static members: OP_OVERLOADING
29
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Syntax: Objekte Aktuelle Instanz referenzieren VB Me C# this Konstruktoren VB Public Class AClass Public Sub New(ByVal n as String) End Sub End Class C# public class AClass { public AClass(string n) { ... } ... }
30
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Syntax: Objekte Destruktoren VB Protected Overrides Sub Finalize() ... C# ~AClass() { ... } Garbage Collector nichtdeterministische Finalisierung besser: IDisposable.Dispose() zur expliziten Freigabe von Ressourcen in C# autom. Scoping durch using: using (Font myFont=new Font(...)) { ... }
31
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Syntax: Objekte Vererbung vs. Interface-Implementation VB Public Class DClass Inherits BClass Implements IInt Welche Methode implementiert welche? Sub X() Implements IInt.Y eine Methode kann vielfach implementieren: Sub X() Implements IInt1.Y, IInt2.Z C# public class DClass : BClass, IInt explizite Interface-Methoden-Implementation: int IInt.X(); (Cast auf Interface nötig; kein public/private/... erlaubt!) Demo "MultIFImpl"
32
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Syntax: Objekte Schlüsselwörter VB MustInherit, NotInheritable, Overridable, Overrides, Shadows, ... C# abstract, sealed, virtual, override, new, ... Konstruktor der Basisklasse aufrufen VB Public Sub New(ByVal n as String) MyBase.New() ... End Sub C# public AClass() : base() { ... } impliziter Aufruf des Default-C'tors
33
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Syntax: Objekte Events VB Dim WithEvents o as EventSource ... Event Happened(...) ... RaiseEvent Happened() ... Sub hendl() Handles o.Happened ... Delegates (s. C#) C# public delegate void HappenedHndl(object sender, EventArgs e); public event HappenedHndl Happened; ... Happened(this, eventargs); ... public void sthHappened(object s, EventArgs a); o.Happened += new HappenedHndl(sthHappened); Demo: EVENTS
34
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Syntax: Objekte Verschiedenes VB unterstützt With-Konstrukt: With myObj .SomeFct(x,y) .val = 42 End With Unterstützung von "Legacy"-VB-Anweisungen im Namensraum Microsoft.VisualBasic bequemes Verwenden von Late Binding Imports gewährt Zugriff auf Namensräume und Objekte C# unterstützt Parameter vom Typ out Visual Basic Runtime Namespace in Visual Studio
35
Syntax: Verschiedenes
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich Syntax: Verschiedenes Unsafe Code VB n/a C# Zeiger etc. möglich: unsafe void Foo() { char* buf = stackalloc char[256]; ... } nicht durch die CLR verifizierbar Ausführung nur unter "verschärften" Sicherheitsbedingungen möglich
36
Syntax: Verschiedenes
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich Syntax: Verschiedenes Demo Dokumentation VB keine besondere Unterstützung manuelles Erstellen von Hilfe-Dateien Add-Ins (IntelliDoc) V.Next ... C# Spezielle Tags für XML-Dokumentation: /// <summary> Erste Klasse! </summary> /// <seealso cref="Class2"/> Generieren von Online-Dokumentation Demo: OP_OVERLOADING
37
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Agenda Das .NET Framework Visual Basic .NET: Überblick Visual C# .NET: Überblick Vergleich der Sprachen Gemeinsamkeiten, Syntax, Sonstiges Migration Zusammenfassung
38
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Sonstiges Class View VB Standard C# erweitert
39
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Sonstiges Echtzeit-Syntaxkontrolle VB Code Validation Background Compile (entdeckt Build Errors zur Entwurfszeit!) C# Verschiedenes VB Automatische End ... -Blockanweisungen Automatisches Einrücken von Code Automatische Groß-/Kleinschreibung C# Automatische {} -Klammerpaare Automatisches Einrücken (begrenzt)
40
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Agenda Das .NET Framework Visual Basic .NET: Überblick Visual C# .NET: Überblick Vergleich der Sprachen Gemeinsamkeiten, Syntax, Sonstiges Migration Zusammenfassung
41
Migration VB 6 VB .NET
42
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
43
VB6 VB .NET Sie entscheiden: Machen Sie einen Upgrade-Plan!
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?
44
VB6 VB .NET Upgrade-Technologien: Code-Migration Interoperabilität
Upgrade Wizard Sourcecode Analyzer Tools (Dritthersteller) Application Mining Tools (Dritthersteller) Interoperabilität COM Interop Platform Invoke (P/Invoke)
45
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
VB6 VB .NET Demo Demo: VB6_2_VBNET
46
VB6 VB .NET Weiterführende Infos im Internet: MSDN® Website:
VB .NET Upgrade Websites: upgrade/guide.asp Technology/vbupgrade.asp VB 6tovbdotnet.htm
47
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 X "Von Microsoft Visual Basic 6.0 nach Microsoft Visual Basic.NET" Microsoft Press; ISBN Dan Appleman: "Moving to VB.NET" Apress; ISBN:
48
Migration Visual C# Java
49
Java C# 3 Wege zu .NET für Java-Programmierer:
VJ COM-Anwendungen: COM Interop Visual J# .NET: Java-Sprache für .NET (erzeugt MSIL) Java Language Conversion Assistant (JLCA): Sourcecode-Migration Java C#
50
Java C# Java Language Conversion Assistant
aktuell: Beta2 ( 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
51
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Java C# Demo Demo: JAVA_2_CS
52
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Agenda Das .NET Framework Visual Basic .NET: Überblick Visual C# .NET: Überblick Vergleich der Sprachen Gemeinsamkeiten, Syntax, Sonstiges Migration Zusammenfassung
53
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Zusammenfassung Highlights VB CLS-konform gute Unterstützung von OLE Automation Background Compile beim Editieren einfache Event-Syntax weitgehende automatische Codeformatierung C# "Sprache des .NET Framework" erzwingt Programmierdisziplin XML-Dokumentation ermöglicht "unsicheren" Code
54
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Zusammenfassung Naheliegende Migrationspfade: Visual Basic 6 Visual Basic .NET C/C++, Java Visual C# .NET VB .NET ist vollwertige .NET-Sprache kein Grund für Minderwertigkeitskomplexe mehr! Base Class Library bestimmt verfügbare Funktionalität Wahl der Sprache für 95% der Probleme irrelevant
55
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Zusammenfassung VB C# .NET Sie haben die Q Sie haben die Sie haben die Qu Wahl!
56
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Fragen?
57
Weitere Informationen
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich Weitere Informationen INFO: "Differences Between Visual Basic .NET and Visual C# .NET" White Paper Is Available (Q308470) Daniel Appleman "Visual Basic .NET or C#...Which to Choose?" Eric Gunnerson "A Programmer's Introduction to C#", Apress 2001 Daniel Appleman "Moving to VB.NET: Strategies, Concepts, and Code", Apress 2001 Bernd Marquardt "Performance in .NET", XML in Action 2002, Potsdam VB .NET Upgrade Guide upgrade/guide.asp Java Language Conversion Assistant
58
Allgemeine Informationen
Ralf Westphal: ".NET kompakt" Spektrum Akad. Vlg.; ISBN: Jeffrey Richter: "Applied Microsoft .NET Framework Programming" Microsoft Press; ISBN:
59
BE2 - Visual Basic .NET & C# .NET - Überblick und Vergleich
Microsoft’s Vision Empower people software through great any time, any place, and on any device.
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.