quarta-feira, 27 de novembro de 2013

Webservice RESTFul

O que é um Webservice RESTFul?

 A web é amplamente utilizada e reconhecida principalmente por sua arquitetura robusta, escalável e tolerante a falhas. Quem sustenta esses fatores e lhe dá todo este poder é o protocolo HTTP (o protocolo HTTP é utilizado, em regra, quando se deseja evitar que a informação transmitida entre o cliente e o servidor seja visualizada por terceiros, como, por exemplo, no caso de compras online.). Atualmente, muitas vezes necessitamos integrar aplicações em ambientes totalmente diferentes e os WebServices são uma das maneiras mais comuns e fáceis de integrar os diferentes sistemas. Este post mostrará um pouco de um modelo de WebService chamado REST.
Representational State Transfer ou somente REST, é cada vez mais usado como alternativa ao “já antigo” SOAP onde que a principal crítica a este é a burocracia, algo que REST possui em uma escala muito menor. O REST é baseado no design do protocolo HTTP, que já possui diversos mecanismos embutidos para representar recursos como código de status, representação de tipos de conteúdo, cabeçalhos, etc.
O principal nesta arquitetura são as URLs do sistema e os resources (resource é um recurso, entidade). Ele aproveita os métodos HTTP para se comunicar, que são:
    GET: Solicita a representação de um determinado recurso. É definido como um método seguro e não deve ser usado para disparar uma ação (remover um usuário, por exemplo);
    POST: As informações enviadas no corpo (body) da requisição são utilizadas para criar um novo recurso. Também é responsável por fazer processamentos que não são diretamente relacionados a um recurso.
    DELETE: Remove um recurso. Deve retornar o status 204 caso não exista nenhum recurso para a URI especificada.
    PUT: Atualiza um recurso na URI especificada. Caso o recurso não exista, ele pode criar um. A principal diferença entre POST e PUT é que o primeiro pode lidar não somente com recursos, mas também pode fazer processamento de informações.


Esses métodos são utilizados como abstração para o famoso CRUD (Create Read Update Delete - Cadastrar Ler Atualizar Deletar). Onde o GET é utilizado para a busca de informações, fazendo o papel do Read. O POST é utilizado para atualizar informações, fazendo o papel do Update. O PUT é utilizado para cadastrar informações, fazendo o papel do Create. E por fim, o DELETE que é utilizado para apagar as informações, fazendo o papel do Delete.
É possível implementar os Webservices em várias linguagens de programação, a grande maioria delas suporta os protocolos REST (Java, C#, Delphi, entre outras).
O lado cliente pode ser implementado utilizando qualquer linguagem de programação, para ser possível criar um cliente que possa consumir um webservice, só precisa que a linguagem que será utilizada para a implementação do cliente possua uma API (ou que o desenvolvedor crie a API) para a utilização do protocolo HTTP, esse é o único requerimento para a implementação do cliente. Inclusive o lado cliente pode ser implementado em uma linguagem diferente da utilizada no servidor sem se preocupar com conflitos entre as mesmas, pois servidores RESTFul disponibilizam seus serviços com base apenas no HTTP e a troca de informação é sempre em texto (pode ser texto simples ou utilizando uma linguagem de marcação como XML ou mesmo um formato padrão de dados como o JSON).
Um Webservice RESTFul é um Webservice que utiliza o protocolo REST e utiliza linguagem padrão para a troca de informação a notação JSON.

A Quem se Destina:

A qualquer empresa que deseja criar meios para que os seus clientes possam acompanhar em tempo real informações sobre os serviços/produtos aos quais ele contratou. Um bom exemplo é a Amazon, ela disponibiliza Webservices para que o cliente possa ter acesso as informações dos serviços em tempo real, permitindo inclusive que o cliente possa incorporar ao seu aplicativo as informações coletadas da Amazon.
O custo dessa tecnologia está focado apenas em dois pontos:
1- O valor que o Analista/Desenvolvedor de Sistemas poderá cobrar para a implementação do mesmo. O valor de hora varia de R$ 15,00 a R$ 65,00 dependendo da experiência do Desenvolvedor, da Linguagem escolhida e da complexidade do Webservice.
2- O Valor da Hospedagem desse serviço. Esse valor é difícil de ser calculado, pois depende de muitos fatores, como por exemplo, se a empresa usará um servidor próprio, se vai alugar um espaço para colocar seu servidor, se vai alugar um dedicado, se vai alugar um cloud ou se vai precisar de uma hospedagem apenas. O valor de exemplo colocado será baseado na locação de um servidor cloud na Amazon, o valor da mensalidade de um servidor cloud (instância micro) é em média R$ 62,00 por mês (esse valor foi calculado com base na tarifa em 27/11/2013 e tendo como base o valor do dólar a R$ 2,30).

Uso e Importância:

A utilização de Webservices é muito importante para que a empresa possa liberar informações para o cliente de forma segura e controlada (pois o banco de dados da empresa não precisa ficar "exposto" na internet) e permitindo que o cliente possa incorporar em seu aplicativo informações sobre o serviço/produto do fornecedor de forma facilitada, permitindo que o mesmo possa ter a informação atualizada no momento que precisar. Um bom exemplo é dado pela Amazon, onde o cliente pode utilizar o Webservice da Amazon para coletar a informação sobre seu servidor cloud diretamente de seu aplicativo, permitindo que o cliente saiba a informação sem a necessidade de ir até o site da Amazon. Outro bom exemplo seria de uma fornecedora de pneus.Se a fornecedora disponibilizasse um Webservice com a possibilidade de o cliente consultar preços, verificar disponibilidade de produtos e até de permitir que o cliente solicite um pedido de compra. O cliente poderia adicionar isso ao seu sistema, permitindo que ele saiba se o fornecedor tem ou não o produto que ele precisa e já realizar o pedido do produto tudo dentro do próprio sistema.

Fontes: http://www.matera.com/br/2012/10/como-funciona-um-webservice-rest/ 
         http://aws.amazon.com/pt/ec2/pricing/

Nenhum comentário:

Postar um comentário