Pesquisar este blog

quinta-feira, 25 de setembro de 2014

Sistemas distribuídos baseados na Web - SOAP

Sistemas distribuídos baseados na Web

No início da internet, as páginas basicamente eram documentos estáticos linkados (HTML, texto e XML), onde basicamente tinhamos um sistema cliente/servidor. O browser, neste caso, atuava como cliente e o servidor das páginas web, atuava como servidor.
Conforme a internet foi evoluindo, apareceram os scripts CGI (Common Gateway Interface) que permitiam a execução de scripts pelo browser, com isso era possível executar parte da regra de negócios nos clientes, os browsers, e prover conteúdo dinâmico para as páginas HTML.
Quanto mais páginas web eram criadas, maiores eram seus níveis de acesso, e com isso veio a necessidade de distribuir os servidores web.
Hoje o principal servidor de conteúdo web é o Apache Httpd Server Project, que é executado em 59.6% de todos os servidores da web, segundo esta pesquisa.
Clusterisar, ou distribuir um servidor não é uma tarefa fácil, mas isto deverá ser realizado de maneira transparente ao cliente. Quando um site possui várias instâncias de um servidor, a cada clique as chamadas realizadas pelo cliente pode migrar de um servidor para outro, mas sem que o cliente perceba, esta migração deverá ser transparente.
A clusterização foi feita para aumentar a performance dos servidores web, porém ao fazê-la devemos tomar certos cuidados, como a necessidade de mantê-los sincronizados, gerenciar os servidores através de monitoramento e a seleção do melhor servidor para executar uma requisição.

Comunicação

A comunicação na internet é realizada através do protocolo HTTP (Hipertext Transfer Protocol), ou protocolo de transferência de hipertexto. Este protocolo funciona com requisições e respostas, o browser como cliente faz uma requisição ao servidor web, o qual irá fornecer dados como resposta em forma de hipertexto.
O protocolo HTTP define 8 métodos, o GET, POST, PUT, HEAD, DELETE, TRACE, OPTIONS e CONNECT, sendo os 5 primeiros os mais utilizados.
O GET é utilizado quando queremos pegar algum recurso do servidor, o HEAD é uma variação do GET, porém ao invés de retornar todos os dados, em uma chamada HEAD só retornam os metadados da requisição e não os dados. Os metadados são dados que podem prover informações úteis sobre os dados daquele método, por exemplo os arquivos armazenados nos discos das máquinas possuem metadados, dentre eles os que identificam qual é o tipo de arquivo (bitmap, jpeg, mpeg, etc). O método POST é utilizado para enviar informações a serem processadas pelo serviço, como inserções de dados, já o método PUT é utilizado para enviar requisições de alteração de dados, finalmente o método DELETE é utilizado para remover um recurso do servidor.

Nomes

Todo método de um webservice roda em um servidor na internet e com isso será acessado através de uma URL, que por sua vez obedece a sua estrutura:
esquema : // nome : porta / caminho

Evolução da Internet

No início a internet eram só páginas estáticas de HTML e com o advento dos javascripts e do AJAX, os WebServices granharam importância. Os javascripts propiciaram aos WebDesigners a possiblidade de executar parte da regra de negócio no cliente, o browser. Com o javascript é possível realizar chamadas ao servidor e com isso a necessidade de métodos aumentou consideravelmente.
Os webservices são utilizados não só para fornecer dados e operações nos dados das páginas, como também, para disponibilizar parte dos dados de uma empresa/aplicativo na internet.
A internet gerou uma mudança no comportamento das empresas em relação aos seus dados, antes as empresas eram muito fechadas e não expunham os seus dados na internet. Com a descoberta dos webservices as empresas passaram a disponibilizar estes dados aos seus usuários, o que gerou uma nova onda de aplicativos web, também conhecidos como mashup.
Muitas empresas passaram a disponiblizar uma API de métodos http, e em alguns casos, cobrar pela utilização destes dados, como pode ser visto aqui, aqui e em muitos outros lugares na internet.

SOAP

O SOAP é um dos protocolos que especifica como deve ser realizada a troca de informações em um WebService, o seu desenvolvimento foi baseado, entre outras coisas, no protocolo de RPC. Nele os dados são trocados através dos arquivos de XML, que nada mais é do que um arquivo texto utilizado para formatar os dados.
Este protocolo começou a ser desenvolvido por dois funcionários da Microsoft e depois de algum tempo a sua especificação migrou para um grupo multidisciplinar do World Wide Web Consortium.
Um serviço SOAP, por definição é extensível, neutro e independente e se tornou a base para a definição do WSDL (WebService Description Language). A implementação de um serviço simples em Java, pode ser encontrada em diversas páginas da web, como aqui.
Este protocolo é extensível pois para implementar algumas regras, como as de segurança, isso é feito extendendo-se as suas definições. Ele é independente, pois o consórcio que estabelece as suas regras não está vinculado a nenhuma empresa, linguagem, sistema operacional ou modelo. E finalmente ele é neutro, pois pode ser utilizado por muitos protocolos, como o HTTP, o HTTPS e o SMTP.
Uma das grandes vantagens do SOAP, em relação as outras formas de se executar chamadas a métodos remotas, é a facilidade de configuração do Firewall, já que todos os métodos serão acessados pelo mesmo endereço e porta, e todas as mensagens trocadas serão transmissões de xml, impossibilitando ataque de envio de arquivos executáveis aos servidores.
Mesmo assim, como a segurança não é definida pela especificação do SOAP, cada desenvolvedor deverá implementá-la da sua maneira e para isso deve-se tomar muito cuidado com as possíveis formas de ataques, como a Man in the Middle, quais dados liberar e para quais usuários.
Uma mensagem de SOAP é definida por quatro componentes:
  • Envelope: que identifica aquela xml como uma mensagem SOAP
  • Header: que contem informações de metadados
  • Body: que contem as informações da chamada ou da resposta
  • Fault: que é utilizada para enviar as informações referentes aos erros que aconteceram durante o processamento daquela requisição

WSDL

O WSDL é responsável por definir as informações referentes aos métodos de um webservice. Estas inforamações incluem, nome, parametros, método HTTP utilizado, resposta e possíveis erros.
É possível acharmos o WSDL de um serviço adicionando o:
?wsdl
ao final o seu endereço. Com isso conseguimos fazer o download do arquivo de definição do webservice e com ele é possível gerarmos código referente as chamadas aqueles serviços, na linguagem que estamos utilizando para desenvolver o nosso sistema.

Sistema distribuído baseado na Web
SOAP

Nenhum comentário:

Postar um comentário