Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os serviços AJAX do Windows Communication Foundation (WCF) podem ser acessados em qualquer página da Web habilitada para JavaScript, sem a necessidade de ASP.NET AJAX. Este tópico descreve como criar um serviço WCF desse tipo.
Para obter instruções sobre como usar o WCF com ASP.NET AJAX, consulte Criando serviços WCF para ASP.NET AJAX.
Há três partes para criar um serviço AJAX do WCF:
Criando um endpoint AJAX que pode ser acessado no navegador.
Criando um contrato de serviço compatível com AJAX.
Acessando os serviços do AJAX do WCF.
Criando um endpoint AJAX
A maneira mais básica de habilitar o suporte a AJAX em um serviço WCF é usar o WebServiceHostFactory arquivo .svc associado ao serviço, como no exemplo a seguir.
<%ServiceHost
language=c#
Debug="true"
Service="Microsoft.Ajax.Samples.CityService"
Factory=System.ServiceModel.Activation.WebServiceHostFactory
%>
Como alternativa, você também pode usar a configuração para adicionar um endpoint AJAX. Use o WebHttpBinding no ponto de extremidade de serviço e configure esse ponto de extremidade com WebHttpBehavior conforme mostrado no snippet de código a seguir.
<configuration>
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="AjaxBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<services>
<service name="Microsoft.Ajax.Samples.CityService">
<endpoint
address="ajaxEndpoint"
behaviorConfiguration="AjaxBehavior"
binding="webHttpBinding"
contract="Microsoft.Ajax.Samples.ICityService" />
</service>
</services>
</system.serviceModel>
</configuration>
Para obter um exemplo funcional, consulte o Serviço AJAX com JSON e XML.
Criando um contrato de serviço AJAX-Compatible
Por padrão, os contratos de serviço expostos em um ponto de extremidade AJAX retornam dados no formato XML. Além disso, por padrão, as operações de serviço são acessíveis por meio de solicitações HTTP POST para URLs que incluem o endereço do ponto de extremidade seguido pelo nome da operação, conforme mostrado no exemplo a seguir.
[OperationContract]
string[] GetCities(string firstLetters);
Essa operação é acessível usando um HTTP POST para http://serviceaddress/endpointaddress/GetCities
e retorna uma mensagem XML.
Você pode usar o modelo de programação da Web completo para personalizar esses aspectos básicos. Por exemplo, você pode usar os WebGetAttribute atributos ou WebInvokeAttribute para controlar o verbo HTTP ao qual a operação responde ou usar a UriTemplate
propriedade desses respectivos atributos para especificar URIs personalizadas. Para obter mais informações, consulte o tópico WCF Web HTTP Programming Model .
O formato de dados JSON geralmente é usado em serviços AJAX. Para criar uma operação que retorna JSON em vez de XML, defina a ResponseFormat propriedade (ou a ResponseFormat) como Json. O tópico serialização JSON autônoma mostra como tipos integrados do .NET e tipos de contrato de dados são mapeados para JSON.
Normalmente, as solicitações e respostas JSON consistem em apenas um item. Para a operação anterior GetCities
, a solicitação se assemelha à instrução a seguir.
"na"
A resposta a essa solicitação se assemelha à instrução a seguir.
["Nairobi", "Naples", "Nashville"]
Se a operação usa um parâmetro extra, o estilo de solicitação deve ser encapsulado para encapsular ambos os parâmetros em um único objeto JSON. Um exemplo dessa mensagem JSON de estilo está no exemplo a seguir.
{"firstLetters": "na", "maxNumber": 2}
O contrato a seguir aceita essa mensagem.
[WebInvoke(BodyStyle=WebMessageBodyStyle.WrappedRequest, ResponseFormat=WebMessageFormat.Json)]
[OperationContract]
string[] GetCities(string firstLetters, int maxNumber);
Acessando os Serviços AJAX
Os pontos de extremidade AJAX do WCF sempre aceitam solicitações JSON e XML.
Solicitações HTTP POST com um tipo de conteúdo de "application/json" são tratadas como JSON e aquelas com tipo de conteúdo que indicam XML (por exemplo, "text/xml") são tratadas como XML.
As solicitações HTTP GET contêm todos os parâmetros de solicitação na própria URL.
Cabe ao usuário decidir como criar a solicitação HTTP para o endpoint. Além disso, o usuário tem controle total sobre a construção do JSON que forma o corpo da solicitação. Para obter um exemplo de criação de uma solicitação do JavaScript, consulte o Serviço AJAX com JSON e XML.