1 softwareentwicklung mit.net teil 1 was ist.net? die.net common language runtime dr. ralph zeller...

57
1 oftwareentwicklung mit .NE eil 1 as ist .NET? ie .NET Common Language Runtime r. Ralph Zeller I. Wolfgang Beer ichael Willers

Upload: diethelm-druffel

Post on 06-Apr-2015

115 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

1

Softwareentwicklung mit .NETTeil 1

Was ist .NET?Die .NET Common Language Runtime

Dr. Ralph ZellerDI. Wolfgang BeerMichael Willers

Page 2: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

2

Was ist .NET?

Mit dem .NET Framework können verteilte, XML basierte Web Applikationen erstellt werden.

Zu einer .NET Plattform gehört ein geeignetes Betriebssystem und Serversoftware.

Page 3: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

3

Benutzer-Benutzer-sichtsicht

Web Web ServicesServices

PCs undPCs undSmartSmartDevicesDevices

InfrastrukturInfrastruktur

IdentityIdentityNotificationNotification

App

licat

ion

App

licat

ion

Cen

ter 2

000

Cen

ter 2

000

Biz

Talk

B

izTa

lk

Serv

er 2

000

Serv

er 2

000

Com

mer

ce

Com

mer

ce

Serv

er 2

000

Serv

er 2

000

Exch

ange

Ex

chan

ge

2000

2000

SQL

Serv

er

SQL

Serv

er

2000

2000

ISA

Ser

ver

ISA

Ser

ver

2000

2000

Mob

ile

Mob

ile

Info

rmat

ion

Info

rmat

ion

2001

Ser

ver

2001

Ser

ver

Hos

t H

ost

Inte

grat

ion

Inte

grat

ion

Serv

er 2

000

Serv

er 2

000

Enterprise ServersEnterprise Servers

VisualStudio.NETVisualStudio.NET.NET Framework.NET Framework

EntwicklerEntwicklerToolsTools

Was gehört zu .NET?

Page 4: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

4

Programmatischer Zugriff auf Services im Web Kommunikation von Web-Anwendungen

untereinander XML als Standard für Daten(beschreibung)• plattform- und sprachunabhängig

SOAP als Protokoll für Funktionsaufrufe• plattform- und sprachunabhängig

Metabeschreibung der Services per XML• Web Service Description Language WSDL

• in Zukunft per UDDI (Universal Description, Discovery and Integration)

.NET DesignWeb Services

Page 5: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

5

.NET Plattform

Infrastruktur

Framework & Tools

Building Block Services

Common Language RuntimeEinheitliche KlassenbibliothekVisual Studio.NET

Ständig verfügbare Internet-Dienste(Code-Updates, Suchdienste, Messenger)

Heutige „2000-Produktfamilie“(zukünftig .NET Enterprise Servers)

DevicesMobile Geräte, auf denen .NET Anwendungenlaufen (Handy, Handheld)

Page 6: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

6

Class-LoaderClass-LoaderRemotingRemoting

KontextKontextConcurrencyConcurrency

TransaktionenTransaktionen

Sprach-Sprach-IntegrationIntegration

Warum eine Runtime?Einheitliches Integrationsmodell

COM Runtime(OLE32.DLL)

Microsoft Transaction

Server(MTXEX.DLL)

Layer(VBRUNxx.DLL)(MSVCRT.DLL)

COM+ Runtime(OLE32.DLL)

Layer(VBRUNxx.DLL)(MSVCRT.DLL)

Common Language Runtime

(MSCOREE.DLL)(MSCORLIB.DLL)

Page 7: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

7

.NET Framework

ASPVB Forms MFC & ATL

Windows API

Warum ein Framework?Einheitliches Programmiermodell

Page 8: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

8

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

Das .NET Framework

Page 9: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

9

VB

Compiler ASM Code

Übersicht

C#

Compiler

IL Code

C++

Compiler

JIT Compiler

Common Language Runtime

Betriebssystem

Page 10: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

10

Sämtlicher Code wird unter Aufsicht der Common Language Runtime ausgeführt

• Runtime führt Sicherheitsüberprüfungen aus

• Runtime übernimmt Speicherverwaltungund Fehlerbehandlung ( GC, Exceptions)

• Runtime führt Versionsprüfungen aus

• Dieser Code wird mit Managed Code bezeichnet

BasicsManaged Code

Page 11: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

11

Compiler erzeugen keinen native Code sondern eine prozessorunabhängige Zwischensprache

• Sprachintegration erfolgt auf Codeebene

• MSIL – Microsoft Intermediate Language

BasicsMicrosoft Intermediate Language

Page 12: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

12

IL-Code wird vor der Ausführung immer (!) durch Compiler in echten Maschinencode übersetzt

• Unabhängigkeit von Hardwareplattformen

• unter Windows CE bereits mit einemIL-Vorläufer im Einsatz

BasicsCode wird kompiliert

Page 13: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

13

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)

BasicsCode wird kompiliert

Page 14: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

14

3 Arten von JIT Compiler JIT EconoJIT

• Gleiche Funktion wie JIT benötigt aber weniger Ressourcen

• Der erzeugte Code nicht so optimiert wie der von JIT

OptJIT

• Kann nur OptIL verarbeiten und ist dafür:• Schnell

• Benötigt wenig Ressourcen

• Erzeugt optimierten Code.

• Und existiert noch nicht ;-)

Page 15: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

15

Das Typsystem wandert vom Compiler in die Runtime

• Typen werden eindeutig• „ein String unter C# und ein String unter

VB.NET sind identisch“

• Sprachen werden interoperabel, da sie das gleiche Typsystem benutzen

• CTS – Common Type System

BasicsCommon Type System

Page 16: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

16

MSIL unterscheidet sich von „reinen“ Assemblersprachen

• komplexe Datentypen und Objekte sind fester Bestandteil

• Konzepte wie Vererbung und Polymorphie werden von vornherein unterstützt

BasicsImplikationen

Page 17: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

17

BasicsBeispiel 1: „Hello World“ unter .NET

Page 18: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

18

Sprachen werden gleichwertig, da alle Compiler MSIL-Code erzeugen

• „eine C# Klasse kann von einer VB.NET Klasse abgeleitet sein“

• einheitliche Fehlerbehandlung

Compilerbau wird einfacher

• kein Typsystem

• Sprachen sind per„Definition“ interoperabel

BasicsImplikationen

Page 19: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

19

Basics Beispiel 2: Integration auf Codeebene

Page 20: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

20

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 SystemDas Objektmodell

Page 21: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

21

Common Type SystemBeispiel 3: Boxing und Unboxing

Page 22: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

22

Zwei Objekte sind gleich, wenn deren Inhalte gleich sind

Zwei Objekte sind identisch, wenn sie die gleiche Instanz referenzieren

Gleichheit definiert sich über die virtuelle Methode System.Object.Equals

• identisch: System.Object.Equals = true

• gleich: System.Object.Equals.Value = true

Common Type SystemGleichheit und Identität von Objekten

Page 23: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

23

Common Type SystemBeispiel 4: Delegates – Typisierte

Funktionszeiger

Page 24: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

24

Klassen und Methoden können über Attribute mit Metadaten versehen werden

Der Wert eines Attributs kann zur Laufzeit ausgelesen werden

Attribute werden durch Ableitungen von der Klasse System.Attribute definiert

Konsequente Weiterentwicklung des Attribut-Gedankens von COM+

• Aber: COM+ Attribut ≠ CLR Attribut !!!

Common Type SystemAttribute

Page 25: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

25

Common Type SystemBeispiel 5: Attribute

Page 26: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

26

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

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

Bestandsaufnahme

Page 27: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

27

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 ReflectionÜbersetzen von Sourcen

Page 28: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

28

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

• den IL-Code der Typen

• Beschreibung der Typen

Die Beschreibung der Typen wird mit Metadaten bezeichnet

Jedes Modul enthält Metadaten

• Compiler erstellt Metadaten „on the fly“

Metadaten und Reflection

Page 29: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

29

Metadaten sind für alle Module auf die gleiche Art und Weise aufgebaut

• Einheitliches Format !!!

Metadaten eines Moduls können zur Laufzeit ausgelesen und geändert werden

• Diesen Vorgang nennt man Reflection

• .NET Framework stellt entsprechende Klassen über den Namespace System.Reflection bereit

Metadaten und Reflection

Page 30: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

30

Metadaten und ReflectionBeispiel 6: Reflection

Page 31: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

31

Assemblies

.NET Anwendungen bestehen aus Assemblies

• Assembly = Komponente?

Ein Assembly ist ein Container für Module

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

Page 32: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

32

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)

AssembliesÜbersetzen von Sourcen

Page 33: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

33

Assemblies

Sobald ein Modul kompiliert ist, gehört es zu einem Assembly

• Compiler erstellt Assembly „on the fly“

• .NET Framework stellt entsprechende Klassen über den Namespace System.Reflection.Emit bereit

Die im Modul vorhandenen Typen sind nur innerhalb des Assemblies bekannt

Page 34: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

34

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

AssembliesContainer für mehrere Module

Page 35: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

35

Jedes Assembly enthält genau ein Manifest

Das Manifest beschreibt das Assembly

• Keine Headerdateien

• Keine Typenbibliothek, o. ä.

AssembliesManifest

Page 36: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

36

Das Manifest enthält

• Assembly-Identität• Name + Version + Ländercode

• Liste der Module, aus denen das Assembly besteht

• Referenzierte Assemblies

• Exportierte Typen und Resourcen

• Attribute

AssembliesManifest

Page 37: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

37

Private Assembly

• Assembly kann nur von genau einer Anwendung benutzt werden

Shared Assemby

• Assembly kann global von allen Anwendungen benutzt werden

AssembliesKategorien

Page 38: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

38

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

Keine Versionsüberprüfung Installation per Filecopy

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

• Verzeichnis kann per CFG-Datei definiert werden

AssembliesPrivate Assembly

Page 39: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

39

AssembliesBeispiel 7: Private Assembly

Page 40: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

40

Identifikation über einen Strong Name Versionsüberprüfung durch die

Runtime Installation im Global Assembly Cache

( SDK-Tool al.exe oder gacutil.exe)

• systemweiter “Speicherbereich”

• normale Dateien

• keine Registry-Einträge, o. ä.

AssembliesShared Assembly

Page 41: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

41

Eindeutigkeit des Names wird mit Hilfe der Public-Key-Verschlüsselung hergestellt

• Strong Name = Identität + Public Key

• Attribut Originator im Manifest

AssembliesShared Assembly - Strong Name

Page 42: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

42

1. Keyfile erstellen ( SDK-Tool sn.exe –k outf)

2. Compiler mit Keyfile und Versionsnummer aufrufen

3. Beim Erstellen des Assemblies wird der Public Key im Manifest eingetragen

4. Nach dem Erstellen wird das Modul, in dem sich das Manifest befindet, mit dem Private Key signiert

5. Client, der das Assembly referenziert, erhält beim Kompilieren den Public Key( Attribut Originator in seinem Manifest)

AssembliesSign-Verfahren für Shared Assemblies

Page 43: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

43

Client wird standardmäßig an die Version gebunden, die in seinem Manifest eingetragen ist

Dieses Verhalten kann per CFG-Datei überschrieben werden ( später)

AssembliesShared Assembly zur Laufzeit laden

Page 44: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

44

AssembliesBeispiel 8: Shared Assembly

Page 45: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

45

VersionierungAufbau der Versionsnummer

Page 46: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

46

Ein Shared Assembly ist grundsätzlich inkompatibel zum Client, wenn sich die Major- oder Minor-Version ändert

• Beispiel: neues Produktrelease

• Runtime wirft eine Type Load Exception

VersionierungIncompatible

Page 47: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

47

Ein Shared Assembly kann kompatibel zum Client sein, wenn sich die Revision bei gleichbleibender Major- und Minor-Version ändert

• Beispiel: Servicepack

• Runtime versucht, das Assembly mit der höchsten Revisions- und Buildnummer zu laden

VersionierungMaybe Compatible

Page 48: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

48

Ein Shared Assembly ist grundsätzlich kompatibel zum Client, wenn sich nur die Buildnummer ändert

• In diesem Fall liegt ein sogenannterQuick Fix Engineering (QFE) vor

• Beispiel: Security Hotfix

• Runtime versucht, das Assembly mit der höchsten Revisions- und Buildnummer zu laden

VersionierungQFE – Quick Fix Engineering

Page 49: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

49

VersionierungBeispiel 9: Standardvorgaben

Page 50: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

50

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

VersionierungVorgaben per CFG-Datei definieren

Page 51: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

51

Option BindingMode <safe | normal>

• safeRuntime versucht die Assembly-Version zu laden, die im Client-Manifest eingetragen ist

• normalRuntime versucht, die Assembly-Version mit der höchsten Revision- und Buildnummer zu laden

VersionierungVorgaben per CFG-Datei definieren

Page 52: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

52

Beispiel für die Option BindingMode

• Version 2.0.0.0 ist inkompatibel zu 2.0.1.0

• ohne neu zu kompilieren können Clients dennoch die Version 2.0.0.0 benutzen

VersionierungVorgaben per CFG-Datei definieren

Page 53: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

53

Option BindingRedir – Client soll eine ganz bestimmte Version eines Assemblies laden• Name

Name des Assemblies

• OriginatorPublic Key des Assemblies, um Eindeutigkeit zu gewährleisten

• VersionVersion, die nicht geladen werden sollen( ein Stern kennzeichnet alle Versionen)

• VersionNew Version des Assemblies, das geladen werden soll

VersionierungVorgaben per CFG-Datei definieren

Page 54: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

54

Beispiel für die Option BindingRedir

• Version 2.0.0.0 wurde installiert, hat aber einen Fehler

• Die Version 1.0.0.0 funktionierte hingegen reibungslos

• ohne neu zu kompilieren können sämtliche Aufrufe auf die Version 1.0.0.0 “umgeleitet” werden

VersionierungVorgaben per CFG-Datei definieren

Page 55: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

55

VersionierungBeispiel 10: Vorgaben per CFG-Datei

definieren

Page 56: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

56

Sprachübergreifende Integration und einheitliche Fehlerbehandung über ein gemeinsames Typsystem

Unterschiedliche Versionen gleicher Komponenten können parallel betrieben werden ( Ende der “DLL Hölle”)

Deployment von Anwendungen wird einfacher ( Filecopy, keine Registry)

Zusammenfassung

Page 57: 1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers

57

Fragen?

Uff...