Erstellen von WCF-Diensten für ASP.NET AJAX

Microsoft ASP.NET AJAX ermöglicht es Ihnen, zügig Webseiten zu erstellen, die mit reaktionsschnellen und vertrauten Benutzeroberflächenelementen eine hohe Benutzerfreundlichkeit bieten. ASP.NET AJAX bietet Bibliotheken mit Clientskripts, in denen browserübergreifende ECMAScript (JavaScript)- und Dynamic HTML (DHTML)-Technologien integriert sind. Außerdem sind diese Funktionen in die serverbasierte ASP.NET 2.0-Entwicklungsplattform integriert. Durch die Verwendung von ASP.NET AJAX können Sie die Benutzerfreundlichkeit und die Effizienz Ihrer Webanwendungen verbessern.

ASP.NET AJAX besteht aus Clientskriptbibliotheken und Serverkomponenten, die zu einem robusten Entwicklungsframework integriert sind. So greifen Sie über eine ASP.NET-Seite auf einen Dienst zu: Sobald die Dienst-URL des ASP.NET Script Manager-Steuerelements auf der Seite hinzugefügt wurde, können Dienstvorgänge anhand von JavaScript-Code aufgerufen werden. Dieser Code gleicht einem normalen JavaScript-Funktionsaufruf.

Die meisten Windows Communication Foundation-Dienste (WCF) können als Dienst verfügbar gemacht werden, der mit ASP.NET AJAX kompatibel ist, indem ein entsprechender ASP.NET AJAX-Endpunkt hinzugefügt wird.

Wenn Sie Visual Studio verwenden, können Sie eine vordefinierte Vorlage für AJAX-fähige WCF-Dienste verwenden, die im Dialogfeld Neues Element hinzufügen verfügbar ist, wenn Sie mit ASP.NET-Websites oder -Webanwendungen arbeiten.

Wenn Sie die Visual Studio-Vorlagen nicht verwenden, gibt es zwei Möglichkeiten, einen ASP.NET AJAX-Endpunkt zu erstellen:

Das im Überblick über WCF-Web-HTTP-Programmiermodelle beschriebene Webprogrammiermodell kann mit ASP.NET AJAX-Diensten verwendet werden. Dies gilt insbesondere in folgenden Fällen:

  • Sie können das WebGetAttribute-Attribut und das WebInvokeAttribute-Attribut verwenden, um zwischen HTTP GET und HTTP POST-Verben auszuwählen. Wenn sie richtig verwendet werden, kann die Leistung Ihrer Anwendung bedeutend verbessert werden. Weitere Informationen finden Sie unter Vorgehensweise: Auswählen zwischen HTTP POST- und HTTP GET-Anforderungen für ASP.NET AJAX-Endpunkte.

  • Sie können die ResponseFormat-Eigenschaft und die ResponseFormat-Eigenschaft verwenden, damit Ihr Dienst XML-Daten anstelle der standardmäßigen JavaScript Object Notation (JSON) zurückgibt. Wenn dies für das ASP.NET AJAX-Framework ausgeführt wird, empfängt der JavaScript-Client ein XML DOM-Objekt.

    Warnung

    Der Vorgang muss dafür den Inhaltstyp auf Text/XML festlegen. Andernfalls empfängt der JavaScript-Client eine Zeichenfolge mit dem XML-Objekt statt eines XML DOM-Objekts.

    Das folgende Beispiel zeigt einen Vorgang, der XML-Daten zurückgibt, für die der Inhaltstyp richtig festgelegt wurde:

    [OperationContract, WebGet(ResponseFormat=WebMessageFormat.Xml)]
    public XElement GetData()
    {
        XElement x;
        //Get some data here...
    
        WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml";
        return x;
    }
    
  • Es können keine weiteren Eigenschaften für das WebGetAttribute-Attribut und das WebInvokeAttribute-Attribut geändert werden, wenn die Kompatibilität mit ASP.NET AJAX erforderlich ist. Weitere Aspekte des Webprogrammiermodells können verwendet werden, sofern die ASP.NET AJAX-Aufrufkonventionen nicht verletzt werden.

Erweiterte Szenarios erfordern zusätzliche Informationen über die AJAX-Unterstützung in WCF, um verständlich zu sein:

  • Weitere Informationen darüber, wie Daten zwischen einem AJAX-Seitenclient und einem WCF-Dienst mithilfe von JavaScript übermittelt und wie .NET Framework-Typen den JavaScript-Typen zugeordnet werden, finden Sie unter Unterstützung für JSON und andere Datenübertragungsformate.

  • Um ASP.NET-Funktionen nutzen zu können, beispielsweise die URL-basierte Authentifizierung und den Zugriff auf ASP.NET-Sitzungsinformationen, empfiehlt es sich, den ASP.NET-Kompatibilitätsmodus durch Konfiguration zu aktivieren.

AJAX-Endpunkte in WCF können sogar ohne das ASP.NET AJAX-Framework verwendet werden. Dazu ist die Kenntnis der Unterstützungsarchitektur der AJAX-Unterstützung in WCF erforderlich. Eine Erläuterung dieser Architektur finden Sie unter Objektmodell für WCF-Web-HTTP-Programmierung. Ein Codebeispiel, in dem dieser Ansatz veranschaulicht wird, finden Sie unter AJAX-Dienst mit JSON und XML.

Siehe auch