Qual é a diferença entre referência da web e referência de serviço no WCF? Qual é preferível no WCF?
Qual é a diferença entre referência da web e referência de serviço no WCF? Qual é preferível no WCF?
Respostas:
A resposta de baixo nível aqui é que uma Referência da Web criará uma classe de proxy do cliente que permitirá que seu código fale com um Serviço da Web descrito via WSDL e se comunique via SOAP ou HTTP GET (outros pôsteres indicam que é apenas ASMX, mas As referências da Web também podem conversar com Web Services baseados em Java, Python ou Ruby, desde que todos falem WSDL e estejam em conformidade com o padrão de interoperabilidade WS-I).
Uma Referência de Serviço criará uma classe de proxy do cliente que se comunica com um serviço baseado no WCF: independentemente de esse serviço WCF ser um Serviço da Web ou não.
Uma Referência da Web permite a comunicação com qualquer serviço com base em qualquer tecnologia que implemente o Perfil Básico WS-I 1.1 e expõe os metadados relevantes como WSDL. Internamente, ele usa a pilha de comunicação ASMX no lado do cliente.
Uma Referência de Serviço permite que você se comunique com qualquer serviço baseado em qualquer tecnologia que implemente qualquer um dos muitos protocolos suportados pelo WCF (incluindo, entre outros, o Perfil Básico WS-I). Internamente, ele usa a pilha de comunicação WCF no lado do cliente.
Observe que essas duas definições são bastante amplas e incluem serviços não escritos no .NET.
É perfeitamente possível (embora não recomendado) adicionar uma Referência da Web que aponte para um serviço WCF, desde que o ponto de extremidade do WCF use basicHttpBinding
ou alguma variante personalizada compatível.
Também é possível adicionar uma Referência de Serviço que aponte para um serviço ASMX. Ao escrever um novo código, você sempre deve usar uma Referência de Serviço simplesmente porque é mais flexível e à prova de futuro.
Client
sufixo.
A referência de serviço é a interface mais nova para adicionar referências a todos os tipos de serviços WCF (eles podem não ser serviços da web), enquanto a referência da Web se preocupa especificamente com as referências da Web ASMX.
Você pode acessar referências da web através das opções avançadas em adicionar referência de serviço (se bem me lembro).
Eu usaria referência de serviço porque, como eu o entendo, é o mecanismo mais novo dos dois.
As referências de serviço lidam com terminais e ligações, que são completamente configuráveis. Eles permitem que você aponte seu proxy de cliente para um WCF por meio de qualquer protocolo de transporte (HTTP, TCP, Memória Compartilhada, etc.)
Eles são projetados para trabalhar com o WCF.
Se você usa um WebProxy, está praticamente vinculando-se ao uso do WCF sobre HTTP
Outro ponto a ser levado em consideração é que a nova interface do usuário para Service Interface proporcionará muito mais flexibilidade sobre como você deseja criar sua classe de proxy. Por exemplo, ele permitirá que você mapeie contratos de dados para dlls existentes, se eles corresponderem (na verdade, esse é o comportamento padrão).