33
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

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

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[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

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

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

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

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

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

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

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

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

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

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

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

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

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

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