32
Einführung in .NET Einführung in .NET Martin Saternus & Andreas Martin Saternus & Andreas Heil Heil Senior Student Partner Senior Student Partner MAP - Microsoft Academic Program MAP - Microsoft Academic Program Microsoft Deutschland GmbH Microsoft Deutschland GmbH

Einführung in .NET

Embed Size (px)

Citation preview

Page 1: Einführung in .NET

Einführung in .NETEinführung in .NET

Martin Saternus & Andreas HeilMartin Saternus & Andreas HeilSenior Student PartnerSenior Student Partner

MAP - Microsoft Academic ProgramMAP - Microsoft Academic Program

Microsoft Deutschland GmbHMicrosoft Deutschland GmbH

Page 2: Einführung in .NET

AgendaAgenda

Microsoft .NET FrameworkMicrosoft .NET Framework .NET 2.0.NET 2.0 .NET vs. Java.NET vs. Java …… ……

Page 3: Einführung in .NET

Die „Problemchen“Die „Problemchen“

Deployment komponentenbasierter Deployment komponentenbasierter Anwendungen ist nicht einfachAnwendungen ist nicht einfach Es droht die DLL-HölleEs droht die DLL-Hölle

Das Web-ProgrammierungsparadigmaDas Web-Programmierungsparadigma Zustandslose HTML-Seiten (oder Web-Zustandslose HTML-Seiten (oder Web-

Applikationen) sind schwer zu entwickelnApplikationen) sind schwer zu entwickeln

API‘sAPI‘s Es gibt eine Vielzahl von API‘s (COM, Win32, Es gibt eine Vielzahl von API‘s (COM, Win32,

MFC, usw.)MFC, usw.) Plattformabhängigkeit der API‘sPlattformabhängigkeit der API‘s

Page 4: Einführung in .NET

Die „Problemchen“Die „Problemchen“

Applikationen integrierenApplikationen integrieren Sprachen haben unterschiedliche TypsystemeSprachen haben unterschiedliche Typsysteme

Denken Sie nur mal an Strings...Denken Sie nur mal an Strings...

COM „sitzt auf“ anderen ObjektkonzeptenCOM „sitzt auf“ anderen Objektkonzepten COM ist ein binärer Kommunikations-standardCOM ist ein binärer Kommunikations-standard DCOM und Firewalls sind problematischDCOM und Firewalls sind problematisch

Dienst- und PlattformintegrationDienst- und Plattformintegration Keine Standards für die InteroperabilitätKeine Standards für die Interoperabilität

Page 5: Einführung in .NET

Die Welt hat sich verändertDie Welt hat sich verändert

Microsoft ist groß geworden in einer Welt...Microsoft ist groß geworden in einer Welt... ...mit Desktops...mit Desktops ...mit lokalen Netzwerken...mit lokalen Netzwerken

Die zukünftige Welt bringt uns...Die zukünftige Welt bringt uns... ...eine große Vielfalt von Computern (Devices)...eine große Vielfalt von Computern (Devices) ...eine Vernetzung aller Computer über das ...eine Vernetzung aller Computer über das

InternetInternet

Page 6: Einführung in .NET

Software als ServiceSoftware als Service Unterstützung von Smart DevicesUnterstützung von Smart Devices offene Standards als offene Standards als

GrundlageGrundlage

Partner Web Services

Microsoft Web Services

andere Web Services

Datenzugriff und -speicherung

Geschäftslogik der Applikation

Ihr Unternehmen.com

Internet + XML

andere Applikationen

Clients

VisionVision

Page 7: Einführung in .NET

Herausforderungen (1/2)Herausforderungen (1/2)

Wie verändert ein globales Netzwerk die Wie verändert ein globales Netzwerk die Softwarewelt?Softwarewelt? Neue Möglichkeiten für das DeploymentNeue Möglichkeiten für das Deployment Neue GeschäftsmodelleNeue Geschäftsmodelle Möglichkeit der Anwendungsintegration via Möglichkeit der Anwendungsintegration via

NetzwerkNetzwerk Plattformunabhängigkeit (OS, Hardware, Plattformunabhängigkeit (OS, Hardware,

Komponententechnologien)Komponententechnologien)

Sicherheitsanforderungen steigenSicherheitsanforderungen steigen Web-Programmierung muss effizienter werdenWeb-Programmierung muss effizienter werden

Page 8: Einführung in .NET

Herausforderungen (2/2)Herausforderungen (2/2)

Wie verändert die große Device-Vielfalt die Wie verändert die große Device-Vielfalt die Softwarewelt?Softwarewelt? Die Zielplattform für den Code ist unbekanntDie Zielplattform für den Code ist unbekannt Es wird plattform-unabhängiger Code gebrauchtEs wird plattform-unabhängiger Code gebraucht Was auf dem Desktop geht, muss auch auf einem Was auf dem Desktop geht, muss auch auf einem

Palmtop (o. ä.) funktionierenPalmtop (o. ä.) funktionieren

Page 9: Einführung in .NET

Lösungsansatz .NET FrameworkLösungsansatz .NET Framework

Operating SystemOperating System

Common Language RuntimeCommon Language Runtime

Base Class LibraryBase Class Library

ADO.NET and XMLADO.NET and XML

ASP.NETASP.NETWeb Forms Web ServicesWeb Forms Web Services

Mobile Internet ToolkitMobile Internet Toolkit

WindowsWindowsFormsForms

Common Language SpecificationCommon Language Specification

VBVB C++C++ C#C# JScriptJScript J#J#

Visu

al S

tud

io.N

ET

Visu

al S

tud

io.N

ET

Page 10: Einführung in .NET

.NET Framework Standards.NET Framework Standards

SSCLI

RotorCLI + mehr

CLI

ECMA/ISO StandardCommon Language

Infrastructure

.NET

.NET Framework

CE

AndreasAndreas

Page 11: Einführung in .NET

Runtime CompilerRuntime Compiler

CLR

VBSource Code

Compiler

C++C#

Assembly AssemblyAssembly

Operating System Services

IL Code

Common Language Runtime JIT Compiler

Compiler Compiler

NativeCode

ManagedCode

ManagedCode

ManagedCode

UnmanagedCode

CLR Services

Ngen

Andreas (Java Teil)Andreas (Java Teil)

Page 12: Einführung in .NET

AssembliesAssemblies

.NET Anwendungen bestehen aus Assemblies.NET Anwendungen bestehen aus Assemblies Private AssembliesPrivate Assemblies

Identifikation anhand eines einfachen NamensIdentifikation anhand eines einfachen Namens Keine Versionsüberprüfung Keine Versionsüberprüfung Installation per Filecopy Installation per Filecopy

Standardmäßig befinden sich Assembly und Anwendung im Standardmäßig befinden sich Assembly und Anwendung im gleichen Verzeichnisgleichen Verzeichnis

Verzeichnis kann per CFG-Datei definiert werdenVerzeichnis kann per CFG-Datei definiert werden

Shared AssemblyShared Assembly Identifikation über einen Identifikation über einen Strong NameStrong Name

Eindeutig per Public-Key-VerschlüsselungEindeutig per Public-Key-Verschlüsselung Strong Name = Identität + Public KeyStrong Name = Identität + Public Key

Versionsüberprüfung durch die RuntimeVersionsüberprüfung durch die Runtime Installation im Global Assembly CacheInstallation im Global Assembly Cache

Page 13: Einführung in .NET

Strong Name & CodesigningStrong Name & Codesigning

Strong Name garantiert Strong Name garantiert CodeintegritätCodeintegrität Unbemerktes Einschleusen von modifiziertem Unbemerktes Einschleusen von modifiziertem

Code wird verhindertCode wird verhindert Aber: Auch böse Menschen arbeiten mit Strong Aber: Auch böse Menschen arbeiten mit Strong

NamesNames

Code-Signing garantiert Code-Signing garantiert CodeidentitätCodeidentität Code ist aufgrund seines X.509-Zertifikats Code ist aufgrund seines X.509-Zertifikats

eindeutig identifizierbareindeutig identifizierbar

Page 14: Einführung in .NET

Operating SystemOperating System

Common Language RuntimeCommon Language Runtime

Base Class LibraryBase Class Library

ADO.NET and XMLADO.NET and XML

ASP.NETASP.NETWeb Forms Web ServicesWeb Forms Web Services

Mobile Internet ToolkitMobile Internet Toolkit

WindowsWindowsFormsForms

Common Language SpecificationCommon Language Specification

VBVB C++C++ C#C# JScriptJScript J#J#V

isua

l Stu

dio

.NE

TV

isua

l Stu

dio

.NE

T

.NET Framework.NET Framework

Page 15: Einführung in .NET

Einheitliches Programmier ModelEinheitliches Programmier Model

Windows APIWindows API

.NET Framework.NET Framework

Gleiche API ungeachtet der Gleiche API ungeachtet der Sprache und des ModelsSprache und des Models

ASPASPMFC/ATLMFC/ATLVB FormsVB Forms

Page 16: Einführung in .NET

Wieviel einfacher?Wieviel einfacher?

Windows APIWindows APIHWND hwndMain = CreateWindowEx(HWND hwndMain = CreateWindowEx( 0, "MainWClass", "Main Window",0, "MainWClass", "Main Window", WS_OVERLAPPEDWINDOW | WS_HSCROLL | WS_VSCROLL,WS_OVERLAPPEDWINDOW | WS_HSCROLL | WS_VSCROLL, CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT, (HWND)NULL, (HMENU)NULL, hInstance, NULL); (HWND)NULL, (HMENU)NULL, hInstance, NULL); ShowWindow(hwndMain, SW_SHOWDEFAULT); ShowWindow(hwndMain, SW_SHOWDEFAULT); UpdateWindow(hwndMain);UpdateWindow(hwndMain);

.NET Framework.NET Framework

Form Form form =form = new new Form() Form()form.Text = "Main Window"form.Text = "Main Window"form.Show()form.Show()

Page 17: Einführung in .NET

System System

System.DataSystem.Data System.XmlSystem.Xml

System.WebSystem.Web

GlobalizationGlobalization

DiagnosticsDiagnostics

ConfigurationConfiguration

CollectionsCollections

ResourcesResources

ReflectionReflection

NetNet

IOIO

ThreadingThreading

TextText

ServiceProcessServiceProcess

SecuritySecurity

CommonCommon

OleDbOleDb

SQLTypesSQLTypes

SqlClientSqlClient

XPathXPath

XSLTXSLT

RuntimeRuntimeInteropServicesInteropServices

RemotingRemoting

SerializationSerialization

SerializationSerialization

ConfigurationConfiguration SessionStateSessionState

CachingCaching SecuritySecurity

ServicesServicesDescriptionDescription

DiscoveryDiscovery

ProtocolsProtocols

UIUIHtmlControlsHtmlControls

WebControlsWebControls

System.DrawingSystem.Drawing

ImagingImaging

Drawing2DDrawing2D

TextText

PrintingPrinting

System.Windows.FormsSystem.Windows.Forms

DesignDesign ComponentModelComponentModel

KlassenbibliothekKlassenbibliothek

Page 18: Einführung in .NET

Operating SystemOperating System

Common Language RuntimeCommon Language Runtime

Base Class LibraryBase Class Library

ADO.NET and XMLADO.NET and XML

ASP.NETASP.NETWeb Forms Web ServicesWeb Forms Web Services

Mobile Internet ToolkitMobile Internet Toolkit

WindowsWindowsFormsForms

Common Language SpecificationCommon Language Specification

VBVB C++C++ C#C# JScriptJScript J#J#V

isua

l Stu

dio

.NE

TV

isua

l Stu

dio

.NE

T

Framework, Languages und ToolsFramework, Languages und Tools

Page 19: Einführung in .NET

SprachenSprachen

Die .NET Plattform ist SprachneutralDie .NET Plattform ist Sprachneutral Alle .NET Sprachen sind gleich berechtigtAlle .NET Sprachen sind gleich berechtigt Wahl der Sprache nach Ihren FähigkeitenWahl der Sprache nach Ihren Fähigkeiten

Common language specification (CLS)Common language specification (CLS) Satz an Merkmalen, die in jeder Sprache garantiert sindSatz an Merkmalen, die in jeder Sprache garantiert sind

Microsoft liefertMicrosoft liefert Visual BasicVisual Basic®®, C++, C#, J#, JScript, C++, C#, J#, JScript®®

Drittanbieter liefernDrittanbieter liefern APL, COBOL, Delphi, Pascal, Eiffel, Haskell, ML, Oberon, APL, COBOL, Delphi, Pascal, Eiffel, Haskell, ML, Oberon,

Perl, Python, Scheme, Smalltalk…Perl, Python, Scheme, Smalltalk…

Page 20: Einführung in .NET

AgendaAgenda

Microsoft .NET FrameworkMicrosoft .NET Framework .NET 2.0.NET 2.0 Web ServicesWeb Services

Page 21: Einführung in .NET

GenericsGenerics

VB VC++ C# ...

MS-IL

NativeCode

Common Language Runtime

JScript

Support für Generics/

Polymorphismus

UND hier…

...UND hier

GC

JITLoaderVerifier

...

AndreasAndreas

Page 22: Einführung in .NET

Generics BeispielGenerics Beispiel

class Node<T> {class Node<T> {

T m_data;T m_data;

Node<T> m_next;Node<T> m_next;

public Node(T data, Node<T> next) {public Node(T data, Node<T> next) {

m_data = data;m_data = data;

m_next = next;m_next = next;

}}

// Access the data for the node// Access the data for the node

public T Data {public T Data {

get { return m_data; } get { return m_data; }

set { m_data = value; }set { m_data = value; }

}}

// Access the next node// Access the next node

public Node<T> Next {public Node<T> Next {

get { return m_next; } get { return m_next; }

set { m_next = value; }set { m_next = value; }

}}

//Create a linked list of integers//Create a linked list of integers

Node<Int32> head = new Node<Int32> head = new Node<Int32>(5, null);Node<Int32>(5, null); head = new Node<Int32> (10, head);head = new Node<Int32> (10, head);

head = new Node<Int32> (15, head);head = new Node<Int32> (15, head);

// Sum up integers by traversing linked list// Sum up integers by traversing linked listInt32 sum = 0;Int32 sum = 0;for (Node<Int32> current = head; for (Node<Int32> current = head; current != null; current != null; current = current.Next) {current = current.Next) { sum += current.Data;sum += current.Data;} }

Page 23: Einführung in .NET

Generics vs Polymorphismus (1/2)Generics vs Polymorphismus (1/2)

Staff object p

Student object s

Contractor object cr[1] = p

r[2]=s

r[3]=c

Polymorphisches Register SortedList r

vom Typ object

Student t = (Student) r[2];

•Dynamische Typinforamtion in r• Überpüfung bei Zuweisung!

Page 24: Einführung in .NET

Generisches Register SortedList gr

Generics vs Polymorphismus (2/2)Generics vs Polymorphismus (2/2)

Staff object p

Student object s

Contractor object cgr[1] = p

gr[2]=s

gr[3]=c

vom Typ <IAccess> objects

Student t = gr[2];

•Information für gr zur Kompliierzeit•Kein Casting für Zuweisung nötig

Page 25: Einführung in .NET

Java vs .NETJava vs .NET

Page 26: Einführung in .NET

AgendaAgenda

Microsoft .NET FrameworkMicrosoft .NET Framework .NET 2.0.NET 2.0 Web ServicesWeb Services

Page 27: Einführung in .NET

Was ist ein Web Services?Was ist ein Web Services? Dienste im Netz, die über Standard-Protokolle erreichbar sindDienste im Netz, die über Standard-Protokolle erreichbar sind Datenaustausch basiert auf XML- DokumentenDatenaustausch basiert auf XML- Dokumenten Plattform- und unternehmensübergreifende TransaktionenPlattform- und unternehmensübergreifende Transaktionen

Lieferant BLieferant B

IhrIhrUnternehmenUnternehmen

Verbinden (Web)Verbinden (Web) Lieferant CLieferant C

Bestell-Bestell-wesenwesen

Lieferant ALieferant A

KundenKundenFinden (UDDI)Finden (UDDI)Daten (XML)Daten (XML)Interagieren (SOAP)Interagieren (SOAP)

LagerLager

Page 28: Einführung in .NET

Was ist ein Web Service? Was ist ein Web Service?

WebService

RMIService

DCOMService

Client

Firewall

Port 80

eine Komponente, eine Komponente, die die über Standard-über Standard-Webprotokolle Webprotokolle interagiertinteragiert

Universal Firewall Universal Firewall PenetrationPenetration Protokoll Protokoll

Page 29: Einführung in .NET

Web Services StackWeb Services Stack

Kommunikationsnetz : Kommunikationsnetz : InternetInternet

Universelles Datenformat :Universelles Datenformat : XMLXML

Datenaustausch zw. WS :Datenaustausch zw. WS : SOAPSOAP

Web Service Directory :Web Service Directory : UDDIUDDI

einfache, offene und akzeptierte Standardseinfache, offene und akzeptierte Standards

Beschreibung von WS :Beschreibung von WS : WSDLWSDL

Page 30: Einführung in .NET

SOAPSOAP

Früher: Simple Object Access ProtocolFrüher: Simple Object Access Protocol Mechanismus zum Austausch von strukturierter Mechanismus zum Austausch von strukturierter

und typisierter Information zwischen und typisierter Information zwischen Kommunikationsendpunkten im Internet auf Basis Kommunikationsendpunkten im Internet auf Basis von XMLvon XML

HTTP als TransportprotokollHTTP als Transportprotokoll XML zur DatenkapselungXML zur Datenkapselung Spezifikation enthältSpezifikation enthält

SOAP Envelope (für Framework)SOAP Envelope (für Framework) SOAP Encoding (optional, für plattform-übergreifendes SOAP Encoding (optional, für plattform-übergreifendes

Marshaling von Daten/Objekten)Marshaling von Daten/Objekten)

Page 31: Einführung in .NET

Web Service Prog.modellWeb Service Prog.modell

Erstellen Sie eine .asmx Datei, die eine Klasse mit den Erstellen Sie eine .asmx Datei, die eine Klasse mit den Methoden enthält, die Sie zur Verfügung stellen Methoden enthält, die Sie zur Verfügung stellen möchtenmöchten

Das Hinzufügen des Attributs Das Hinzufügen des Attributs WebMethod WebMethod zu einer zu einer Public-Methode macht sie automatisch zu einem Web Public-Methode macht sie automatisch zu einem Web ServiceService

ASP.NET macht den "Rest"ASP.NET macht den "Rest" Erzeugen der Service-Beschreibung alsErzeugen der Service-Beschreibung als

WSDL-Datei (Web Service Description Language)WSDL-Datei (Web Service Description Language) Compile on demandCompile on demand

Page 32: Einführung in .NET

Fragen ???Fragen ???