Como: adicionar um ponto de extremidade de ASP.NET AJAX sem utilizar a configuração

O WCF (Windows Communication Foundation) permite que você crie um serviço que exponha um ponto de extremidade habilitado para ASP.NET AJAX que pode ser chamado do JavaScript em um site cliente. Para criar esse ponto de extremidade, você pode usar um arquivo de configuração, como em todos os outros pontos de extremidade do WCF, ou usar um método que não exija nenhum elemento de configuração. Este tópico demonstra a segunda abordagem.

Para criar serviços com pontos de extremidade ASP.NET AJAX sem configuração, os serviços devem ser hospedados pelo Internet Information Services (IIS). Para ativar um ponto de extremidade ASP.NET AJAX usando essa abordagem, especifique o WebScriptServiceHostFactory como o parâmetro Factory na diretiva @ServiceHost no arquivo .svc. Essa fábrica personalizada é o componente que configura automaticamente um ponto de extremidade ASP.NET AJAX para que possa ser chamado de JavaScript em um site cliente.

Para obter um exemplo funcional, consulte o Serviço AJAX sem configuração.

Para obter uma descrição de como configurar um ponto de extremidade ASP.NET AJAX usando elementos de configuração, consulte Como: usar a configuração para adicionar um ponto de extremidade ASP.NET AJAX.

Para criar um serviço WCF básico

  1. Defina um contrato de serviço WCF básico com uma interface marcada com o atributo ServiceContractAttribute. Marque cada operação com o OperationContractAttribute. Certifique-se de definir a propriedade Namespace.

    [ServiceContract(Namespace = "MyService")]]  
    public interface ICalculator  
    {  
        [OperationContract]  
        // This operation returns the sum of d1 and d2.  
        double Add(double n1, double n2);  
    
        //Other operations omitted…  
    
    }  
    
  2. Implemente o contrato de serviço ICalculator com um CalculatorService.

    public class CalculatorService : ICalculator  
    {  
        public double Add(double n1, double n2)  
        {  
            return n1 + n2;  
        }  
    
    //Other operations omitted…  
    
  3. Defina um namespace para as implementações ICalculator e CalculatorService, encapsulando-as em um bloco de namespace.

    Namespace Microsoft.Ajax.Samples  
    {  
        //Include the code for ICalculator and Calculator here.  
    }  
    

Para hospedar o serviço nos Serviços de Informações da Internet sem configuração

  1. Crie um novo arquivo chamado serviço com uma extensão .svc no aplicativo. Edite esse arquivo adicionando as informações de diretiva de @ServiceHost apropriadas ao serviço. Especifique que WebScriptServiceHostFactory deve ser usada na diretiva @ServiceHost para configurar automaticamente um ponto de extremidade ASP.NET AJAX.

    <%@ServiceHost
        language=c#
        Debug="true"
        Service="Microsoft.Ajax.Samples.CalculatorService"  
        Factory=System.ServiceModel.Activation.WebScriptServiceHostFactory  
    %>  
    
  2. Crie o serviço e chame-o do cliente. O Internet Information Services (IIS) ativa o serviço quando chamado. Para obter mais informações sobre hospedagem no IIS, consulte Como hospedar um serviço WCF no IIS.

Para chamar o serviço

  1. O ponto de extremidade está configurado em um endereço vazio em relação ao arquivo .svc; portanto, o serviço agora está disponível e pode ser invocado enviando solicitações para service.svc/<operation> – por exemplo, service.svc/Add para a operação Add. Você pode usá-lo inserindo a URL do serviço na coleção Scripts do controle ASP.NET AJAX Script Manager. Para obter um exemplo, consulte o Serviço AJAX sem configuração.

Exemplo

O ponto de extremidade configurado automaticamente é criado em um endereço vazio em relação à URL base. Um arquivo de configuração também pode ser adicionado e usado com essa abordagem. Se o arquivo de configuração contiver definições de terminal, esses terminais serão incluídos no terminal configurado automaticamente.

Por exemplo, service.svc usa o WebScriptServiceHostFactory e o diretório de serviço contém um arquivo Web.config que define um ponto de extremidade para o mesmo serviço usando o BasicHttpBinding no endereço relativo "soap". Nesse caso, o serviço contém dois terminais: um em service.svc (que responde a solicitações ASP.NET AJAX) e outro em service.svc/soap (que responde a solicitações SOAP).

Se o arquivo de configuração definir um terminal em um endereço relativo vazio e o WebScriptServiceHostFactory for usado, uma exceção será lançada e o serviço falhará ao iniciar.

Você não pode usar a configuração para modificar as configurações no endpoint configurado automaticamente. Se alguma configuração (como uma cota de leitor) precisar ser modificada, você não deve usar a abordagem sem configuração removendo o WebScriptServiceHostFactory do arquivo .svc e criando uma entrada de configuração para o terminal.

Se o seu serviço requer o Modo de Compatibilidade ASP.NET - por exemplo, se ele usa a classe HttpContext ou mecanismos de autorização ASP.NET - um arquivo de configuração ainda é necessário para ativar esse modo. O elemento de configuração necessário é o elemento <serviceHostingEnvironment>, que deve ser adicionado da seguinte maneira.

<system.serviceModel>

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> </system.serviceModel>

Para obter mais informações, consulte o tópico Serviços WCF e ASP.NET.

A classe WebScriptServiceHostFactory é uma classe derivada de ServiceHostFactory. Para obter uma explicação detalhada do mecanismo de fábrica de host de serviço, consulte o tópico Estendendo a hospedagem usando ServiceHostFactory.

Confira também