Compartilhar via


Criando serviços WCF para ASP.NET AJAX

O Microsoft ASP.NET AJAX permite criar rapidamente páginas da Web que incluem uma experiência avançada do usuário 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âmicos (DHTML) e as integra à 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 componentes de servidor integrados para fornecer uma estrutura de desenvolvimento robusta. Para acessar um serviço de uma página ASP.NET: depois 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 regular.

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

Se você estiver usando o Visual Studio, poderá usar um modelo predefinido para serviços WCF habilitados para AJAX, disponíveis na caixa de diálogo Adicionar Novo Item ao trabalhar com sites ASP.NET ou aplicativos Web.

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

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 WebGetAttribute atributos e WebInvokeAttribute para selecionar entre verbos HTTP GET e HTTP POST. Se usado corretamente, isso pode melhorar significativamente o desempenho do aplicativo. Para obter mais informações, consulte Como escolher entre solicitações HTTP POST e HTTP GET para pontos de extremidade do ASP.NET AJAX.

  • Você pode usar as propriedades ResponseFormat 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 ASP.NET AJAX faz com que o cliente JavaScript receba um objeto DOM XML.

    Aviso

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

    Veja a seguir 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 dos atributos WebGetAttribute e WebInvokeAttribute poderá ser alterada se a compatibilidade com ASP.NET AJAX for necessária. Outros aspectos do Modelo de Programação da Web podem ser usados desde que as convenções de chamada AJAX ASP.NET não sejam violadas.

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

  • 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 aproveitar os recursos do ASP.NET, como a autenticação baseada em URL e o acesso às informações de sessão do ASP.NET, convém habilitar o modo de compatibilidade ASP.NET por meio de configuração.

Os endpoints AJAX no WCF podem até ser consumidos sem o framework AJAX do ASP.NET. Para isso, é necessário compreender a arquitetura de suporte ao AJAX no WCF. Para obter uma discussão sobre essa arquitetura, consulte o modelo de objeto de programação HTTP da Web do WCF. Para obter um exemplo de código que demonstra essa abordagem, consulte o Serviço AJAX com JSON e XML.

Consulte também