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 o 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.
Nota
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 arquivo .svc de exemplo usa WebScriptServiceHostFactory, que adiciona um ponto de WebScriptEndpoint extremidade padrão ao serviço. O ponto de extremidade é configurado em um endereço vazio relativo 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 é pré-configurado para tornar o serviço acessível a partir de uma página de cliente AJAX ASP.NET. A seção a seguir em Web.config pode ser usada para fazer alterações de configuração adicionais no ponto de extremidade. 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é depois http://localhost/ServiceModelSamples/service.svc/Add?n1=100&n2=200
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 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;
}