56
1 Anwendungen der nächsten Generation Anwendungen der nächsten Generation Standard Standard Browsers Browsers Smarter Smarter Clients Clients Smarter Smarter Devices Devices Offene Internet Protokolle Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) (HTTP, SMTP, XML, SOAP) Anwendungen rufen Anwendungen rufen weltweit lose gekoppelt weltweit lose gekoppelt Dienstleistung auf Dienstleistung auf Anwendungen werden Anwendungen werden WebServices WebServices Biz Logic Biz Logic & Web & Web Service Service OS OS Services Services Public Web Public Web Services Services Building Block Building Block Services Services Internal Internal Services Services XML XML XML XML XML XML Servers Servers Data, Hosts Data, Hosts XML XML Other Other Services Services XML X ML XML XML XML XML HTML HTML

1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

Embed Size (px)

Citation preview

Page 1: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

1

Anwendungen der nächsten GenerationAnwendungen der nächsten Generation

StandardStandardBrowsersBrowsers

StandardStandardBrowsersBrowsers

SmarterSmarterClientsClients

SmarterSmarterClientsClients

SmarterSmarterDevicesDevices

SmarterSmarterDevicesDevices Offene Internet Protokolle Offene Internet Protokolle

(HTTP, SMTP, XML, SOAP) (HTTP, SMTP, XML, SOAP) Anwendungen rufenAnwendungen rufen

weltweit lose gekoppelteweltweit lose gekoppelteDienstleistung aufDienstleistung auf

Anwendungen werdenAnwendungen werdenWebServicesWebServices

OS OS ServicesServices

BizBizTier LogicTier Logic

BizBizTier LogicTier LogicBiz Logic Biz Logic & & Web ServiceWeb Service

OSOSServicesServices

OSOSServicesServices

Public WebPublic WebServicesServices

Building BlockBuilding BlockServicesServices

InternalInternalServicesServices

XMLXML

XMLXML

XMLXML

ServersServersData, HostsData, Hosts

ServersServersData, HostsData, Hosts

XMLXML

OtherOther ServicesServices XMLXML

XMLXML

XMLXML

HTMLHTML

Page 2: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

2

Die 3. Generation von Internet-AppsDie 3. Generation von Internet-Apps

1. Generation1. Generation

1994-961994-96

2. Generation2. Generation

1996-20001996-2000

Statische SeitenStatische Seiten Dyn. SeitenDyn. Seiten

E-mail,E-mail,einfache Infoeinfache Info

Personalisation,Personalisation,E-CommerceE-Commerce

IE, IISIE, IIS Windows DNAWindows DNA

3. Generation3. Generation

2000+2000+

Mehr als SurfenMehr als Surfen

Web ServicesWeb Services

Microsoft .NETMicrosoft .NET

Page 3: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

3

WebServiceWebServiceProviderProvider

BusinessBusinessPartnersPartners

.NET.NETBuilding Block Building Block

Services Services

Service FederationService FederationLose gekoppelte DienstleistungenLose gekoppelte Dienstleistungen

Finance

News

B2B

.NET.NETEnterprise Enterprise

ServerServer

BizTalkMessaging

SQL ServerXML

ExchangeWebStorage

Open Standards:

TCP/IPXML

HTTPSMTPSOAP

Enterprise Applikationen

AccountingAccounting

Order/Order/Sales Dept.Sales Dept.

Knowledge Knowledge ManagementManagement

WebsiteWebsite

XML

EDIFACT

X12

Page 4: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

4

.NET Building Block Services.NET Building Block Services

Verteilte, XML-basierte DiensteVerteilte, XML-basierte Dienste Arbeiten online oder offline Arbeiten online oder offline

(Intranet)(Intranet)IdentityIdentity

Notification, MessagingNotification, MessagingPersonalizationPersonalization

XML StorageXML StorageCalendarCalendar

Directory and SearchDirectory and SearchSoftware DeliverySoftware Delivery

Page 5: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

5

WebServicesWebServices

Open Internet Protocols

Internal Internal CorporateCorporateServicesServices

MicrosoftMicrosoft BuildingBuildingBlock Block ServicesServices

Web Web Services Services Built by 3Built by 3rdrd PartiesParties

Your Sales Data ServiceYour Sales Data ServiceYour Sales Data ServiceYour Sales Data Service

Your Internal Billing ServiceYour Internal Billing ServiceYour Internal Billing ServiceYour Internal Billing Service

…………Credit Card Statement ServiceCredit Card Statement ServiceCredit Card Statement ServiceCredit Card Statement ServiceGreenwich Mean Time ServiceGreenwich Mean Time ServiceGreenwich Mean Time ServiceGreenwich Mean Time ServiceGeographic Mapping ServiceGeographic Mapping ServiceGeographic Mapping ServiceGeographic Mapping Service

Passport – Identity ServicePassport – Identity ServicePassport – Identity ServicePassport – Identity Service

Directory and Search ServiceDirectory and Search ServiceDirectory and Search ServiceDirectory and Search Service

Personalization ServicePersonalization ServicePersonalization ServicePersonalization Service

Software Delivery ServiceSoftware Delivery ServiceSoftware Delivery ServiceSoftware Delivery Service

Calendaring ServiceCalendaring ServiceCalendaring ServiceCalendaring Service

Schematized Storage ServiceSchematized Storage ServiceSchematized Storage ServiceSchematized Storage Service

Notification & Msg ServiceNotification & Msg ServiceNotification & Msg ServiceNotification & Msg ServiceFirewalls können für den Zugriff auf WebServices konfiguriert werden.

Page 6: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

6

Web Web ServiceService

.NET Framework.NET Framework

Web Web ServiceService XMLXML

Base Classes

Data & XML

UserInterface

Common Language Runtime

WebServices

COMInterfaces

Page 7: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

7

Framework, Languages and ToolsFramework, Languages and Tools

Base Class Library

Common Language Specification

Common Language Runtime

Data and XML

VB C++ C#V

isual S

tud

io.N

ET

WebServices

JScript …

UserInterface

Page 8: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

8

Common Language RuntimeCommon Language Runtime

Class Loader

IL to NativeCompilers

CodeManager

GarbageCollector

Security Engine Debug Engine

Type Checker Exception Manager

Thread Support COM Marshaler

Page 9: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

9

COM Runtime(OLE32.DLL)

Microsoft Transaction

Server(MTXEX.DLL)

Layer(VBRUNxx.DLL)(MSVCRT.DLL)

LoaderLoaderRemotingRemoting

KontextKontextConcurrencyConcurrency

TransaktionenTransaktionen

TypsystemTypsystem

COM+ Runtime(OLE32.DLL)

Layer(VBRUNxx.DLL)(MSVCRT.DLL)

Common Language Runtime

(MSCOREE.DLL)(MSCORLIB.DLL)

Warum eine Runtime?Warum eine Runtime?Einheitliches IntegrationsmodellEinheitliches Integrationsmodell

Page 10: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

10

VB

Compiler

IL Code

ASM Code

ÜbersichtÜbersichtC#

Compiler

IL Code

C++

Compiler

IL Code

JIT Compiler

Common Language Runtime

Betriebssystem

Page 11: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

11

Sämtlicher Code wird unter Aufsicht der Sämtlicher Code wird unter Aufsicht der Common Language Runtime ausgeführtCommon Language Runtime ausgeführt Runtime führt Sicherheitsüberprüfungen Runtime führt Sicherheitsüberprüfungen

ausaus Runtime übernimmt Speicherverwaltung Runtime übernimmt Speicherverwaltung

und Fehlerbehandlung (und Fehlerbehandlung ( GC, Exceptions) GC, Exceptions) Runtime führt Versionsprüfungen ausRuntime führt Versionsprüfungen aus Dieser Code wird als Dieser Code wird als Managed Code Managed Code

bezeichnetbezeichnet

BasicsBasicsManaged CodeManaged Code

Page 12: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

12

Compiler erzeugen keinen native Code Compiler erzeugen keinen native Code sondern eine prozessorunabhängige sondern eine prozessorunabhängige ZwischenspracheZwischensprache Sprachintegration erfolgt auf CodeebeneSprachintegration erfolgt auf Codeebene MSIL MSIL –– Microsoft Intermediate Language Microsoft Intermediate Language MSIL wird oft auch mit IL bezeichnet MSIL wird oft auch mit IL bezeichnet

BasicsBasicsMicrosoft Intermediate LanguageMicrosoft Intermediate Language

Page 13: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

13

IL-Code wird vor der Ausführung IL-Code wird vor der Ausführung immer (!) durch Compiler in echten immer (!) durch Compiler in echten Maschinencode übersetzt Maschinencode übersetzt Unabhängigkeit von HardwareplattformenUnabhängigkeit von Hardwareplattformen unter Windows CE bereits mit einemunter Windows CE bereits mit einem

IL-Vorläufer im EinsatzIL-Vorläufer im Einsatz

BasicsBasicsCode wird kompiliertCode wird kompiliert

Page 14: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

14

JIT Compiler

Klasse A

Methode 1 (IL)

Methode 2 (IL)

Methode 3 (IL)

Methode 4 (IL)

Klasse B

Methode 1 (IL)

Methode 2 (IL)

(1) Methodenaufruf

(2) IL-Codedurch native

Code ersetzen

Methode 1 (ASM)

BasicsBasicsCode wird kompiliertCode wird kompiliert

Page 15: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

15

Die IL unterscheidet sich von Die IL unterscheidet sich von „reinen“ Assemblersprachen„reinen“ Assemblersprachen komplexe Datentypen und Objekte komplexe Datentypen und Objekte

sind fester Bestandteilsind fester Bestandteil Konzepte wie Vererbung und Konzepte wie Vererbung und

Polymorphie werden von vornherein Polymorphie werden von vornherein unterstütztunterstützt

BasicsBasicsImplikationenImplikationen

Page 16: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

16

Sprachen werden gleichwertig, da alle Sprachen werden gleichwertig, da alle Compiler MSIL-Code erzeugenCompiler MSIL-Code erzeugen „„eine C# Klasse kann von einer VB.NET eine C# Klasse kann von einer VB.NET

Klasse abgeleitet sein“Klasse abgeleitet sein“ einheitliche Fehlerbehandlungeinheitliche Fehlerbehandlung

Compilerbau wird einfacherCompilerbau wird einfacher kein eigenes Typsystemkein eigenes Typsystem keine eigene Standardbibliothekkeine eigene Standardbibliothek Sprachen sind „per Definition“ Sprachen sind „per Definition“

interoperabelinteroperabel

BasicsImplikationenImplikationen

Page 17: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

17

Das Typsystem wandert vom Das Typsystem wandert vom Compiler in die RuntimeCompiler in die Runtime Typen werden eindeutigTypen werden eindeutig

„„ein String unter C# und ein String unter ein String unter C# und ein String unter VB.NET sind identisch“VB.NET sind identisch“

Sprachen werden interoperabel, da Sprachen werden interoperabel, da sie das gleiche Typsystem benutzensie das gleiche Typsystem benutzen

CTS CTS –– Common Type System Common Type System

BasicsCommon Type SystemCommon Type System

Page 18: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

18

Object Value Type

Enum

Type

String

Array

Exception

Boolean

Byte

Char

Currency

DateTime

Decimal

Double

Guid

Int16

Int32

Int64

SByte

Single

TimeSpan

TypedRef.

UInt16

UInt32

UInt64

Void

Delegate

Typen imNamespaceSystem

Common Type SystemCommon Type SystemDas ObjektmodellDas Objektmodell

Page 19: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

19

Zwei Objekte sind Zwei Objekte sind gleichgleich, wenn deren , wenn deren Inhalte gleich sindInhalte gleich sind

Zwei Objekte sind Zwei Objekte sind identischidentisch, wenn sie , wenn sie die gleiche Instanz referenzierendie gleiche Instanz referenzieren

Gleichheit definiert sich über die Gleichheit definiert sich über die virtuelle Methode System.Object.Equalsvirtuelle Methode System.Object.Equals identisch: System.Object.Equals = trueidentisch: System.Object.Equals = true gleich: System.Object.Equals.Value = truegleich: System.Object.Equals.Value = true

Common Type SystemCommon Type SystemGleichheit und Identität von ObjektenGleichheit und Identität von Objekten

Page 20: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

20

Die Common Language Runtime Die Common Language Runtime ermöglicht unabhängig von ermöglicht unabhängig von Programmiersprachen eine durchgängig Programmiersprachen eine durchgängig objekt- und komponentenorientierte objekt- und komponentenorientierte ProgrammierungProgrammierung

.NET Sprachen sollten sich auf die .NET Sprachen sollten sich auf die Typen beschränken, die über das Typen beschränken, die über das Common Type System definiert sind Common Type System definiert sind

BestandsaufnahmeBestandsaufnahme

Page 21: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

21

Compiler

(C#, VB.NET, etc.)

Typ A {…}

Source Code

Typ B {…}

Typ C {…}

Metadaten für die Typen A, B und C

MSIL-Code für Typ A

MSIL-Code für Typ B

MSIL-Code für Typ C

Modul

Metadaten und ReflectionMetadaten und ReflectionÜbersetzen von SourcenÜbersetzen von Sourcen

Page 22: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

22

Ein Modul dient als Container für TypenEin Modul dient als Container für Typen Ein Modul enthältEin Modul enthält

den IL-Code der Typenden IL-Code der Typen Beschreibung der TypenBeschreibung der Typen

Die Beschreibung der Typen wird mit Die Beschreibung der Typen wird mit MetadatenMetadaten bezeichnet bezeichnet

Jedes Modul enthält MetadatenJedes Modul enthält Metadaten Compiler erstellt Metadaten „on the fly“Compiler erstellt Metadaten „on the fly“

Metadaten und ReflectionMetadaten und Reflection

Page 23: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

23

Metadaten sind für alle Module auf die Metadaten sind für alle Module auf die gleiche Art und Weise aufgebautgleiche Art und Weise aufgebaut Einheitliches Format !!! Einheitliches Format !!!

Metadaten eines Moduls können zur Metadaten eines Moduls können zur Laufzeit ausgelesen und geändert Laufzeit ausgelesen und geändert werdenwerden Diesen Vorgang nennt man Diesen Vorgang nennt man ReflectionReflection .NET Framework stellt entsprechende .NET Framework stellt entsprechende

Klassen über den Namespace Klassen über den Namespace System.Reflection bereitSystem.Reflection bereit

Metadaten und ReflectionMetadaten und Reflection

Page 24: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

24

.NET Framework

ASPVB Forms MFC & ATL

Windows API

Warum ein Framework?Einheitliches Programmiermodell

Page 25: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

25

System

System.Data System.Xml

System.Web

Globalization

Diagnostics

Configuration

Collections

Resources

Reflection

Net

IO

Threading

Text

ServiceProcess

Security

Design

ADO

SQLTypes

SQL

XPath

XSLT

RuntimeInteropServices

Remoting

Serialization

Serialization

Configuration SessionState

Caching Security

ServicesDescription

Discovery

Protocols

UIHtmlControls

WebControls

System.Drawing

Imaging

Drawing2D

Text

Printing

System.WinForms

Design ComponentModel

Base Class Library

Page 26: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

26

Hello, World!Hello, World!C#C#

using System;using System;

namespace namespace HelloWorldHelloWorld

{{

public class Class1public class Class1

{{

public static void Main()public static void Main()

{{

Console.WriteLine("Hello, World!");Console.WriteLine("Hello, World!");

}}

}}

}}

VB.NETVB.NET

Imports SystemImports System

Namespace HelloWorldNamespace HelloWorld

Class Class1Class Class1

Shared Sub Main()Shared Sub Main()

Console.WriteLine("Hello, World!")Console.WriteLine("Hello, World!")

End SubEnd Sub

End ClassEnd Class

End NamespaceEnd Namespace

Alternativ:Alternativ:

Module Module1Module Module1

Sub Main()Sub Main()

Console.WriteLine("Hello, World!")Console.WriteLine("Hello, World!")

End SubEnd Sub

End ModuleEnd Module

Page 27: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

27

Hello, World: C# ILHello, World: C# IL.namespace HelloWorld.namespace HelloWorld{{ .class public auto ansi Class1.class public auto ansi Class1 extends [mscorlib]System.Objectextends [mscorlib]System.Object {{ .method public hidebysig static void Main().method public hidebysig static void Main() il managed il managed {{ .entrypoint.entrypoint .maxstack 8.maxstack 8 IL_0000: ldstr "Hello, World!"IL_0000: ldstr "Hello, World!" IL_0005: call void [mscorlib]System.Console::WriteLine(class System.String)IL_0005: call void [mscorlib]System.Console::WriteLine(class System.String) IL_000a: retIL_000a: ret }} .method public hidebysig specialname rtspecialname .method public hidebysig specialname rtspecialname instance void .ctor() il managedinstance void .ctor() il managed {{ .maxstack 8.maxstack 8 IL_0000: ldarg.0IL_0000: ldarg.0 IL_0001: call instance void [mscorlib]System.Object::.ctor()IL_0001: call instance void [mscorlib]System.Object::.ctor() IL_0006: retIL_0006: ret }} }}}}

Page 28: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

28

C# und VB.NET GemeinsamkeitenC# und VB.NET Gemeinsamkeiten NamespacesNamespaces

Enthalten Typdefinitionen und NamespacesEnthalten Typdefinitionen und Namespaces Typdefinitionen Typdefinitionen

Klassen, Strukturen, Interfaces, Delegates ...Klassen, Strukturen, Interfaces, Delegates ... Elemente von TypenElemente von Typen

Konstanten, Felder, Methoden, Properties, Events, Konstanten, Felder, Methoden, Properties, Events, Operatoren, Konstruktoren, DestruktorenOperatoren, Konstruktoren, Destruktoren

Organisation der DateienOrganisation der Dateien Keine Header-Dateien, Programmcode ist “in-line”Keine Header-Dateien, Programmcode ist “in-line” Die Reihenfolge der Deklarationen ist ohne Die Reihenfolge der Deklarationen ist ohne

BedeutungBedeutung

Page 29: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

29

Stabile und dauerhafte SoftwareStabile und dauerhafte Software Automatisches SpeichermanagementAutomatisches Speichermanagement

Keine Speicherlecks oder „wilde Pointer“Keine Speicherlecks oder „wilde Pointer“ Garbage CollectionGarbage Collection C# und VB.NET kommen ohne Pointer ausC# und VB.NET kommen ohne Pointer aus

Eingebauter Typ: Eingebauter Typ: StringString Benutzerdefinierte ReferenztypenBenutzerdefinierte Referenztypen Große Auswahl an KollektionenGroße Auswahl an Kollektionen Referenz- und AusgReferenz- und Ausgaabeparameter (beparameter (out out , , refref))

99% der Pointer werden nicht mehr benötigt99% der Pointer werden nicht mehr benötigt C#: Dennoch sind Pointer über C#: Dennoch sind Pointer über unsafeunsafe-Code verfügbar-Code verfügbar

ExceptionsExceptions Error Handling von Anfang an bedachtError Handling von Anfang an bedacht

Typsicherheit (type safety)Typsicherheit (type safety) Keine uninitialisierten VariablenKeine uninitialisierten Variablen Keine unsichere CastsKeine unsichere Casts VersionsverwaltungVersionsverwaltung

Wurde von Grund auf berücksichtigtWurde von Grund auf berücksichtigt

Page 30: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

30

Alles ist wirklich ein ObjektAlles ist wirklich ein Objekt

C#/VB.NET vereinen Klassen und „primitive types“C#/VB.NET vereinen Klassen und „primitive types“ Alles ist ein Objekt ohne die Performance-Probleme anderer Alles ist ein Objekt ohne die Performance-Probleme anderer

SystemeSystemeDim s as String, o as ObjectDim s as String, o as Object

o = so = s

Einfach und erweiterbarEinfach und erweiterbar Man kann neue „primitive types“ erzeugenMan kann neue „primitive types“ erzeugen Intuitiv in Syntax und SemantikIntuitiv in Syntax und Semantik VB.NET: VB.NET: VariantVariant entfällt entfällt

COM-Interop:COM-Interop: Transparenter Zugriff auf COM-ObjekteTransparenter Zugriff auf COM-Objekte .NET-Objekte über COM nutzbar.NET-Objekte über COM nutzbar

Page 31: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

31

Zwei Arten von Typen

Value Value (struct)(struct) Reference Reference (class)(class)

Variable enthältVariable enthält WertWert ReferenzReferenz

SpeicherSpeicher StackStack HeapHeap

Initialisiert mitInitialisiert mit Alles 0Alles 0 Konstante: Konstante: nullnull

ZuweisungZuweisung kopiert Wertkopiert Wert kopiert Referenzkopiert Referenz

int i = 123;int i = 123;string s = "Hello world";string s = "Hello world";

123123ii

ss "Hello world""Hello world"

123123jj

tt

int j = i;int j = i;string t = s;string t = s;

Page 32: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

32

Boxing und Unboxing Jeder Datentyp kann als Objekt gespeichert Jeder Datentyp kann als Objekt gespeichert

oder übergeben werdenoder übergeben werden

int int i = 123;i = 123;object o = i;object o = i;int int j = (int)o;j = (int)o;

123123i

o

123123

System.Int32System.Int32 }} ““Boxing”Boxing”

123123j }} ““Unboxing”Unboxing”

Page 33: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

33

Implementation Inheritance Einfachvererbung (single inheritance)Einfachvererbung (single inheritance)

Auch über Sprachgrenzen hinwegAuch über Sprachgrenzen hinweg Abstrakte Klassen, finale KlassenAbstrakte Klassen, finale Klassen

Implementierung von beliebig vielen InterfacesImplementierung von beliebig vielen Interfaces Elemente einer KlasseElemente einer Klasse

Konstanten, Felder, Methoden, Konstruktoren, Destruktoren, Konstanten, Felder, Methoden, Konstruktoren, Destruktoren, Operatoren (C#)Operatoren (C#)

Properties, Indexer (C#), Properties, Indexer (C#), Events (VB.NET)Events (VB.NET)

Verschachtelte TypenVerschachtelte Typen Statische ElementeStatische Elemente Virtuelle MethodenVirtuelle Methoden

VB.NET: Alle MethodenVB.NET: Alle Methodenimmer virtuellimmer virtuell

ZugriffsschutzZugriffsschutz public, protected, internal, privatepublic, protected, internal, private

public class Person

{ private int YOB;

public int YearOfBirth{

get { return YOB; }; set { YOB = value; };

}

public int GetAgeToday()

{ return Today()-YearOfBirth;

} }

Page 34: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

34

Operator Overloading (C#) Die meisten Operatoren können überladen Die meisten Operatoren können überladen

werdenwerden Arithmetische, Vergleichs-, Logik- und BedingungsoperatorenArithmetische, Vergleichs-, Logik- und Bedingungsoperatoren Allerdings nicht: Zuweisungsop., Spezialop. (Allerdings nicht: Zuweisungsop., Spezialop. (sizeof, new, is, sizeof, new, is,

typeof)typeof)

class Matrix {...Matrix operator +(Matrix l, Matrix r){

Matrix e = new Matrix();e = l mit r verknüpfenreturn e;

}}...Matrix a = new Matrix(...), b = new Matrix(...);Matrix c = a + b;

Page 35: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

35

Interface InheritanceInterface erbt von Interface

Public Interface Interface1

End Interface

Public Sub M1()Public Property P1 As String

Public Interface Interface2

End Interface

Inherits Interface1

Public Sub M2()Public Property P2 As String

Page 36: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

36

Propertypublic class Button: Controlpublic class Button: Control{{ private string caption;private string caption;

public string Caption {public string Caption { get {get { return caption;return caption; }} set {set { caption = caption = valuevalue;; Repaint();Repaint(); }} }}}} Button b = new Button();

string s = b.Caption;b.Caption = "OK";

Page 37: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

37

Indexer (C#)public class ListBox: Controlpublic class ListBox: Control{{ private string[] items;private string[] items;

public string this[int index]{public string this[int index]{ get {get { return items[index];return items[index]; }} set {set {

items[index] = value; items[index] = value; Repaint();Repaint(); }} }}}} ListBox listBox = new ListBox();

string s = listBox[0]listBox[0] = "hello";listBox[1] = "world";

Page 38: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

38

Strukturenstruct Point struct Point {{

private double m_x, m_y;private double m_x, m_y;

public Point(double x, double y) {public Point(double x, double y) {

m_x = x; m_y = y;m_x = x; m_y = y;

}}

public double xpublic double x {{

get {get { return m_x;return m_x; }}

set {set { m_x = value;m_x = value; }}

}}

......

public static Point operator+(Point l, Point r) public static Point operator+(Point l, Point r) {{

return new Point(l.x+r.x, l.y+r.y);return new Point(l.x+r.x, l.y+r.y);

}}

public override string ToString() public override string ToString() {{

return "(" + m_x + ", " + m_y + ")";return "(" + m_x + ", " + m_y + ")";

}}

}}

Zusammenschluss vonZusammenschluss vonDaten und CodeDaten und Code WerttypWerttyp Keine VererbungKeine Vererbung LeichtgewichtigerLeichtgewichtiger

DatencontainerDatencontainer

Page 39: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

39

Attribute

public class OrderProcessorpublic class OrderProcessor{{ [WebMethod][WebMethod] public void SubmitOrder(PurchaseOrder order) {...}public void SubmitOrder(PurchaseOrder order) {...}}}

[XmlRoot("Order", Namespace="urn:acme.b2b-schema.v1")][XmlRoot("Order", Namespace="urn:acme.b2b-schema.v1")]public class PurchaseOrderpublic class PurchaseOrder{{ [XmlElement("shipTo")][XmlElement("shipTo")] public Address ShipTo; public Address ShipTo; [XmlElement("billTo")] public Address BillTo;[XmlElement("billTo")] public Address BillTo; [XmlElement("comment")] public string Comment;[XmlElement("comment")] public string Comment; [XmlElement("items")] public Item[] Items;[XmlElement("items")] public Item[] Items; [XmlAttribute("date")] public DateTime OrderDate;[XmlAttribute("date")] public DateTime OrderDate;}}

Page 40: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

40

Ausnahmebehandlung

Try auszuführende AnweisungenCatch e As COMException FehlerbehandlungCatch e As Exception ...Catch When Err.Number = 5 ...Catch ...Finally Abschließende Behandlung, auch ohne FehlerEnd Try

Page 41: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

41

Delegates

Delegate Empfänger

Delegate

n:1

Empfänger

MulticastDelegate

MulticastDelegate

n:m

Empfänger

Delegate Empfänger1:1

EmpfängerMulticastDelegate

Empfänger

1:n

Page 42: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

42

C# und VB.NET

C# VB.NET

Page 43: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

43

WebFormsWebForms Keine Scriptsprachen mehr!Keine Scriptsprachen mehr!

Verwenden „echter“ Sprachen: VB.NET, Verwenden „echter“ Sprachen: VB.NET, C#, ...C#, ...

Seite wird beim ersten Aufruf komplett auf Seite wird beim ersten Aufruf komplett auf dem Server kompiliertdem Server kompiliert

Kompiliat wird beim Aufruf gerendertKompiliat wird beim Aufruf gerendert Browser bekommen „reines“ HTML zu Browser bekommen „reines“ HTML zu

sehensehen Seiten können serverseitigeSeiten können serverseitige

UI-Controls verwendenUI-Controls verwenden Diese Controls werden Diese Controls werden WebControlsWebControls

genanntgenannt

Page 44: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

44

ADO.NET ArchitekturADO.NET Architektur

Managed ProviderManaged Provider

DataSet-DataSet-CommandCommand

DataReaderDataReader

CommandCommandConnectionConnection

XmlDocumentXmlDocument

XmlReaderXmlReader

XmlText-XmlText-ReaderReader

XmlNode-XmlNode-ReaderReaderTextReaderTextReader

StringString StreamStream

<xml><xml>……

</xml></xml>

““<xml><xml>……

</xml>”</xml>”

Web/Windows Web/Windows Form ControlsForm ControlsVS.NET VS.NET

DesignersDesigners

myDataSetmyDataSet

ItemItem

CustCustOrderOrder

VS.NET Class VS.NET Class GeneratorGenerator

Page 45: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

45

AssembliesAssemblies .NET Anwendungen bestehen aus .NET Anwendungen bestehen aus

AssembliesAssemblies Assembly = KomponenteAssembly = Komponente

Ein Assembly ist ein Container für Ein Assembly ist ein Container für ModuleModule

Sämliche Sicherheits- und Sämliche Sicherheits- und Versionsüberprüfungen durch die CLR Versionsüberprüfungen durch die CLR erfolgen auf der Basis von Assemblies !!!erfolgen auf der Basis von Assemblies !!!

Page 46: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

46

Compiler

(C#, VB.NET, etc.)

Typ A {…}

Source Code

Typ B {…}

Typ C {…}

Metadaten für die Typen A, B und C

MSIL-Code für Typ A

MSIL-Code für Typ B

MSIL-Code für Typ C

Modul

(app1.vb)

Manifest

Assembly (app1.dll)

AssembliesAssembliesÜbersetzen von SourcenÜbersetzen von Sourcen

Page 47: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

47

AssembliesAssemblies

Sobald ein Modul kompiliert ist, Sobald ein Modul kompiliert ist, gehört es zu einem Assemblygehört es zu einem Assembly Compiler erstellt Assembly „on the fly“Compiler erstellt Assembly „on the fly“ .NET Framework stellt entsprechende .NET Framework stellt entsprechende

Klassen über den Namespace Klassen über den Namespace System.Reflection.Emit bereitSystem.Reflection.Emit bereit

Die im Modul vorhandenen Typen Die im Modul vorhandenen Typen sind nur innerhalb des Assemblies sind nur innerhalb des Assemblies bekanntbekannt

Page 48: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

48

Metadaten für D und E

Modul 1 (app2.dll)

Manifest

Assembly (app1.dll)

MSIL-Code für Typ D

MSIL-Code für Typ E

Metadaten für F und G

Modul 2 (app3.dll)

MSIL-Code für Typ F

MSIL-Code für Typ G

AssembliesAssembliesContainer für mehrere ModuleContainer für mehrere Module

Page 49: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

49

Jedes Assembly enthält genau ein Jedes Assembly enthält genau ein ManifestManifest

Das Manifest beschreibt das AssemblyDas Manifest beschreibt das Assembly Keine HeaderdateienKeine Headerdateien Keine TypenbibliothekKeine Typenbibliothek

AssembliesAssembliesManifestManifest

Page 50: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

50

Das Manifest beinhaltetDas Manifest beinhaltet Assembly-Identität = Name + Version + Assembly-Identität = Name + Version +

LändercodeLändercode Liste der Module, aus denen das Assembly Liste der Module, aus denen das Assembly

bestehtbesteht Referenzierte AssembliesReferenzierte Assemblies Exportierte Typen und ResourcenExportierte Typen und Resourcen AttributeAttribute

AssembliesAssembliesManifestManifest

Page 51: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

51

Private AssemblyPrivate Assembly Assembly kann nur von genau einer Assembly kann nur von genau einer

Anwendung benutzt werdenAnwendung benutzt werden Shared AssembyShared Assemby

Assembly kann global von allen Assembly kann global von allen Anwendungen benutzt werdenAnwendungen benutzt werden

AssembliesAssembliesKategorienKategorien

Page 52: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

52

Identifikation anhand eines einfachen Identifikation anhand eines einfachen Namens, z.B. “Reverse” Namens, z.B. “Reverse”

Keine Versionsüberprüfung Keine Versionsüberprüfung Installation per Filecopy Installation per Filecopy

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

Verzeichnis kann per CFG-Datei definiert Verzeichnis kann per CFG-Datei definiert werdenwerden

AssembliesAssembliesPrivate AssemblyPrivate Assembly

Page 53: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

53

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

(( SDK-Tool al.exe oder gacutil.exe) SDK-Tool al.exe oder gacutil.exe) systemweiter “Speicherbereich” systemweiter “Speicherbereich” normale Dateiennormale Dateien keine Registry-Einträge, o. ä.keine Registry-Einträge, o. ä.

AssembliesAssembliesShared AssemblyShared Assembly

Page 54: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

54

VersionierungVersionierungAufbau der VersionsnummerAufbau der Versionsnummer

Page 55: 1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen

55

<Configuration><BindingMode> <AppBindingMode Mode="safe"/> <!-- normal | safe --> </BindingMode></ Configuration>

<Configuration><BindingPolicy> <BindingRedir Name=“[Assembly Name]" Originator="[Public Key]" Version="*" VersionNew=“[Versionsnummer]" UseLatestBuildRevision=“no"/> <!-- no | yes --> </BindingPolicy></Configuration>

VersionierungVersionierungVorgaben per CFG-Datei definierenVorgaben per CFG-Datei definieren