Compartilhar via


Serviço AJAX básico

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

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

Observação

Os procedimentos de instalação e as instruções de compilação para esse exemplo estão localizadas no final deste tópico.

No código a seguir, o atributo WebGetAttribute é aplicado à operação Add para garantir que o serviço responda às solicitações HTTP GET. O código usa GET para simplificar (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 atributo WebGetAttribute.

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

O arquivo .svc de exemplo usa WebScriptServiceHostFactory, o que adiciona um ponto de extremidade padrão WebScriptEndpoint ao serviço. O ponto de extremidade é configurado em um endereço vazio em relação ao arquivo .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 está pré-configurado para tornar o serviço acessível de uma página de cliente ASP.NET AJAX. A seção a seguir no Web.config pode ser usada para fazer alterações de configuração adicionais no ponto de extremidade. Ela poderá ser removida se nenhuma alteração adicional for necessária.

<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 do 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 depois de concluir as etapas de configuração e compilação mostradas posteriormente neste tópico. Essa funcionalidade de teste é habilitada pelo uso de uma solicitação HTTP GET.

A página da Web do cliente SimpleAjaxClientPage.aspx contém código ASP.NET para invocar o serviço sempre que o usuário clicar em um dos botões de operação na página. O controle ScriptManager é usado para tornar um proxy para o serviço acessível por meio do 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 código JavaScript a seguir.

// 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 manipulador onSuccess, e o resultado da operação será exibido em uma caixa de texto.

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