52
Grundlagen des Microsoft Grundlagen des Microsoft .NET Frameworks .NET Frameworks Master Seminar Master Seminar Advanced Advanced Software Engineering Topics Software Engineering Topics Patric Zbinden Patric Zbinden 1. Mai 2003 1. Mai 2003

Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

Embed Size (px)

Citation preview

Page 1: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

Grundlagen des Microsoft Grundlagen des Microsoft .NET Frameworks.NET Frameworks

Master SeminarMaster SeminarAdvancedAdvanced Software Engineering TopicsSoftware Engineering Topics

Patric ZbindenPatric Zbinden

1. Mai 20031. Mai 2003

Page 2: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

ÜbersichtÜbersicht

(1)(1) Die .NET Die .NET StategieStategie(2)(2) Common Common LanguageLanguage RuntimeRuntime (CLR)(CLR)(3)(3) ProgrammingProgramming in .NET (C#, VB.NET)in .NET (C#, VB.NET)(4)(4) .NET Framework Klassenbibliothek.NET Framework Klassenbibliothek

(1)(1) Datentechnik (ADO.NET)Datentechnik (ADO.NET)(2)(2) Web Web FormsForms (ASP.NET)(ASP.NET)(3)(3) Weitere ThemenWeitere Themen

(5)(5) FazitFazit

Page 3: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

.NET Strategie.NET Strategie

Page 4: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

Was ist .NETWas ist .NET

►►Framework für Software EntwicklungFramework für Software Entwicklung►►Interface zu Windows Interface zu Windows servicesservices und APIund API►►ProduktgruppenProduktgruppen

Entwicklungstools (Programmiersprachen, Visual Entwicklungstools (Programmiersprachen, Visual Studio.NETStudio.NET, .NET Framework SDK), .NET Framework SDK)Spezialisierte Server (SQL, Exchange, BizTalk)Spezialisierte Server (SQL, Exchange, BizTalk)WebServicesWebServicesGeräte (Windows CE, Geräte (Windows CE, PocketPCPocketPC))

Page 5: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

.NET Strategie.NET Strategie

►►Verteiltes Rechnen (XML Web Services)Verteiltes Rechnen (XML Web Services)RemotingRemoting Architektur basierend auf offene Architektur basierend auf offene Internet Standards (HTTP, XML, SOAP)Internet Standards (HTTP, XML, SOAP)

►►Komponenten InfrastrukturKomponenten InfrastrukturCOM war zu komplexCOM war zu komplex

►►Enterprise Enterprise servicesservices►►Web TechnologieWeb Technologie►►EinfacesEinfaces DeploymentDeployment, Zuverlässigkeit, , Zuverlässigkeit,

Sicherheit, …Sicherheit, …

Page 6: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

.NET Enterprise Servers.NET Enterprise Servers►► Microsoft Microsoft ApplicationApplication Center 2000Center 2000 to to deploydeploy and manage and manage highlyhighly availableavailable and and

scalablescalable Web Web applicationsapplications. . ►► Microsoft BizTalk Server 2002Microsoft BizTalk Server 2002 to to buildbuild XMLXML--basedbased businessbusiness processesprocesses acrossacross

applicationsapplications and and organizationsorganizations. . ►► Microsoft Commerce Server 2002Microsoft Commerce Server 2002 forfor quicklyquickly buildingbuilding scalablescalable ee--commercecommerce

solutionssolutions. . ►► Microsoft Microsoft ContentContent Management Server 2001Management Server 2001 to manage to manage contentcontent forfor dynamicdynamic ee--

businessbusiness Web Web sitessites. . ►► Microsoft Exchange Server 2000Microsoft Exchange Server 2000 to to enableenable messagingmessaging and and collaborationcollaboration anytimeanytime, ,

anywhereanywhere. . ►► Microsoft Host Integration Server 2000Microsoft Host Integration Server 2000 forfor bridgingbridging to to datadata and and applicationsapplications on on

mainframemainframe legacylegacy systemssystems. . ►► Microsoft Internet Microsoft Internet SecuritySecurity and and AccelerationAcceleration Server 2000Server 2000 forfor SSLSSL--securedsecured, fast , fast

Internet Internet connectivityconnectivity. . ►► Microsoft Mobile Information 2001 ServerMicrosoft Mobile Information 2001 Server to to enableenable applicationapplication supportsupport byby mobile mobile

devicesdevices likelike cellcell phonesphones. . ►► Microsoft Microsoft SharePointSharePoint™ Portal Server 2001™ Portal Server 2001 to find, to find, shareshare, and , and publishpublish businessbusiness

informationinformation. . ►► Microsoft SQL Server™ 2000Microsoft SQL Server™ 2000 to to storestore, , retrieveretrieve, and , and analyzeanalyze structuredstructured XML XML datadata. .

Page 7: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

ComponentComponent InfrastructureInfrastructure

►► Vor COM existierte kein einfacher Weg um Vor COM existierte kein einfacher Weg um Bibliotheken ohne Bibliotheken ohne SourceSource Code zu integrieren. Code zu integrieren.

►► COMCOMVorteil: Sprachunabhängig, Internet tauglich (DCOM)Vorteil: Sprachunabhängig, Internet tauglich (DCOM)Nachteile: Nachteile: ►►Kompliziert (COM Kompliziert (COM identityidentity, , lifetimelifetime, , binarybinary layout layout rulesrules…)…)►►Keine Sprachintegration (keine Vererbung, keine Keine Sprachintegration (keine Vererbung, keine ExceptionsExceptions, …), …)

Page 8: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

Common Common LanguageLanguage RuntimeRuntime (CLR)(CLR)

►►Wie: Java Wie: Java VirtualVirtual MachineMachine►►Virtuelle Maschine für Virtuelle Maschine für IntermediateIntermediate

LanguageLanguage IL Code.IL Code.►►AufgabenAufgaben

Ausführung von CodeAusführung von CodeTypenkontrolleTypenkontrolleSicherheitsüberprüfungenSicherheitsüberprüfungenGarbageGarbage collectioncollection……

Page 9: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

Ausführbare DateienAusführbare Dateien

►► DateiDatei--EndungenEndungen: EXE, DLL: EXE, DLL►► Windows Portable Windows Portable ExecutableExecutable (PE) Standard(PE) Standard

Page 10: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

CLR AusführungCLR Ausführung

►►Kein Interpreter!Kein Interpreter!►►Verschiedene Compiler für die Erzeugung Verschiedene Compiler für die Erzeugung

von Maschinencodevon MaschinencodeGlobal Global AssemblyAssembly Cache (GAC)Cache (GAC)JustJust--InIn--TimeTime (JIT) Compiler(JIT) Compiler

►►Vergleich mit der JVM:Vergleich mit der JVM:InterpreterInterpreterErweiterungen: Erweiterungen: HotSpotHotSpot CompilerCompiler

Page 11: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

JVM vs. CLRJVM vs. CLR

►►CLRCLRAusgerichtet für verschiedene Ausgerichtet für verschiedene ProgrammiersprachenProgrammiersprachenIm Moment für WindowsIm Moment für Windows--SystemeSysteme(Mono Projekt (Mono Projekt LinuxLinux))

►►JVMJVMNur für JavaNur für JavaErhältlich auf den meisten PlattformenErhältlich auf den meisten Plattformen

Page 12: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

Common Type System (CTS)Common Type System (CTS)

►►InteroperabilitätInteroperabilität erfordert gemeinsame erfordert gemeinsame TypenTypen

►►Zwei KategorienZwei KategorienReferenzReferenz--TypenTypenWerteWerte--TypenTypen

Page 13: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

ReferenzReferenz-- vs. Wertevs. Werte--TypenTypen

►►Interne Behandlung der CLRInterne Behandlung der CLR

Page 14: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

ReferenzReferenz-- vs. Wertevs. Werte--TypenTypen

►►Konsequenzen für ProgrammiererKonsequenzen für ProgrammiererZuweisung: a = bZuweisung: a = bGleichheit: a == bGleichheit: a == bInitialisierungInitialisierung

Page 15: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

WerteWerte--TypenTypen

►►UnterkategorienUnterkategorienBasisBasis--Typen („Typen („buildbuild--inin typestypes“, „primitive “, „primitive typestypes“)“)Werden von der CLR implementiertWerden von der CLR implementiert

Benutzerdefinierte WertetypenBenutzerdefinierte WertetypenIn C# mit dem Schlüsselwort In C# mit dem Schlüsselwort structstruct (anstatt mit (anstatt mit classclass) ) erzeugte Typen.erzeugte Typen.

AufzählungstypenAufzählungstypenIn C# mit dem Schlüsselwort In C# mit dem Schlüsselwort enumenum erzeugt.erzeugt.

Page 16: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

BasisBasis--TypenTypen►► BooleanBoolean ((truetrue oder oder falsefalse))►► ByteByte (0 .. 255)(0 .. 255)►► CharChar (Unicode Zeichen)(Unicode Zeichen)►► DateTimeDateTime (Zeit(Zeit-- und Datumswert)und Datumswert)►► DecimalDecimal (28 signifikante Dezimalstellen)(28 signifikante Dezimalstellen)►► DoubleDouble (64(64--Bit Fliesskomma Zahl)Bit Fliesskomma Zahl)►► GUIDGUID (128(128--Bit)Bit)►► Int16Int16 (16(16--Bit Zahl mit Vorzeichen)Bit Zahl mit Vorzeichen)►► Int32Int32 (32(32--Bit Zahl mit Vorzeichen)Bit Zahl mit Vorzeichen)►► Int64Int64 (64(64--Bit Zahl mit Vorzeichen)Bit Zahl mit Vorzeichen)►► SbyteSbyte ((--128 .. 127)128 .. 127)►► SingleSingle (32(32--Bit Fliesskomma Zahl)Bit Fliesskomma Zahl)►► TimeSpanTimeSpan (Zeitspanne mit Vorzeichen)(Zeitspanne mit Vorzeichen)

Page 17: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

ReferenzReferenz--TypenTypen

►►UnterkategorienUnterkategorienSelbstbeschreibende TypenSelbstbeschreibende Typen►►Array TypenArray Typen►►KlassenKlassen

Benutzerdefinierte KlassenBenutzerdefinierte KlassenGekapselte Wertetypen (Gekapselte Wertetypen (boxedboxed classesclasses))

►►DelegatesDelegates

ZeigerZeiger--Typen (Pointer)Typen (Pointer)InterfaceInterface--TypenTypen

Page 18: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

BoxingBoxing / / UnboxingUnboxing

►►BoxingBoxing: Konvertierung von Wertetyp zu : Konvertierung von Wertetyp zu ReferenztypReferenztyp

BeispielBeispielintint i = 20; // Wertetypi = 20; // Wertetypobjectobject box = i; // Referenztyp box = i; // Referenztyp --> > BoxingBoxing

►►UnboxingUnboxing: Umgekehrte Operation: Umgekehrte OperationBeispielBeispielintint j = (j = (int)boxint)box; // ; // UnboxingUnboxing

►►Vergleich mit Java: Explizite Vergleich mit Java: Explizite BoxingBoxing KlassenKlassen

Page 19: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

ObjektorientiereObjektorientiere KonzepteKonzepte

►►Die CLR unterstützt OO Konzepte (wie Die CLR unterstützt OO Konzepte (wie Kapselung, Vererbung und Kapselung, Vererbung und PolymorphismusPolymorphismus))

KlassenKlassenMethodenMethodenFelderFelderStatische Felder/MethodenStatische Felder/MethodenInnere KlassenInnere KlassenInterfacesInterfacesu.s.wu.s.w..

Page 20: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

ProgrammiersprachenProgrammiersprachen

►►C#C#►►Visual Visual Basic.NETBasic.NET (auch: VB.NET)(auch: VB.NET)►►C++ C++ ►►Viele weitere SprachenViele weitere Sprachen

APL, COBOL, Delphi, Eiffel, APL, COBOL, Delphi, Eiffel, ForthForth, , FortranFortran, , HaskelHaskel, J#, , J#, JScript.NETJScript.NET, Mercury, , Mercury, MondrianMondrian, , Oberon, Pascal, Perl, Python, RPG, Oberon, Pascal, Perl, Python, RPG, SchemeScheme, S#, S#Viele sind aber noch in BetaViele sind aber noch in Beta--PhasePhase

Page 21: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

C#C#

►►Neue ProgrammierspracheNeue Programmiersprache►►ObjektObjekt--orientiertorientiert►►Nur einfache Vererbung (Mehrfache Nur einfache Vererbung (Mehrfache

Vererbung nur über Interfaces)Vererbung nur über Interfaces)►►Designierter Nachfolger von C++. Designierter Nachfolger von C++.

(Auch beeinflusst von Java)(Auch beeinflusst von Java)►►Ausgerichtet auf .NET FrameworkAusgerichtet auf .NET Framework

Page 22: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

C# vs. JavaC# vs. Java

►► Viele Gemeinsamkeiten aber auch UnterschiedeViele Gemeinsamkeiten aber auch UnterschiedeSyntaxSyntax

namespacenamespacepackagepackage

weitere…weitere…

virtualvirtual(Methoden sind (Methoden sind bereits virtuell, d.h. bereits virtuell, d.h. überschreibbar)überschreibbar)

overridesoverrides(kein Schlüsselwort (kein Schlüsselwort notwendig)notwendig)

::extendsextends

sealedsealed classclassfinal final classclass

basebasesupersuper

C#C#JavaJava

Page 23: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

C#C#

►► AufzählungstypenAufzählungstypenTypenTypen--KontrolleKontrolle

public enum DayOfWeek {Sunday = 0,Monday = 1,Tuesday = 2,Wednesday = 3,Thursday = 4,Friday = 5,Saturday = 6

}

Page 24: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

C# C# -- FunktionsparameterFunktionsparameter

public static void SwitchValues(ref int a, ref int b) {

int c = a;a = b;b = c;

}

public static int Main(string[] args) {

int a = 10;int b = 20;SwitchValues(ref a, ref b);Console.WriteLine(a + " " + b);return 0;

}

Ausgabe: 20 10

Page 25: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

C# C# -- foreachforeach SchleifeSchleife

public static int Main(string[] args) {

int[] aInt = {1, 2, 2, 3, 5, 7};foreach (int j in aInt) Console.WriteLine(j);return 0;

}

Ausgabe:122357

Page 26: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

C# C# -- PropertiesProperties►► Verwendung wie Felder, aber funktioniert wie MethodenVerwendung wie Felder, aber funktioniert wie Methoden

Beispiel:Beispiel: Anstelle von zwei Methoden Anstelle von zwei Methoden getVisiblegetVisible(), (), setVisiblesetVisible(…)(…)

public bool Visible {

get { return _bVisible; }set {

if (_bVisible != value) {if (_bVisible) Hide(); else Show();_bVisible = value;

}}

}

Page 27: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

C# C# -- IndexersIndexers

►►Zugriff auf Elemente eines Arrays:Zugriff auf Elemente eines Arrays:intint[] a = {3, 4};[] a = {3, 4};a[ia[i] = 1;] = 1;Console.Write(a[iConsole.Write(a[i]); // Ausgabe: 1]); // Ausgabe: 1

►►IndexerIndexer ermöglicht diesen Syntax auch für ermöglicht diesen Syntax auch für andere Klassen zu verwenden:andere Klassen zu verwenden:stringstring s = “Test“;s = “Test“;Console.Write(s[0]); // Ausgabe: TConsole.Write(s[0]); // Ausgabe: T

Page 28: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

C# C# -- IndexersIndexers (2)(2)

►► Wie ein Wie ein PropertyProperty mit dem Namen „mit dem Namen „thisthis“ und mit “ und mit Argument(eArgument(e) in eckigen Klammern.) in eckigen Klammern.

public virtual int this[int row, int col]{

get { … }set { … }

}

Page 29: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

C# C# -- Operator Operator overloadingoverloading

►► Bekannt in C++Bekannt in C++►► In Java nicht vorhandenIn Java nicht vorhandenpublic struct Complex {

public int real;public int imaginary;

public Complex(int real, int imaginary) {this.real = real;this.imaginary = imaginary;

}

public static Complex operator +(Complex c1, Complex c2) {return new Complex(c1.real + c2.real,

c1.imaginary + c2.imaginary);}

}

Page 30: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

C# C# -- Events / Events / DelegatesDelegates

►►DelegateDelegate: Typensicherer Funktionszeiger: Typensicherer Funktionszeiger

public delegate void ClickHandler(int x, int y);

public class Test {public event ClickHandler Click;

public void Test(){

this.Click += new ClickHandler(OnClick);}

private void OnClick(int x, int y){

//... Event behandeln}

}

Page 31: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

Visual Visual Basic.NETBasic.NET

►► Vollwertige Vollwertige ObjektObjekt--orientierteorientierte ProgrammierspracheProgrammiersprache►► ThreadingThreading►► Windows ServicesWindows Services►► Historische Überreste von DOS Zeiten wurden Historische Überreste von DOS Zeiten wurden

entfernt, Anpassungen für CTSentfernt, Anpassungen für CTSVariantVariant--DatentypDatentypSETSET / / LETLET / / OPTION BASEOPTION BASE / / GOSUBGOSUB / / ONON x x GOTOGOTO / etc./ etc.

►► Weitere Neuheiten Weitere Neuheiten (z.B. (z.B. AndAlsoAndAlso, , OrElseOrElse Operatoren)Operatoren)

Page 32: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

Visual Visual Basic.NETBasic.NET (1)(1)

►►Nachteile:Nachteile:Umstellung für Visual Basic Programmierer ist Umstellung für Visual Basic Programmierer ist gross. Auch für Einsteiger ist der Lernaufwand gross. Auch für Einsteiger ist der Lernaufwand grösser.grösser.Viele neue SchlüsselwörterViele neue SchlüsselwörterPortierung von VB6 Projekten nur sehr Portierung von VB6 Projekten nur sehr beschränkt möglich.beschränkt möglich.

Page 33: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

.NET Klassenbibliothek.NET Klassenbibliothek

►►Vorher: Win32 API, MFC, ATL, VB, …Vorher: Win32 API, MFC, ATL, VB, …►►.NET Framework bietet OO.NET Framework bietet OO--Bibliothek mit Bibliothek mit

über viel Funktionalität verteilt in über 100 über viel Funktionalität verteilt in über 100 NamespacesNamespaces

Page 34: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

.NET Klassenbibliothek (1).NET Klassenbibliothek (1)

Für Microsoft SQL Server optimierte ADO.NET SchichtSystem.Data.SqlClient

Für Oracle optimierte ADO.NET SchichtSystem.Data.OracleClient

Zugriff auf Daten via OleDbSystem.Data.OleDb

Zugriff auf Daten via ODBCSystem.Data.Odbc

Die zentralen Klassen von ADO.NETSystem.Data

Zum Abspeichern und Laden von Konfigurationseinstellungen

System.Configuration

Klassen, die für die Implementation von Laufzeit- und Designzeit-Verhalten von Komponenten.

System.ComponentModel

Klassen zum Erzeugen von Listen, Hashtables, Warteschlagen etc.

System.Collections

Klassen zum Erzeugen von CompilerSystem.CodeDom.Compiler

Zum Parsen von Source-Code Dokumenten.System.CodeDom

Allgemeine Klassen, die häufig verwendet werden.System

BeschreibungNamespace

Page 35: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

.NET Klassenbibliothek (2).NET Klassenbibliothek (2)

Bietet Reflection-Funktionalität für .NET SprachenSystem.Reflection

Erlaubt Programmierung von Netzwerkanwendungen, die auf Windows Sockets aufbauen.

System.Net.Sockets

Bietet einfache Schnittstellen zu gängigen Kommunikationsprotokollen.

System.Net

Klassen für synchrone und asynchrone Ein-/Ausgabefunktionen

System.IO

Ermöglicht Implementation von Anwendungen für verschiedene Kulturen (Sprachen, Kalender, Währungen, Zahlenformate, String-Sortierordnung etc.)

System.GlobalizationBietet Grundstrukturen Unternehmenssoftware.System.EnterpriseServicesErmöglicht Zugriff zu Druck-Funktionalitäten.System.Drawing.PrintingBietet 2-dimensionale Vektorgrafik Funktionalitäten.System.Drawing.Drawing2DGDI+ GrafikfunktionenSystem.DrawingErmöglicht den Zugriff auf ActiveDirectorySystem.DirectoryServices

Erlaubt Interaktion mit Systemprozessen, Zugriff auf EventLogs und Perfomance Counters.

System.Diagnostics

Page 36: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

.NET Klassenbibliothek (3).NET Klassenbibliothek (3)

XML ParserSystem.XMLWinFormsSystem.Windows.FormsASP.NET WebFormsSystem.Web.UIErmöglicht die Erstellung von WebServicesSystem.Web.ServicesGrundklassen von ASP.NETSystem.WebErmöglicht Multithreading-Anwendungen zu entwickeln.System.Threading

Reguläre AusdrückeSystem.Text.RegularExpressionTextfunktionalitäten, Codierungen (Unicode, UTF-8, …)System.TextErlaubt Windows Service Anwendungen zu entwickeln.System.ServiceProcess

Ermöglicht die Verwendung von verschiedenen kryptographischen Diensten.

System.Security.Cryptography.NET SicherheitskonzeptSystem.SecurityBietet Unterstützung für die Serialisierung.System.Runtime.SerializationFür die Erstellung von verteilten Anwendungen.System.Runtime.Remoting

Bietet Zugang zu nicht .NET Bibliotheken, z.B. zu COMSystem.Runtime.InteropServices

Page 37: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

ADO.NETADO.NET

►► ADO (Microsoft ADO (Microsoft ActiveActive--XX DataData ObjectObject))

Standardisiertes Modell Standardisiertes Modell für Datenzugrifffür Datenzugriff

►► ADO.NETADO.NETDataSetDataSet

DBDataSet

B2B

WindowsApplikation

Web Forms

XML

DBProvider

Page 38: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

ADO.NET ADO.NET -- DatasetDataset

Page 39: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

ADO.NET ADO.NET -- DesignerDesigner

►► DataSetDataSet Design basiert auf XML SchemaDesign basiert auf XML Schema►► Visual Visual Studio.NETStudio.NET

Import/Export von DatenbankImport/Export von DatenbankDesignerDesigner

Page 40: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

Web Web FormsForms (ASP.NET)(ASP.NET)

►►Vor .NET: ASP (Vor .NET: ASP (ActiveActive Server Server PagesPages))Skriptsprache (keine Typen, kein Kompilieren)Skriptsprache (keine Typen, kein Kompilieren)Keine Trennung von Darstellung und CodeKeine Trennung von Darstellung und Code

►►Mit .NETMit .NET„Visual „Visual ProgrammingProgramming““Einfache Integration anderer .NET BibliothekenEinfache Integration anderer .NET BibliothekenObjektObjekt--OrientiertOrientiertXML/XSLXML/XSL

Page 41: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

Web Web FormsForms -- Server ControlsServer Controls

►► Server Controls = Dynamische Komponenten, die Server Controls = Dynamische Komponenten, die auf dem Webserver laufenauf dem Webserver laufen

<form id="Form1" method="post" runat="server"><asp:Button id="Button1" runat="server" Text="Button"/></form>

Page 42: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

Web Web FormsForms –– „„CodebehindCodebehind““

►►„„Codebehind“Codebehind“--TechnikTechnik erlaubt Trennung von erlaubt Trennung von HTML/XHTML HTML/XHTML

ASPX ASPX HeaderHeader

CodebehindCodebehind KlasseKlasse►►wird kompiliert wird kompiliert DLL im Unterverzeichnis /bin

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="Test1.WebForm1" %>

DLL im Unterverzeichnis /bin

Page 43: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

Web Web FormsForms –– „„CodebehindCodebehind““

►►ASPXASPX--SeiteSeite erbt Button1 von WebForm1erbt Button1 von WebForm1

public class WebForm1 : System.Web.UI.Page{

protected System.Web.UI.WebControls.Button Button1;

private void Button1_Click(object sender, System.EventArgs e){

// Code}

// anderer Code}

Page 44: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

Web Web FormsForms -- ViewStateViewState

►► Problem: Kontext!Problem: Kontext!►► AnsatzAnsatz

ApplicationApplication--KontextKontextSessionSession--KontextKontext►► Implementiert durch Implementiert durch CookieCookie (oder falls (oder falls CookieCookie abgelehtabgeleht

wurde mit wurde mit SessionIDSessionID in URL)in URL)

ViewStateViewState--KontextKontext►►Problem:Problem:►► Implementiert durch verstecktes HTML FormularfeldImplementiert durch verstecktes HTML Formularfeld►►VerschlüsseltVerschlüsselt

Page 45: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

Web Web FormsForms –– User ControlsUser Controls

►►Web User Web User ControlControlWie gewöhnliches Wie gewöhnliches WebFormWebFormBeim Beim RendernRendern wird kein HTML wird kein HTML HeaderHeader erzeugterzeugtz.B. für Navigationsleistez.B. für Navigationsleiste

►►CustomCustom ControlControlEigenes Server Eigenes Server ControlControlEigene EventsEigene Eventsz.B. für spezielle Buttons z.B. für spezielle Buttons

Page 46: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

LocalizationLocalization & & GlobalizationGlobalization

►► Was ist Was ist LocalizationLocalization??Sprache der BenutzeroberflächeSprache der BenutzeroberflächeDatum & Zeit Formate, String Datum & Zeit Formate, String IndexingIndexing, …, …

►► CulturesCulturesBeispiele: ”Beispiele: ”enen--USUS”, ””, ”dede--CHCH”, ””, ”frfr--CHCH””

►► RessourcenRessourcenRessourcen (.Ressourcen (.resxresx))Sprachabhängige Ressourcen (.Sprachabhängige Ressourcen (.de.resxde.resx))Kompilierte Ressourcen (.Kompilierte Ressourcen (.dlldll, , dede--CH.dllCH.dll))FallbackFallback--PrinzipPrinzip

Page 47: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

LocalizationLocalization & & GlobalizationGlobalization

►► Windows FormWindows FormDesignDesign--TimeTime PropertiesProperties: : LocalizableLocalizable, , LanguageLanguageWindows Windows FormsFormsResourceResource Editor Editor ((Winres.exeWinres.exe))

Page 48: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

Mobile Mobile ProgrammingProgramming

►► Software fürSoftware fürPDAsPDAsMobiltelefoneMobiltelefone

►► .NET Framework .NET Framework Version 1.1Version 1.1

SQL Server CESQL Server CE

Page 49: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

DeploymentDeployment

►► Auslieferung von SoftwareAuslieferung von Software►► Vor .NETVor .NET

EXEEXE--DateiDateiDLLsDLLs in Windowsin Windows\\System32 (Versionsprobleme)System32 (Versionsprobleme)ActiveXActiveX DLLsDLLs registrieren (regsvr32.exe)registrieren (regsvr32.exe)Tools wie Tools wie InstallShieldInstallShield

►► Mit .NETMit .NETEXEEXE--DateiDatei und abhängige und abhängige DLLsDLLs in ein Verzeichnis in ein Verzeichnis kopierenkopierenFür komplexere Dinge wie Webapplikationen oder Für komplexere Dinge wie Webapplikationen oder Windows Services Setups (MSIWindows Services Setups (MSI--Datei) generieren.Datei) generieren.

Page 50: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

Tools für .NET EntwicklerTools für .NET Entwickler

►► Microsoft .NET Framework SDKMicrosoft .NET Framework SDKCommandCommand--LineLine ToolsToolsCompilerCompilerGratis [108 MB] Gratis [108 MB] http://http://www.microsoft.comwww.microsoft.com//netnet//

►► Microsoft Visual Studio .NETMicrosoft Visual Studio .NETverschiedene Editionenverschiedene Editionen

►► AlternativenAlternativenBorlandBorland Delphi 7 Studio (nur für Delphi)Delphi 7 Studio (nur für Delphi)BorlandBorland C# C# BuilderBuilder (noch nicht fertig!)(noch nicht fertig!)

Page 51: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

FazitFazit

►► Neue Dimension von Windows ProgrammierungNeue Dimension von Windows ProgrammierungC++/MFC/COM… zu kompliziertC++/MFC/COM… zu kompliziertVisual Basic 6 nicht OOVisual Basic 6 nicht OO

►► Übergang zu .NETÜbergang zu .NETRadikale ÄnderungenRadikale ÄnderungenUnterstützung für „Unterstützung für „unsafeunsafe“ Code, Einbindung von “ Code, Einbindung von anderen Bibliotheken (z.B. COM)anderen Bibliotheken (z.B. COM)

►► Neuer KomfortNeuer Komfortelegantes Konzept für Webapplikationenelegantes Konzept für WebapplikationenWebServicesWebServices (Neues Konzept von Software)(Neues Konzept von Software)

Page 52: Grundlagen des Microsoft .NET Frameworks - diuf.unifr.chdiuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/... · Microsoft SQL Server™ 2000. to . ... Portierung von

Fertig!Fertig!

►► Fragen?Fragen?►► DiskussionDiskussion