Einführung in .NET

Preview:

Citation preview

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

AgendaAgenda

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

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

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

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

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

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

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

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

.NET Framework Standards.NET Framework Standards

SSCLI

RotorCLI + mehr

CLI

ECMA/ISO StandardCommon Language

Infrastructure

.NET

.NET Framework

CE

AndreasAndreas

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)

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

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

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

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

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()

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

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

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…

AgendaAgenda

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

GenericsGenerics

VB VC++ C# ...

MS-IL

NativeCode

Common Language Runtime

JScript

Support für Generics/

Polymorphismus

UND hier…

...UND hier

GC

JITLoaderVerifier

...

AndreasAndreas

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;} }

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!

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

Java vs .NETJava vs .NET

AgendaAgenda

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

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

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

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

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)

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

Fragen ???Fragen ???

Recommended