Web Remote Procedure Call (Web-RPC)
Eintrag zuletzt aktualisiert am: 08.02.2007
ASP.NET AJAX bietet neben der partiellen Seitenerzeugung ein zweites Verfahren an, bei dem einzelne elementare Daten oder auch komplexere
Datenstrukturen ohne die Layout-Information im Stil eines
Remote Procedure Call (
RPC) zum Browser übermittelt werden. Auf der Serverseite definiert der Entwickler eine .NET-
Methode mit Parametern und Rückgabewert. Der Client erhält über einen generierten
Proxy die Möglichkeit, diese
Methode wie jede andere
JavaScript-
Methode aus
JavaScript heraus aufzurufen. Die dem
Methodenaufruf zugrunde liegende Verwendung des
XmlHttpRequest-
Objekts verbirgt der
Proxy ebenso vor dem Benutzer wie die browserspezifischen Eigenarten dieses
Objekts.
Das Interessante an den Web-
RPC-Rückrufen ist, dass Microsoft auf einem Konzept aufsetzt, welches .NET sowieso schon seit Version 1.0 bietet: ASP.NET-basierte Webservices (
ASMX). Ein mit ASP.NET erzeugter
XML-Webservice tauscht normalerweise
SOAP-Nachrichten aus und stellt die
Metadaten als
WSDL-Dokument bereit. Für die AJAX Library hat Microsoft sich aber für ein Verfah-ren entschieden, das dem Browser die Last der Auswertung von XML-Dokumenten abnimmt. Wenn der Entwickler einen
XML-Webservice zusätzlich mit der
Annotation [ScriptService] ausstattet, erzeugt der Webservice durch Anhängen von "/js" an den
URL plötzlich
JavaScript-Code für einen Browser anstelle von
WSDL und serialisiert anstelle von
SOAP in Form der
JavaScript Object Notati-on (
JSON). Optional ist aber auch eine
Serialisierung in XML-Form möglich.
Einschränkungen
WCF-Dienste können in der
ASP.NET AJAX Version 1.0 noch nicht verwendet werden. Dies will Microsoft aber in der nächsten Version von
ASP.NET AJAX ergänzen. Zu beachten ist ferner, dass man immer nur Webservices auf dem gleichen
Webserver aufrufen kann, auf dem auch die Webseite liegt. Dies ist eine Sicherheitsfunktion des
XmlHttpRequest-
Objekts. Zum Aufruf von Webservices auf anderen
Webservern (z.B. für Mash-Ups) muss der Webentwickler einen lokalen
Wrapper erstel-len. In der zukünftigen
ASP.NET AJAX Version 2.0 will Microsoft dies durch deklarierbare Webser-vices-Bridges vereinfachen.