Serviço AJAX usando exemplo de tipos complexos
O exemplo ComplexTypeAjaxService demonstra como usar o Windows Communication Foundation (WCF) para criar um serviço ASP.NET Asynchronous JavaScript and XML (AJAX) que cria instâncias de tipos complexos e as envia entre o serviço e o cliente como JavaScript Object Notation (JSON). Você pode acessar um serviço AJAX usando o código JavaScript de um cliente de navegador da Web. Este exemplo se baseia no exemplo de serviço AJAX básico.
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.
O serviço no exemplo a seguir é um serviço WCF sem código específico do AJAX. Como o WebGetAttribute atributo não é aplicado, o verbo HTTP padrão ("POST") é usado. O serviço tem uma operação, DoMath
, que retorna um tipo complexo chamado MathResult
. O tipo complexo é um tipo de contrato de dados padrão, que também não contém nenhum código específico do AJAX.
[DataContract]
public class MathResult
{
[DataMember]
public double sum;
[DataMember]
public double difference;
[DataMember]
public double product;
[DataMember]
public double quotient;
}
Crie um ponto de extremidade AJAX no serviço usando o WebScriptServiceHostFactory, assim como no exemplo de serviço AJAX básico.
A página da Web do cliente ComplexTypeClientPage.aspx contém código ASP.NET e JavaScript para invocar o serviço quando o usuário clica no botão Executar cálculo na página. O código para invocar o serviço constrói um corpo JSON e o envia usando HTTP POST, semelhante ao exemplo de serviço AJAX usando HTTP POST .
Depois que a chamada de serviço for bem-sucedida, você poderá acessar os membros de dados individuais (sum
, difference
product
e quotient
) no objeto JavaScript resultante.
function onSuccess(mathResult){
document.getElementById("sum").value = mathResult.sum;
document.getElementById("difference").value = mathResult.difference;
document.getElementById("product").value = mathResult.product;
document.getElementById("quotient").value = mathResult.quotient;
}
Para configurar, compilar e executar o exemplo
Certifique-se de ter executado o procedimento de instalação única para os exemplos do Windows Communication Foundation.
Crie a solução ComplexTypeAjaxService.sln conforme descrito em Criando os exemplos do Windows Communication Foundation.
Navegue até
http://localhost/ServiceModelSamples/ComplexTypeClientPage.aspx
(não abra ComplexTypeClientPage.aspx no navegador a partir do diretório do projeto).