Udostępnij za pośrednictwem


Podstawowa usługa AJAX

W przykładzie SimpleAjaxService pokazano, jak za pomocą programu Windows Communication Foundation (WCF) utworzyć podstawową ASP.NET asynchroniczną usługę JavaScript i XML (AJAX) (usługę, do której można uzyskać dostęp przy użyciu kodu JavaScript z poziomu klienta przeglądarki internetowej). Usługa używa atrybutu WebGetAttribute , aby upewnić się, że usługa odpowiada na żądania HTTP GET i jest skonfigurowana do używania formatu danych JavaScript Object Notation (JSON) na potrzeby odpowiedzi.

Obsługa technologii AJAX w programie WCF jest zoptymalizowana pod kątem używania z ASP.NET AJAX za pomocą kontrolki ScriptManager . Aby zapoznać się z przykładem używania programu WCF z ASP.NET AJAX, zobacz przykłady AJAX.

Uwaga

Procedura konfiguracji i instrukcje kompilacji dla tego przykładu znajdują się na końcu tego tematu.

W poniższym kodzie WebGetAttribute atrybut jest stosowany do Add operacji w celu zapewnienia, że usługa odpowiada na żądania HTTP GET. Kod używa metody GET dla uproszczenia (można skonstruować żądanie HTTP GET z dowolnej przeglądarki internetowej). Możesz również użyć polecenia GET, aby włączyć buforowanie. Http POST jest wartością domyślną w przypadku braku atrybutu WebGetAttribute .

[ServiceContract(Namespace = "SimpleAjaxService")]
public interface ICalculator
{
    [WebGet]
    double Add(double n1, double n2);
    //Other operations omitted…
}

Przykładowy plik svc używa elementu WebScriptServiceHostFactory, który dodaje WebScriptEndpoint standardowy punkt końcowy do usługi. Punkt końcowy jest konfigurowany pod pustym adresem względem pliku svc. Oznacza to, że adres usługi to http://localhost/ServiceModelSamples/service.svc, bez dodatkowych sufiksów innych niż nazwa operacji.

<%@ServiceHost language="C#" Debug="true" Service="Microsoft.Samples.SimpleAjaxService.CalculatorService" Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" %>

Element WebScriptEndpoint jest wstępnie skonfigurowany do udostępniania usługi ze strony klienta ASP.NET AJAX. Poniższa sekcja w pliku Web.config może służyć do wprowadzania dodatkowych zmian konfiguracji w punkcie końcowym. Można go usunąć, jeśli nie są wymagane żadne dodatkowe zmiany.

<system.serviceModel>
  <standardEndpoints>
    <webScriptEndpoint>
      <!-- Use this element to configure the endpoint -->
      <standardEndpoint name=""  />
    </webScriptEndpoint>
  </standardEndpoints>
</system.serviceModel>

Ustawia WebScriptEndpoint domyślny format danych dla usługi na format JSON zamiast XML. Aby wywołać usługę, przejdź do http://localhost/ServiceModelSamples/service.svc/Add?n1=100&n2=200 strony po zakończeniu konfigurowania i kroków kompilacji przedstawionych w dalszej części tego tematu. Ta funkcja testowania jest włączona przez użycie żądania HTTP GET.

Strona sieci Web klienta, SimpleAjaxClientPage.aspx zawiera ASP.NET kod do wywołania usługi za każdym razem, gdy użytkownik kliknie jeden z przycisków operacji na stronie. Kontrolka ScriptManager służy do udostępniania serwera proxy usłudze za pośrednictwem języka JavaScript.

<asp:ScriptManager ID="ScriptManager" runat="server">
    <Services>
        <asp:ServiceReference Path="service.svc" />
    </Services>
</asp:ScriptManager>

Lokalny serwer proxy jest tworzone, a operacje są wywoływane przy użyciu następującego kodu JavaScript.

// Code for extracting arguments n1 and n2 omitted…
// Instantiate a service proxy
var proxy = new SimpleAjaxService.ICalculator();
// Code for selecting operation omitted…
proxy.Add(parseFloat(n1), parseFloat(n2), onSuccess, onFail, null);

Jeśli wywołanie usługi powiedzie się, kod wywołuje onSuccess procedurę obsługi, a wynik operacji jest wyświetlany w polu tekstowym.

function onSuccess(mathResult){
     document.getElementById("result").value = mathResult;
}