Top Banner
Common Language Runtime Einheitliche Klassenbibliothek Visual Studio.NET Ständig verfügbare Internet-Dienste (Code-Updates, Suchdienste, Messenger) Heutige „2000-Produktfamilie“ (zukünftig .NET Enterprise Servers) Mobile Geräte, auf denen .NET Anwendungen laufen (Handy, Handheld) Infrastruktur Framework & Tools Building Block Services Common Language Runtime Einheitliche Klassenbibliothek Visual Studio.NET Ständig verfügbare Internet-Dienste (Code-Updates, Suchdienste, Messenger) Heutige „2000-Produktfamilie“ (zukünftig .NET Enterprise Servers) Devices Mobile Geräte, auf denen .NET Anwendungen laufen (Handy, Handheld) L. .NET L.1 Überblick L.1.1 .NET Plattform: Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 1
33

L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

Sep 03, 2019

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

Infrastruktur

Framework & Tools

Building BlockServices

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 Anwendungen laufen (Handy, Handheld)

Infrastruktur

Framework & Tools

Building BlockServices

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 Anwendungen laufen (Handy, Handheld)

L. .NET

L.1 Überblick

L.1.1 .NET Plattform:

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 1

Page 2: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

L.1.2 .NET Framework Zielsetzung:

zur Entwicklung von verteilten XML-basierten Web-Anwendungen,E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,Web-Services nach Vorstellungen von Microsoft,.

Sprachbezogenen Merkmale des .NET Frameworks: sprachunabhängig durch Common Type System,plattformunabhängig durch Zwischencode,sprachübergreifende Laufzeitumgebung,C# als neue, Java-ähnliche Sprache,

Kommunikationstechnische Merkmale:Serialisierung von Objekten über XML Formate,Gekapselte Kommunikation über HTTP & XML,wesentliche Teile standardisiert durch ECMA,Entfernte Methodenaufrufe.

Aktuell .Net Framework 3.0:in Windows Vista integriert, vollständiges Programmierpaket,Workflow Services, Communication Services, GUI-Services, Card Space als Meta Sicherheitssystem ...

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 2

Page 3: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

L.2 Common Language Infrastructure - CLI

Compiler generieren Zwischencode:

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 3

Oberon

Compiler ASM Code

C#

Compiler

C++

Compiler

JIT Compiler

Common Language Runtime

Betriebssystem

IL Code IL Code IL Code

Oberon

Compiler ASM Code

C#

Compiler

C++

Compiler

JIT Compiler

Common Language Runtime

Betriebssystem

IL Code IL Code IL Code

Page 4: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

Common Language Runtime (CLR):sprachübergreifende Laufzeitumgebung,sprachübergreifende Klassenbibliothek,erweiterbares Format für Meta-Daten,sprachübergreifendes Typsystem.

IL=MSIL=> CIL:ursprünglich Microsoft Intermediate Language,Umbenannt nach der Standardisierung in CIL,IL für eine abstrakte Stackmaschine,vgl. Java Virtuelle Maschine.

Ausführung durch Execution Engine (EE): Exe-Datei: IL-Code + Stub zum Laden der EE,nach dem Laden wird native Code erzeugt,Codeerzeugung durch JIT-Compiler.

Managed Code:(Assemblermodule wären „unmanaged code“),automatische Freispeichersammlung (GC),wird unter Regie der CLR ausgeführt,Fehlerbehandlung (Exceptions),Sicherheitsprüfungen,Versionsprüfungen.

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 4

Page 5: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

L.2.1 CIL als Assemblersprache für StackmaschineIm Vergleich mit reinen Assembler-Sprachen eher an höhere Programmiersprachen angelehnt:

.assembly hello {}

.method public static void Main() il managed{

.entrypoint

.locals(int32 V_0) // lokale 'var'ldc.i4.2 // push '2'ldc.i4.3 // push '3'add // addierestloc.0 // speichere in 'var'ldloc.0 // push varcall void [mscorlib]System.Console::WriteLine(int32)ret

}

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 5

Page 6: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

System

System.Data System.Xml

System.Web

GlobalizationDiagnosticsConfigurationCollections

ResourcesReflectionNetIO

ThreadingTextServiceProcessSecurity

DesignADO

SQLTypesSQL

XPathXSLT

RuntimeInteropServicesRemotingSerialization

Serialization

Configuration SessionStateSecurity

ServicesDescriptionDiscovery

UIHtmlControlsWebControls

System.Drawing

ImagingDrawing2D

TextPrinting

System.WinFormsDesign ComponentModel

Protocols

Caching

System

System.Data System.Xml

System.Web

GlobalizationDiagnosticsConfigurationCollections

ResourcesReflectionNetIO

ThreadingTextServiceProcessSecurity

DesignADO

SQLTypesSQL

XPathXSLT

RuntimeInteropServicesRemotingSerialization

Serialization

Configuration SessionStateSecurity

ServicesDescriptionDiscovery

UIHtmlControlsWebControls

System.Drawing

ImagingDrawing2D

TextPrinting

System.WinFormsDesign ComponentModel

Protocols

Caching

L.2.2 .NET KlassenbibliothekenUmfangreiche Bibliotheken, z.B. System:

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 6

Page 7: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

Object

Value Type

Enum

Type

String

Array

Exception

...

Typen imNamespaceSystem

Struct

Boolean

Char

Int32

...

Object

Value Type

Enum

Type

String

Array

Exception

...

Typen imNamespaceSystem

Struct

Boolean

Char

Int32

...

L.2.3 Objektmodell im Common Type System Typen sind sprachübergreifend eindeutig:

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 7

Page 8: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

Werte-Typen: primitive Datentypen, Aufzählungen und Records.

Referenz-Typen: Arrays, Klassen, Interfaces, und Delegates.

Vererbung:einfache Klassenvererbung,mehrfaches Subtyping durch Interfaces.

Boxing: Umwandlung zwischen primitiven Datentypen und Objekten,Vergleichbar den Typklassen (Integer, Double, ...) in Java.

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 8

public static void main() {int x = 5;object o = x;int y = (int)o;

}x 5

y 5

o5

System.Int32

public static void main() {int x = 5;object o = x;int y = (int)o;

}x 5

y 5

o5

System.Int32

Page 9: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

L.2.4 Delegates: Vergleichbar mit Prozedurvariablen in Pascal:

Delegate Variable referenziert einen Methoden-Stub mit dazu passender Parametersignatur,Auch Event Mechanismen können mit Delegates realisiert werden.

Delegate Beispiel (keine Events):

using System;delegate void Delg(string s);

public class Example { private static void Func1(string s) { Console.WriteLine(s); } private void Func2(string s) {Console.WriteLine(17); }

public static void Main() { Delg d1,d2; Example e=new Example();

d1 = new Delg(Func1); d1("hello world"); d2 = new Delg(e.Func2); d2("hello world");

}}

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 9

Page 10: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

L.2.5 Meta-Daten & ReflectionModul:

Ist ein Container für Typen (bzw. Klassen) und enthält:Meta-Daten = Typbeschreibungen/Symboltabellen,IL-Code der Typen (Intermediate Language).

Meta-Daten:Destillat aus den Symboltabellen des Compilers,zugreifbar zur Laufzeit (Überprüfen von Casts..),einheitliches Format,vgl. Java Reflection.

Attribute:eigene Meta-Daten für Klassen & Methoden,auslesbar über System.Reflection.

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 10

Source Code, z.B. Visual Basic (application1.vb)

Typ A{... }

Typ B{... }

Typ C{... }

Compiler (C#, Java, Oberon, C++, VB)

Metadaten für A, B, C

Modul

Typ AMSIL

Typ BMSIL

Typ CMSIL

Page 11: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

L.2.6 AssembliesWerden automatisch durch den Compiler erstellt (Kein Linker),

Dot-NET Anwendungen bestehen aus Assemblies (~Komponenten):Etwa entsprechend einem traditionell durch den Linker hergestellten Load-Module.Assemblies sind Container für eines oder mehrere Module,Module sind nur innerhalb des Assemblies bekannt,„Neuer Wein in alten Schläuchen“,ein Manifest pro Assembly.

JIT-Compiler:Nicht zu verwechseln mit dem Quellcode-Compiler für C#, Java, Visual Basic ...erzeugt aus dem IL-Code in den Assemblies nativen CPU-Code,Codeerzeugung Methode für Methode,„JIT-Lag“ beim ersten Aufruf.

Sicherheits- und Versionsprüfungen der CLR erfolgen auf Ebene der Assemblies (Bytecode-Verifier in Java VMs).

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 11

Page 12: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

Assembly (xyz.dll)

L.2.7 Quellcode-Übersetzung:Manifest beschreibt Assembly:

Identität: Name, Version, Ländercode,zugehörige Modulliste & Attribute,exportierte Typen & Ressourcen,referenzierte Assemblies.

Statisch referenzierte Assemblies:werden erst bei Bedarf geladen,zur Übersetzungszeit bekannt, csc /r:myLib.dll abc.cs

Assemblies dynamisch ladbar:lokal oder aus dem Internet,AppDomain.Load,AppDomain.ExecuteAssembly

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 12

Source Code, z.B. Visual Basic (application1.vb)

Typ A{... }

Typ B{... }

Typ C{... }

Compiler (C#, Java, Oberon, C++, VB)

Metadaten für A, B, C

Modul

Typ AMSIL

Typ BMSIL

Typ CMSILManifest

Page 13: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

L.2.8 Assembly KategorienPrivate Assemblies:

Normalerweise nur von einer Anwendung nutzbar,typischerweise im Anwendungsverzeichnis,Identifikation anhand einfachen Namens,keine Versionsprüfung.

Shared Assemblies - GAC: Installation in Global Assembly Cache,Sind global für alle Anwendungen,obligatorische Versionsprüfung.

Strong Names für Shared Assemblies:

Kein Austausch möglich,Assembly Name,Version, Kultur,Name, Key.

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 13

Page 14: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

Compiler Compiler

ManifestRef.: MyLibPK=34e25c…

Main

ManifestPK=34e25c…

Strong NameSignature

MyLib

Key-Pair

QuellenCompiler Compiler

ManifestRef.: MyLibPK=34e25c…

Main

ManifestPK=34e25c…

Strong NameSignature

MyLib

Key-Pair

Quellen

L.2.9 Signieren von Assemblies Verfahren mit öffentlichen Schlüsseln.

Öffentlichen Schlüssel im Manifest ablegen.

Der rechtmässige Erzeuger signiert Dateien mit privatem Schlüssel.

Mithilfe des öffentlichen Schlüssels kann die Echtheit der Signatur geprüft werden.

Klienten speichern mit dem Namen auch den öffentlichen Schlüssel.

Schlüsselpaar erzeugen: sn.exe –k c:\outf

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 14

Page 15: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

App.exe

1.2.3.422acab57

Calc.DLL

Ref-1:Calc.DLL1.2.3.422acab57

Ref-2:AdvMath.DLL(private)

Ref-1:2.0.0.056ab8157

AdvMath.DLL

2.0.0.056ab8157

Calc.DLL

App.exe

1.2.3.422acab57

Calc.DLL

Ref-1:Calc.DLL1.2.3.422acab57

Ref-2:AdvMath.DLL(private)

Ref-1:2.0.0.056ab8157

AdvMath.DLL

2.0.0.056ab8157

Calc.DLL

L.2.10 VersionierungVersion im Manifest: Major.Minor.Revision.Build

Klient standardmäßig an Version gebunden, die sein Manifest referenziert:

Anpassung durch CFG-Datei mögl. à Lösung des DLL-ProblemsCulture-Attribute für Lokalisierung

Side-by-Side Execution: Veschiedene Versionen gleichzeitig ladbar,Festplattenplatz ist mittlerweile preiswert,Auflösung der Referenzen zur Laufzeit,

=> private Assemblies empfohlen.

Abschaffung der „DLL-Hölle”.

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 15

Page 16: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

Objekt

AppDomain AppDomain AppDomain

Prozeß 1 Prozeß 2

Objekt

Objekt

Objekt

Objekt

Marshaling

Marshaling

Objekt

AppDomain AppDomain AppDomain

Prozeß 1 Prozeß 2

Objekt

Objekt

Objekt

Objekt

Marshaling

Marshaling

L.3 Kommunikation

L.3.1 Application DomainsMehrere Application Domains pro Prozeß möglich.Application Domains sind virtuelle Prozesse:

eigener Adressraum, aber nur User Prozess,CLR abstrahiert von OS-Prozessen.

Gegenseitige Isolierung von Anwendungen:

Besser nur eine „unmanaged“ Anwendung pro Domain;Aber mehrere „managed“ Anwendungen.

Assemblies:Mehrere pro Domain,Header-Information,Metainformation,IL Code.

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 16

Page 17: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

Marshaling für Aufrufe zwischen Application Domains.

XML / SOAP als Serialisierungsformat.

Marshal-By-Value:Kopie an Ziel senden (Standard),keine Verbindung zwischen Kopie & Original,automatische Serialisierung mit Attribut Serializable, Einschränkung durch Variabelnattribut NonSerialized, individuelle Serialisierung durch Interface ISerializable.

Marshal-By-Reference:nur Referenz an Ziel senden – keine Kopien,Verbindung zwischen Referenz & Original durch Stellvertreter-Objekt (Proxy).Implementierung durch Ableiten einer Klasse von System.MarshalByRefObject.

„Remoting“ erfolgt immer dann, falls Marshalling notwendig ist

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 17

Page 18: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

myhost.org

BS Kern

User Prozeß

CLR AppDomain

http://myhost.org:345/MyObj

345 80

Winsock: SocketTCP:345

MyServiceMyObj StackBuilderSink

(URI:MyObj)

MyObj

HTTPChannel

myhost.org

BS Kern

User Prozeß

CLR AppDomain

http://myhost.org:345/MyObjhttp://myhost.org:345/MyObj

345 80

Winsock: SocketTCP:345

MyServiceMyObj StackBuilderSink

(URI:MyObj)

MyObj

HTTPChannel

L.3.2 Channel & Formatter Channel:

bidirekt. Kommunikation zw. 2 Endpunkten, TcpChannel, HttpChannel & SmtpChannel,eigene Channels mögl. à IChannel.

Formatter:definiert Wire-Format (Channel-Protokoll)

Formate: Soap über HTTP à interoperabelBinary über TCP à schnelleigene Formate möglich à IFormatterwird vom Channel dynamisch angefordert.

Serialisierung mithilfe der Metainformation im Assembly

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 18

Page 19: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

[Serializable] class Point : ISerializable { private int x,y;

public void GetObjectData(SerializationInfo info, StreamingContext ctx) { Type t = this.GetType();

info.AddValue("x",x); info.AddValue("y",y); }

public void ToFile (string file) { FileStream fs = new FileStream(file,FileMode.Create);

SoapFormatter form = new SoapFormatter(); form.Serialize(fs,this); }}

class FormatterTester { static void Main(string[] args) { Point p = new Point();

p.ToFile("test.dat"); }}

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 19

Page 20: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

L.3.3 Aktivierung von Objekten durch den ServerServer meldet Objekt im System an und Klienten verbinden sich damit.

SingleCall: für jeden Aufruf ein neues Objekt.

Singleton: ein Objekt für alle Klienten.

Server:public class ServerObject : MarshalByRefObject {

public int print(string s) {}}public class MyServer {

public static int Main(string [] args) { HttpChannel chan = new HttpChannel(999); ChannelServices.RegisterChannel(chan);

RemotingConfiguration.RegisterWellKnownServiceType( typeof(ServerObject), "myendpoint", WellKnownObjectMode.Singleton);

Console.ReadLine(); }}

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 20

Page 21: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

Klient:public class Client {

public static int Main(string [] args) { ServerObject myProxy; string EP ="http://localhost:999/myendpoint";

myProxy = (ServerObject) RemotingServices.Connect(typeof(ServerObject), EP);myProxy.print("hallo");

}}

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 21

Page 22: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

L.3.4 Aktivierung von Objekten durch den Klienten Der Server meldet die Klasse im System an.

Die Klienten können selbst Objekte erzeugen.

Klient kann die Lebensdauer der Objekte steuern.

Verbindungsorientiert (vgl. DCOM).

Server:public class MyServer {

public static int Main(string [] args) {HttpChannel chan = new HttpChannel(999);ChannelServices.RegisterChannel(chan);

RemotingConfiguration.ApplicationName = “myobj";RemotingConfiguration.RegisterActivatedServiceType( typeof( ServerObject));Console.ReadLine();

}}

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 22

Page 23: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

Klient:public class Client {

public static int Main(string [] args) { object[] attrs = new object[1];

ObjectHandle oh; ServerObject so;

Object[0] = new UrlAttribute("http://localhost:999/myobj"); oh = Activator.CreateInstance("Server","ServerObject",attrs);

if (oh!=null) { so = (ServerObject)oh.Unwrap();so.print("hallo");

}}

}

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 23

Page 24: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

L.3.5 Lease-Manager pro DomainVerwaltet die Lebenszeit der klientenaktivierten Objekte.

Objekte, deren Lebenszeit abgelaufen ist, werden der GC zugeführt.

Verlängerung durch Sponsor oder via Methodenaufruf des Klienten.

public class ServerObject : MarshalByRefObject { public int v=0;

public override Object InitializeLifetimeService() { ILease lease = (ILease)base.InitializeLifetimeService();

if (lease.CurrentState == LeaseState.Initial) { lease.InitialLeaseTime = TimeSpan.FromSeconds(10);

lease.SponsorshipTimeout = TimeSpan.FromSeconds(20);lease.RenewOnCallTime = TimeSpan.FromSeconds(20);

}return lease;

}}

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 24

Page 25: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

L.3.6 ProxyTransparent-Proxy (TP):

Klient hat Zeiger auf TP,enthält Beschreibung der Methoden und Felder,kann nicht erweitert oder ersetzt werden,bei Remoting: IMessage erzeugen und Invoke von Real-Proxy rufen.

Real-Proxy:anpaßbar z.B. für Lastverteilung.

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 25

K l i e n t

T r a n s p a r e n tP r o x y

R e a l P r o x y

S e r v e r

C h a n n e l

P r o x y I M e s s a g e S i n k

m t h A

m t h B

v a r V

I n v o k e S y n c P r o c e s s M e s s a g e

K l i e n t

T r a n s p a r e n tP r o x y

R e a l P r o x y

S e r v e r

C h a n n e l

P r o x y I M e s s a g e S i n k

m t h A

m t h B

v a r V

I n v o k e S y n c P r o c e s s M e s s a g e

Page 26: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

L.3.7 KontexteZusätzliche Dienste für Objekte durch Kontextattribute.

zwischen Kontexten ist Marshalling notwendig.

ein oder mehrere Kontexte pro AppDomain.

gruppiert zusammengehörige Objekte.

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 26

Objekt

AppDomain

Kontext 2

Objekt

Objekt

Marshaling

Kontext 1

Property Property Property

Objekt

AppDomain

Kontext 2

Objekt

Objekt

Marshaling

Kontext 1

Property Property Property

Page 27: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

kontextfreie & kontextgebundene Objekte.

kontextgebunde Obj. stets von System.ContextBoundObject abgeleitet.

Kontext-Attribute: werden untersucht beim Erzeugen des Objektes, kontrollieren die Erzeugung von Kontexten,kein oder mehrere Attribute pro Objekt.

Kontext-Property: zugreifbar über Namen: Thread.CurrentContext.GetProperty(„name“)bieten in der Regel Funktionen zum Kontrollieren der Sinks (=>),implementiert IContextProperty,passive Dienste für Typen.

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 27

Page 28: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

Sink:aktive Dienste durch Abfangen von Nachrichten,erzwingt bestimmte Politik für einen Kontext,werden dynamisch erzeugt und installiert,verschied. Schnittstellen vordefiniert.verkettet mit anderen Sinks.

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 28

Compiler

ObjRef

Channels

TP

SinkRPSinkSinkSink

prop1prop2

Formatter

Object

SinkSink

SinkSink

prop3prop4

Compiler

ObjRef

Channels

TP

SinkRPSinkSinkSink

prop1prop2

Formatter

Object

SinkSink

SinkSink

prop3prop4

Page 29: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

L.4 Web-Programmierung

L.4.1 Active Server Pages - ASPScript-Code eingebettet in HTML-Seiten wird auf dem Server ausgeführt.

Erzeugt dynamische HTML-Seiten für den Klienten.

Skriptsprachen: VBScript & Jscript.

Microsoft Web-Server notwendig.

ASPX-Dateien anstatt HTML.

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 29

Page 30: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

L.4.2 ASP.NET – Web Applikationen über ASP-SeitenWeb Applikationen:

ASPX-Dateien in Web-Server Verzeichnis,Code in separaten Dateien (*.cs, *.mod),Kompilation beim ersten Aufruf,Klient erhält nur HTML.

Web Controls:laufen auf dem Server,ersetzen HTML Input-Tags,im Code über ID zugreifbar.

Klient erzeugt Ereignis, Server verarbeitet es:

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 30

ServerWeb Client

Parse MessageEvent

Event Handler

EventMessage

Antwort

Aufruf EventHandler

ServerWeb Client

Parse MessageEvent

Event Handler

EventMessage

Antwort

Aufruf EventHandler

Page 31: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

Beispiel.aspx:<%@ Page Inherits="SeiteBerechnen" Src="Simple.cs" %><html><head><title>ASP.NET Hypotheken Rechner</title></head><body><form runat="server"><asp:Button Text="knopf" OnClick="click" RunAt="server" id="button1" /></form></body></html>

Simple.cs:public class SeiteBerechnen : Page { protected Button button1;

public void click(Object sender, EventArgs e) { … }

}

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 31

Page 32: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

L.4.3 ASP.NET – Web DienstePrimär zum Datenaustausch:

Antwortseite ist nicht unbedingt eine Web-Seite,eher ein SOAP Objekt z.B.

Web Dienste:ASMX-Dateien (*.asmx),Methoden mit Attribut „WebMethod“.plattform- u. sprachunabhängige Komponenten.

Techniken:XML: Datenaustausch als Webseite oder DatenstrukturSOAP: Methodenaufruf mit Simple Object Access ProtocolWSDL: Beschreibung eines (Web-)DienstesDISCO: Erforschen eines vorliegenden URLsUDDI: Auffinden von Diensten (Verzeichnis)

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 32

Page 33: L. fileL.1.2 .NET Framework Zielsetzung: zur Entwicklung von verteilten XML-basierten Web-Anwendungen, E-Commerce, Bankverkehr, Server- & Browsergestützte Dienste,

Beispiel.asmx:

<%@ WebService Language="C#" Class="MyService" %>using System;using System.Web.Services;

public class MyService : WebService {

[WebMethod] public int add( int a, int b) { return a+b; }}

Methoden-Aufruf über HTTP:http://localhost/MyService/Service.asmx/add?a=1&b=2

Verteilte Betriebssysteme, 2008/2009, P. Schulthess, VS, Universität Ulm L - 33