Partilhar via


Serviço AJAX básico

O exemplo SimpleAjaxService demonstra como usar o Windows Communication Foundation (WCF) para criar um serviço básico ASP.NET Asynchronous JavaScript and XML (AJAX) (um serviço que você pode acessar usando código JavaScript de um cliente de navegador da Web). O serviço usa o WebGetAttribute atributo para garantir que o serviço responda às solicitações HTTP GET e está configurado para usar o formato de dados JSON (JavaScript Object Notation) para respostas.

O suporte a AJAX no WCF é otimizado para uso com ASP.NET AJAX através do ScriptManager controle. Para obter um exemplo de como usar o WCF com ASP.NET AJAX, consulte os exemplos de AJAX.

Observação

O procedimento de configuração e as instruções de compilação para este exemplo estão localizados no final deste tópico.

No código a seguir, o WebGetAttribute atributo é aplicado à Add operação para garantir que o serviço responda às solicitações HTTP GET. O código usa GET para simplicidade (você pode construir uma solicitação HTTP GET de qualquer navegador da Web). Você também pode usar GET para habilitar o cache. HTTP POST é o padrão na ausência do WebGetAttribute atributo.

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

O ficheiro .svc de amostra usa WebScriptServiceHostFactory, que adiciona uma extremidade padrão ao serviço. O endpoint está configurado num endereço vazio, relativo ao ficheiro .svc. Isso significa que o endereço do serviço é http://localhost/ServiceModelSamples/service.svc, sem sufixos adicionais além do nome da operação.

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

O WebScriptEndpoint é pré-configurado para tornar o serviço acessível a partir de uma página de cliente AJAX ASP.NET. A seção subsequente em Web.config pode ser usada para fazer alterações de configuração adicionais no endpoint. Pode ser removido se não forem necessárias alterações adicionais.

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

O WebScriptEndpoint define o formato de dados padrão para o serviço como JSON em vez de XML. Para invocar o serviço, navegue até http://localhost/ServiceModelSamples/service.svc/Add?n1=100&n2=200 após concluir as etapas de configuração e compilação mostradas posteriormente nesta seção. Essa funcionalidade de teste é habilitada pelo uso de uma solicitação HTTP GET.

A página da Web do cliente SimpleAjaxClientPage.aspx contém ASP.NET código para invocar o serviço sempre que o usuário clica em um dos botões de operação na página. O ScriptManager controle é usado para tornar um proxy para o serviço acessível através de JavaScript.

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

O proxy local é instanciado e as operações são invocadas usando o seguinte código 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);

Se a chamada de serviço for bem-sucedida, o código invocará o onSuccess manipulador e o resultado da operação será exibido em uma caixa de texto.

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