ASP.NET ermöglicht die schnelle und einfache Implementierung von WebMethoden.
Dies sind Methoden (eigentlich Funktionen), welche über eine URL aufgerufen
werden können und Daten, oft in Form eines XML Textdokuments zurückliefern.
Ein normaler WebServer liefert HTML Daten zurück und erwartet URLs
als Beschreibung, welche Datei verwendet werden soll. Damit ist der
WebServer im Prinzip eine WebMethode.
(Methode ist dahingehend nicht ganz korrekt, da die WebMethode in den meisten
fällen zustandslos ist, die Methode kann den Client nicht über
ein Cookie erkennen, da der Aufruf meist nicht interaktiv über
einen Browser, sondern durch ein anderes Programm erfolgt. Und eine zustandslose
Methode ist eine Funktion.)
|
|
Einer WebMethod Implementierung geht immer eine Deklaration voraus,
welche diese Methode über den Webserver verfügbar macht. Damit
ermöglicht ASP.NET das automatische Deployment des Webdienstes.
Beispiel für eine einfache WebMethod:
[WebMethod (EnableSession=true,Description="<br><pre>Text</pre>")
]
public string GetString( ) {
return "test string";
}
Mögliche Angaben für das Deployment sind:
-
Description
Ein html Text, welcher in der WSDL oder HTML Übersichtsdatei angezeigt
wird. Dies ist sehr nützlich um dadurch eine Selbstbeschreibung des
Funktionsaufrufs zu generieren.
-
MessageName
Die Methode erhält im Web einen anderen Namen als im Sourcecode. Wenn
dies nicht angegeben wird, so wird der Name im SourcCode verwendet.
-
EnableSession
Damit wird das Session Objekt erzeugt. Dies Funktioniert jedoch nur,
wenn der Aufrufer Cookies unterstützt, also nur bei Browsern, nicht
bei Anwendungen die den Webservice benutzen. (Sessions stehen also normalerweise
nicht zur Verfügung !)
-
CacheDuration=seconds
Die Rückgabe der Webmethode bleibt im Cache. Weitere Anfragen
innerhalb dieser Zeit erhalten die Daten aus dem Cache, die Methode wird
dann also gar nicht aufgerufen sondern der WebServer schickt die Daten
aus dem Cache..
+ wenn Daten sich nicht ändern ist dies sehr sinnvoll
- große Datenmengen benötigen Speicherplatz auf dem Server
-
TransactionOption
Damit sollten Transaktionen über WebMethod möglich sein. (Wurde
von mir noch nicht getestet).
-
BufferResponse
Normalerweise werden die Daten über einen Buffer zum Client geschickt,
was die Ausführung deutlich beschleunigt. Werden sehr große
Datenmengen generiert, so sollte der Buffer ausgeschalten werden.
|