Serviços Web – WCF vs.ASMX (“Padrão”)
-
08-06-2019 - |
Pergunta
Estou trabalhando em um novo projeto.Existe algum benefício em optar por um serviço da Web WCF em vez de um serviço da Web antigo e regular?
O Visual Studio oferece modelos para ambos.Quais são as diferenças?Prós e contras?
Solução
O que é um "serviço da web antiquado regular?" Um serviço ASMX, ou você também está usando o WSE?Os serviços ASMX não são naturalmente interoperáveis, não suportam especificações WS-* e ASMX é uma tecnologia que está envelhecendo muito rapidamente.Os serviços WSE (Web Service Enhancements) adicionam suporte para WS-* e podem ser interoperáveis, mas o WCF foi criado para substituir o WSE, portanto, você deve reservar um tempo para aprendê-lo.Eu diria que, a menos que seu aplicativo seja rápido e sujo, você ganhará imensa flexibilidade e acabará com um design melhor se escolher o WCF.WCF faz têm uma curva de aprendizado além de um atributo [WebMethod], mas a curva de aprendizado é exagerada na minha opinião e é exponencialmente mais poderosa e preparada para o futuro do que os serviços ASMX legados.
A menos que sua linha do tempo simplesmente não possa tolerar a curva de aprendizado, você estaria fazendo um grande favor a si mesmo aprendendo o WCF em vez de apenas ficar com os serviços da Web do ASP.NET.Os aplicativos continuarão a se tornar cada vez mais distribuídos e interconectados, e o WCF é o futuro da computação distribuída na plataforma Microsoft.
Aqui está uma comparação entre os dois.
Outras dicas
As vantagens de fazer tudo sozinho são:
- Sem curva de aprendizado
- Muito flexível
Os prós do WCF são:
- Custa menos tempo no longo prazo
- Alternar protocolos sem programação
Uma desvantagem do WCF:alguns nomes de propriedades estáticas pode ser bem demorado...
Para resumir:O WCF permite que você se concentre na programação, mas você precisa aprender primeiro ;-)
Pró para WCF:Você não precisa de um servidor web (ou seja,ISS).Na verdade, você não precisa de um sistema operacional de servidor.
Gosto do fato de escrever serviços WCF facilitar a separação do serviço da implementação.Você pode escrever seu serviço e hospedá-lo no IIS, em um aplicativo de console ou em um serviço do Windows;você também pode conversar com ele via HTTP, net TCP, etc.
Testes unitários na implementação e interação de seus serviços são mais fáceis de fazer!
Se o seu projeto está usando o framework 4.0, por que não tentar o WebApi, que é fácil de entender e usa a convenção sobre a configuração.
É uma ótima maneira de construir aplicativos com interfaces super rápidas
Veja os vídeos de introdução do MS. Ele evoluiu dos serviços de dados do WCF.
http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api
Em minha experiência
WCF
É absurdamente detalhado trabalhar com ele, não é totalmente compatível com outros produtos da Microsoft e, claro, não é amplamente aceito fora do mundo da Microsoft.
Mas meu principal problema é que ele não é estável, tende a falhar (em algumas situações) e é necessário ajustá-lo antes de poder ser usado.
Em vez de
SOAP (também conhecido como Webservice padrão), funciona, é fácil de trabalhar e é amplamente compatível (Java-JAX aceita sem nenhuma modificação).
Adicionar autenticação em SOAP pode ser um pouco complicado, mas não impossível.