Partilhar via


Criando serviços WCF para ASP.NET AJAX

O Microsoft ASP.NET AJAX permite que você crie rapidamente páginas da Web que incluem uma experiência de usuário rica com elementos de interface do usuário responsivos e familiares. ASP.NET AJAX fornece bibliotecas de script de cliente que incorporam tecnologias ECMAScript (JavaScript) e HTML dinâmico (DHTML) entre navegadores e as integra com a plataforma de desenvolvimento baseada em servidor ASP.NET 2.0. Usando ASP.NET AJAX, você pode melhorar a experiência do usuário e a eficiência de seus aplicativos Web.

ASP.NET AJAX consiste em bibliotecas de script de cliente e em componentes de servidor que são integrados para fornecer uma estrutura de desenvolvimento robusta. Para acessar um serviço a partir de uma página ASP.NET: uma vez que a URL do serviço é adicionada ao controle ASP.NET Script Manager na página, as operações de serviço podem ser invocadas usando código JavaScript que se parece exatamente com uma chamada de função JavaScript normal.

A maioria dos serviços do Windows Communication Foundation (WCF) pode ser exposta como um serviço compatível com ASP.NET AJAX adicionando um ponto de extremidade AJAX ASP.NET apropriado.

Se você estiver usando o Visual Studio, poderá usar um modelo pré-criado para serviços WCF habilitados para AJAX, disponível na caixa de diálogo Adicionar Novo Item ao trabalhar com ASP.NET Sites ou Aplicativos Web.

Se você não estiver usando os modelos do Visual Studio, há duas maneiras de criar um ponto de extremidade AJAX ASP.NET:

O modelo de programação da Web descrito na visão geral do modelo de programação HTTP da Web do WCF pode ser usado com ASP.NET serviços AJAX. Especificamente:

  • Você pode usar os atributos e WebInvokeAttribute para selecionar entre verbos WebGetAttribute HTTP GET e HTTP POST. Se usado corretamente, isso pode melhorar significativamente o desempenho do seu aplicativo. Para obter mais informações, consulte Como escolher entre solicitações HTTP POST e HTTP GET para ASP.NET pontos de extremidade AJAX.

  • Você pode usar as ResponseFormat propriedades e ResponseFormat para fazer com que seu serviço retorne dados XML em vez da notação de objeto JavaScript (JSON) padrão. Fazer isso com a estrutura AJAX ASP.NET faz com que o cliente JavaScript receba um objeto DOM XML.

    Aviso

    Sua operação deve definir o tipo de conteúdo como text/xml para que isso funcione. Caso contrário, o cliente JavaScript receberá uma cadeia de caracteres contendo o XML em vez de um objeto DOM XML.

    A seguir está um exemplo de uma operação que retorna dados XML com o tipo de conteúdo definido adequadamente:

    [OperationContract, WebGet(ResponseFormat=WebMessageFormat.Xml)]
    public XElement GetData()
    {
        XElement x;
        //Get some data here...
    
        WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml";
        return x;
    }
    
  • Nenhuma outra propriedade nos atributos e WebInvokeAttribute pode ser alterada se a WebGetAttribute compatibilidade com ASP.NET AJAX for necessária. Outros aspetos do Modelo de Programação Web podem ser usados, desde que as convenções de chamada AJAX ASP.NET não sejam violadas.

Cenários mais avançados exigem que alguns detalhes adicionais do suporte AJAX no WCF sejam compreendidos:

  • Para entender como os dados são transferidos entre um cliente de página AJAX e um serviço WCF usando JavaScript, e para obter detalhes sobre como os tipos do .NET Framework são mapeados para tipos JavaScript, consulte Suporte para JSON e outros formatos de transferência de dados.

  • Para tirar proveito de ASP.NET recursos, por exemplo, autenticação baseada em URL e acesso às informações da sessão ASP.NET, convém habilitar o Modo de Compatibilidade ASP.NET por meio da configuração.

Os pontos de extremidade AJAX no WCF podem até ser consumidos sem a estrutura AJAX ASP.NET. Fazer isso requer uma compreensão da arquitetura de suporte do suporte AJAX no WCF. Para obter uma discussão sobre essa arquitetura, consulte WCF Web HTTP Programming Object Model. Para obter um exemplo de código demonstrando essa abordagem, consulte o Serviço AJAX com JSON e XML.

Consulte também