Exemplo de serviço de AJAX utilizando tipos complexos
O exemplo ComplexTypeAjaxService demonstra como usar o WCF (Windows Communication Foundation) para criar um serviço Asynchronous JavaScript And XML (AJAX) de ASP.NET que cria instâncias de tipos complexos e as envia entre o serviço e o cliente como JSON (JavaScript Object Notation). Você pode acessar um serviço AJAX usando o código JavaScript de um cliente do navegador da Web. Este exemplo se baseia no exemplo Serviço AJAX básico.
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
O procedimento de instalação e as instruções de compilação dessa amostra estão no final deste tópico.
O serviço no exemplo a seguir é um serviço WCF sem código específico de AJAX. Como o atributo WebGetAttribute 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 de 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 de AJAX no serviço usando WebScriptServiceHostFactory, como no exemplo Serviço AJAX básico.
A página da Web do cliente ComplexTypeClientPage.aspx contém ASP.NET e código JavaScript para invocar o serviço quando o usuário clicar 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 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
Verifique se você executou os exemplos de procedimento de instalação única para o Windows Communication Foundation.
Crie a solução ComplexTypeAjaxService.sln conforme descrito em Compilando os exemplos do Windows Communication Foundation .
Navegue até
http://localhost/ServiceModelSamples/ComplexTypeClientPage.aspx
(não abra ComplexTypeClientPage.aspx no navegador de dentro do diretório do projeto).