Passei alguns meses tentando entender os conceitos por trás do WCF e recentemente desenvolvi meu primeiro aplicativo de serviço WCF.
Eu lutei bastante para entender todas as configurações no arquivo de configuração.
Não estou convencido sobre o meio ambiente, mas parece que você pode fazer coisas incríveis com ele.
Outro dia, descobri que a Microsoft lançou uma coisa nova chamada ASP.NET Web API .
Pelo que posso ler, é uma estrutura RESTful , muito fácil de usar e implementar.
Agora, estou tentando descobrir quais são as principais diferenças entre as duas estruturas e se devo tentar converter meu aplicativo de serviço WCF antigo com a nova API.
Alguém poderia me ajudar a entender as diferenças e o uso de cada um?
c#
wcf
asp.net-web-api
LeftyX
fonte
fonte
Respostas:
A nova API da Web do ASP.NET é uma continuação do projeto anterior da API da Web do WCF (embora alguns dos conceitos tenham sido alterados ).
O WCF foi criado originalmente para habilitar serviços baseados em SOAP. Para serviços RESTful ou RPCish mais simples (pense em clientes como jQuery), a API da Web do ASP.NET deve ser uma boa opção.
fonte
HttpClient
que é incrível, mas ele não cuida da geração de entidades e da serialização / desserialização.INotifyPropertyChanged
entidades clientes? E a validação?Para nós, o WCF é usado para SOAP e API da Web para REST. Também desejo que o SOAP da API da Web seja suportado. Não estamos usando recursos avançados do WCF. Aqui está a comparação do MSDN :
fonte
A API da Web do ASP.net é baseada em HTTP e REST, GET, POST, PUT, DELETE, com o conhecido estilo de programação ASP.net MVC e retornável em JSON; API web é para todo o processo leve e componentes puros baseados em HTTP. Para que você possa avançar com o WCF, mesmo para serviços web simples ou mais simples, isso trará toda a bagagem extra. Para um serviço simples e leve para chamadas ajax ou dinâmicas, o WebApi sempre resolve a necessidade. Isso complementa perfeitamente ou ajuda em paralelo ao ASP.net MVC.
Confira o podcast: Hanselminutes Podcast 264 - Este não é o WCF de seu pai - Tudo sobre o WebAPI com Glenn Block, de Scott Hanselman, para mais informações.
fonte
Nos cenários listados abaixo, você deve ir para o WCF:
A API WEB é uma estrutura para o desenvolvimento de serviços RESTful / HTTP.
Existem muitos clientes que não entendem o SOAP, como Navegadores, HTML5; nesses casos, as APIs da WEB são uma boa opção.
O cabeçalho de serviços HTTP especifica como proteger o serviço, como armazenar em cache as informações, o tipo do corpo da mensagem e o corpo HTTP pode especificar qualquer tipo de conteúdo, como HTML, não apenas XML, como serviços SOAP.
fonte
Desde o uso de ambos até agora, encontrei muitas diferenças entre o WCF e a API da Web. Ambas as pilhas de tecnologia são adequadas para diferentes cenários; portanto, não é possível dizer qual é o melhor, isso depende da configuração e do cenário.
Nota: Os dados não são apenas da minha opinião, mas também são coletados de outros sites oficiais.
fonte
O WCF lhe dará muito do que precisa, que nem é comparável a nada. A menos que você queira implementar por conta própria (para citar alguns) autenticação, autorização, criptografia, enfileiramento, limitação, mensagens confiáveis, registro, sessões e assim por diante. O WCF não é [apenas] serviços da web; O WCF é uma plataforma de desenvolvimento para SOA.
fonte
Por que estou respondendo:
Demorei muito tempo para entender a diferença entre essas duas tecnologias. Vou colocar todos esses pontos aqui que penso: "Se eu tive esses pontos no momento em que estava pensando em busca dessa resposta, então decidi muito antes selecionar a tecnologia necessária".
Fonte de informação:
Liberado o Microsoft® Visual Studio® 2015
ISBN-13: 978-0-672-33736-9 ISBN-10: 0-672-33736-3
Por que API da Web do ASP.NET e WCF:
Antes de comparar as tecnologias da API da Web do ASP.NET e do WCF, é importante entender que existem dois estilos / padrões para criar serviços da Web: REST (Representational State Transfer) e SOAP / WSDL. O SOAP / WSDL era o padrão original no qual os serviços da web foram construídos. No entanto, era difícil de usar e tinha formatos de mensagens volumosos (como XML) que prejudicavam o desempenho. Os serviços baseados em REST rapidamente se tornaram a alternativa. Eles são mais fáceis de escrever porque utilizam as construções básicas do HTTP (GET, POST, PUT, DELETE) e geralmente usam formatos de mensagens menores (como JSON). Como resultado, os serviços HTTP baseados em REST agora são o padrão para serviços de gravação direcionados estritamente à Web.
Vamos definir o objetivo da API da Web do ASP.NET
A API da Web do ASP.NET é a tecnologia da Microsoft para o desenvolvimento de serviços da Web HTTP baseados em REST. (Há muito tempo substituiu o ASMX da Microsoft, que era baseado em SOAP / WSDL.) A API da Web facilita a criação de serviços robustos com base em protocolos HTTP que todos os navegadores e dispositivos nativos entendem. Isso permite criar serviços para dar suporte ao seu aplicativo e chamá-los de outros aplicativos da web, tablets, telefones celulares, PCs e consoles de jogos. A maioria dos aplicativos criados hoje para alavancar a sempre presente conexão com a Web usa serviços HTTP de alguma maneira.
Vamos agora definir o objetivo do WCF:
A comunicação pela Internet nem sempre é o meio mais eficiente. Por exemplo, se o cliente e o serviço existirem na mesma tecnologia (ou mesmo na mesma máquina), eles poderão negociar um meio mais eficiente de se comunicar (como TCP / IP). Os desenvolvedores de serviços se viram fazendo as mesmas escolhas que estavam tentando evitar. Agora, eles teriam que escolher entre criar serviços internos eficientes e poder ter o amplo acesso encontrado na Internet. E, se eles precisassem oferecer suporte a ambos, talvez precisassem criar várias versões de seus serviços ou pelo menos proxies separados para acessar seus serviços. Esse é o problema que a Microsoft resolveu com o WCF .
Com o WCF, você pode criar seu serviço sem se preocupar com limites. Em seguida, você pode deixar o WCF se preocupar em executar seu serviço da maneira mais eficiente, dependendo do cliente que está chamando. Para gerenciar esta tarefa, o WCF usa o conceito de terminais. Seu serviço pode ter vários pontos de extremidade (configurados em tempo de design ou após a implantação). Cada ponto de extremidade indica como o serviço pode oferecer suporte a um cliente que está chamando: pela Web, via comunicação remota, pelo Microsoft Message Queuing (MSMQ) e muito mais. O WCF permite que você se concentre na criação da funcionalidade do seu serviço. Preocupa-se em como falar com mais eficiência com os clientes que ligam. Dessa maneira, um único serviço WCF pode suportar com eficiência muitos tipos diferentes de clientes.
Exemplo de WCF:
Considere o exemplo:
Os dados do cliente são compartilhados entre os aplicativos. Cada aplicativo pode ser gravado em uma plataforma diferente e pode existir em um local diferente. Você pode extrair a interface do cliente em um serviço WCF que fornece acesso comum a dados compartilhados do cliente. Isso centraliza os dados, reduz a duplicação, elimina a sincronização e simplifica o gerenciamento. Além disso, usando o WCF, você pode configurar os terminais de serviço para funcionarem da maneira que faz sentido para o cliente que está chamando. A figura mostra o exemplo de antes com acesso centralizado aos dados do cliente em um serviço WCF.
Conclusão:
i) Quando escolher a API da Web:
Não há como negar que os serviços HTTP baseados em REST, como os criados usando a API da Web do ASP.NET, se tornaram o padrão para a criação de serviços da web. Esses serviços oferecem uma abordagem fácil e direta aos desenvolvedores da Web que estão criando serviços. Os desenvolvedores da Web compreendem HTTP GET e POST e, assim, adaptam-se bem a esses tipos de serviços. Portanto, se você estiver escrevendo serviços estritamente direcionados ao HTTP , a API da Web do ASP.NET é a opção lógica.
ii) Quando escolher o WCF:
A tecnologia WCF é útil quando você precisa oferecer suporte a vários pontos de extremidade de serviço com base em diferentes protocolos e formatos de mensagem. Produtos como o Microsoft BizTalk utilizam o WCF para criar serviços robustos que podem ser usados na Web e também através de diferentes configurações de máquina para máquina.Se, no entanto, você precisar escrever um aplicativo que se comunique por TCP / IP quando conectado ao local rede e funciona sobre HTTP quando estiver fora da rede, o WCF é sua resposta .
Esteja avisado:
Os desenvolvedores da Web costumam ver o WCF como mais difícil e complexo de desenvolver. Portanto, se você não prever a necessidade de serviços multiprotocolo, provavelmente ficará com a API da Web do ASP.NET.
fonte
Há uma comparação no MSDN sobre isso
API da Web do WCF e do ASP.NET
Para mim, a escolha foi sobre Quem são os clientes e onde eles estão localizados?
Dentro da empresa, os clientes baseados em rede e .NET: Use WCF com ligação TCP (comunicação rápida que HTTP)
Fora da rede da empresa e use diversas tecnologias como PHP, Python, etc : use API Web com REST
fonte
Falando de negócios, o WebApi não possui um WSDL, portanto os desenvolvedores devem documentar todos manualmente. E se, por exemplo, a operação WebApi retornar uma lista de objetos, o cliente deverá criar os objetos manualmente, ou seja, o WebAPI é realmente propenso a erros de definições.
O profissional do Webapi é mais leve que o WCF.
fonte
Em relação à declaração "WebApi falta de WSDL", existem várias maneiras de gerar o cliente Rest. Uma abordagem popular é a Swagger UI / (Swashbukkle Nuget). Isso fornece uma interface rica para entender o esquema de entrada e saída do terminal REST e a ferramenta online para testar os terminais.
O JSON LD (Json Linked Documents) é outro padrão emergente que melhorará ainda mais a experiência do desenvolvedor REST baseado em JSON, expondo o esquema JSON com melhor semântica.
fonte
Com o wcf, podemos configurar e expor o mesmo suporte de serviço para vários pontos de extremidade, como tcp, http.se você desejar que seu serviço seja baseado apenas em http, será melhor usar a API da web. A API da Web tem muito menos configuração quando comparada ao wcf e é um pouco mais rápida que o wcf. O Wcf também suporta serviços repousantes. Se você tiver uma limitação do .Net framework 3.5, sua opção será wcf.
fonte