l. filel.1.2 .net framework zielsetzung: zur entwicklung von verteilten xml-basierten...
Post on 03-Sep-2019
3 Views
Preview:
TRANSCRIPT
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
top related