Servlet vs. WebService

Iaê galera,

Um conceito que a inda não ficou muito claro para mim entre estas tecnologias. Tá li alguns posts e resumidamente a resposta era “Se for distribuir um recurso entre diversas aplicações, use WebService”, até tinha uma definição do Wikipedia :

" Web service é uma solução utilizada na integração de sistemas e na comunicação entre aplicações diferentes. Com esta tecnologia é possível que novas aplicações possam interagir com aquelas que já existem e que sistemas desenvolvidos em plataformas diferentes sejam compatíveis. Os Web services são componentes que permitem às aplicações enviar e receber dados em formato XML. Cada aplicação pode ter a sua própria “linguagem”, que é traduzida para uma linguagem universal, o formato XML. "

Receber e enviar xml… Uma Servlet também faz.
Integrar apps diferentes… Se for sobre o Http a maoir parte das linguagem também podem interagir.

Alguém pode me dar uma idéia de que critérios são impeditivos em relação ao uso de alguma delas ? (O que uma faz que a outra não faz)

No WebService o xml segue uma determinada formatação que teoricamente todos os consumidores do servico que entenderem a formatação podem se comunicar.
Por exemplo, vc cria uma Web Service usando algum framework em Java. Um cliente em .Net pode consumir esse serviço e ele não precisa se importar qual a tecnologia que foi utilizada para criar o Web Service. Outro exemplo, imagine que você criou um WebService em Python. Qualquer cliente (Java, .Net, Python, Ruby, etc) pode consumir esse Web Service porque o que importa é o padrão (SOAP) e não a tecnologia subjacente.

Leia aqui:



[]´s

Vou resumir. Imagine o cenário no qual duas empresas precisam trocar dados entre seus sistemas. Uma é uma livraria a segunda é uma transportadora. Um cliente da livraria entra no site da livraria e quer saber quanto fica para comprar e receber um livro em casa.
Os analistas do site da livraria acharam que seria melhor não dispor de um banco com os valores do transporte. Acharam que atualizar daria muito trabalho e necessitaria muita atenção. Preferiram optar por usar webservices.
O site da livraria envia uma mensagem (XML), com os dados de destino e outros atributos sobre a entrega a ser feita, para um servidor da transportadora. O servidor da transportadora responde com o preço do frete.

No webservice não importa o sistema operacional do cliente(livraria) e nem do servidor (transportadora). Ambos vão se entender pois ambos usam o mesmo protocolo para troca de informações. Ou seja, webservice é padronizado.

Todo este processo poderia ter sido feito de qq outra forma. Como vc disse, a troca de XML com servlets seria uma delas. Mas para trocar xml sem seguir um padrão, vc precisa conhecer a formatação (nós, elementos, atributos,…) que a transportadora usou para os seus XMLs. Já no caso do webservice isto não é necessário pois tudo é padronizado. Ou melhor dizendo, isto se dá de forma automática.

O cliente acessa um endereço que contém um wsdl (wsdl está para o webservice como o dtd está para o xml). A IDE do cliente automaticamente parsea os serviços disponíveis e os parâmteros necessários para acessar cada um. Assim o cliente faz chamadas ao webservice como se estivesse chamando métodos/funções locais.

Webservice é muito mais, mas este texto é só uma ideia.

Resumindo:
webservice = padrão ; servlet = cada um tem o seu.
webservice = usado para disponibilizar serviços (intranet ou na internet, tanto faz).

Certo, entendi…

Que framework vocês indicam para criar os webServices ? porque ?

Em ambas as respostas, não foi falado de Webservice REST, que não usa WSDL nem SOAP, podendo inclusive ser implementado em cima de um servlet, já que ele funciona em cima de HTTP, e podendo retornar um XML “comum”, um Json, e etc.

Vale dar uma pesquisada em webservices REST no google, inclusive aqui no GUJ tem vários tópicos sobre o assunto. Assim você pode ver qual melhor atende as suas necessidades.

Abraços,