Partilhar via


Interoperabilidade com ASP.NET Web Services

A interoperabilidade entre os serviços Web ASP.NET e os serviços Web do Windows Communication Foundation (WCF) pode ser alcançada garantindo que os serviços implementados usando ambas as tecnologias estejam em conformidade com a especificação WS-I Basic Profile 1.1. ASP.NET serviços Web que estão em conformidade com o WS-I Basic Profile 1.1 são interoperáveis com clientes WCF usando a ligação fornecida pelo sistema WCF, BasicHttpBinding.

Use ASP.NET opção 2.0 para adicionar os WebService atributos e WebMethodAttribute a uma interface em vez de uma classe e escrever uma classe para implementar a interface, conforme mostrado no código de exemplo a seguir.

[WebService]  
public interface IEcho  
{  
    [WebMethod]  
    string Echo(string input);  
}  
  
public class Service : IEcho  
{  
  
   public string Echo(string input)  
   {  
        return input;  
    }  
}  

O uso dessa opção é preferível, porque a interface com o WebService atributo constitui um contrato para as operações executadas pelo serviço que pode ser reutilizado com várias classes que podem implementar esse mesmo contrato de maneiras diferentes.

Evite usar o SoapDocumentServiceAttribute atributo para que as mensagens sejam roteadas para métodos baseados no nome totalmente qualificado do elemento body da mensagem SOAP em vez do SOAPAction cabeçalho HTTP. WCF usa o SOAPAction cabeçalho HTTP para rotear mensagens.

O XML no qual serializa um tipo por padrão é semanticamente idêntico ao XML no qual o DataContractSerializer serializa um tipo, desde que XmlSerializer o namespace para o XML seja explicitamente definido. Ao definir um tipo de dados para uso com o ASP. Serviços NETWeb em antecipação à adoção do WCF, faça o seguinte:

  • Defina o tipo usando classes do .NET Framework em vez do esquema XML.

  • Adicione apenas o SerializableAttribute e o XmlRootAttribute à classe, usando o último para definir explicitamente o namespace para o tipo. Não adicione atributos adicionais do System.Xml.Serialization namespace para controlar como a classe .NET Framework deve ser convertida em XML.

  • Ao adotar essa abordagem, você deve ser capaz de posteriormente transformar as classes .NET em contratos de dados com a adição do DataContractAttribute e DataMemberAttribute sem alterar significativamente o XML no qual as classes são serializadas para transmissão. Os tipos utilizados em mensagens por ASP.NET Web Services podem ser processados como contratos de dados por aplicativos WCF, gerando, entre outros benefícios, melhor desempenho em aplicativos WCF.

Evite usar as opções de autenticação fornecidas pelo IIS (Serviços de Informações da Internet). Os clientes WCF não os suportam. Se um serviço deve ser protegido, use as opções fornecidas pelo WCF, porque essas opções são robustas e são baseadas em protocolos padrão.

Impacto no desempenho causado pelo carregamento do ServiceModel HttpModule

No .NET Framework 3.0, o WCF HttpModule foi instalado no arquivo Web.config raiz de modo que cada aplicativo ASP.NET foi habilitado para WCF. Isso pode afetar o desempenho, portanto, você pode remover ServiceModel para o arquivo Web.config, conforme mostrado no exemplo a seguir.

<httpModules>  
    <remove name="ServiceModel" />  
</httpModules>

Consulte também