1. O documento apresenta um estudo sobre o SGE - Sistema de Gestão de Escolas e o SGE Cliente, sistemas desenvolvidos para demonstrar o funcionamento de um Web Service.
2. O trabalho discute conceitos e características de Web Services como baixo acoplamento, transparência de rede, XML, SOAP, WSDL e UDDI.
3. É apresentado também um exemplo prático de um Web Service chamado COBREDIRETO para pagamentos online para melhor entendimento do assunto.
7. SUMÁRIO
1. INTRODUÇÃO 07
2. WEB SERVICES 08
2.1. CONCEITOS E DEFINIÇÕES 08
2.2. Características dos Web Services 09
2.2.1. Baixo Acoplamento 09
2.2.2. Transparência de Rede 10
2.3. Extensible Markup Language (XML) 10
2.3.1. XML Schema Definition 10
2.3.1.1 XML Namespace 11
2.3.1.2. Extensible Stylesheet Language (XSLT) 12
2.3.1.3 Simple Object Access Protocol (SOAP) 12
2.3.1.4 Web Services Description Language (WSDL) 14
2.3.1.5 Universal Description, Discovery and Integration (UDDI) 14
2.3.1.6. Arquitetura REST 15
2.3.1.6.1. REpresentational State Transfer (REST) 15
2.3.1.6.2. Web Application Description Language (WADL) 16
2.4. um exemplo de web service – cobredireto 16
2.4.1. Sobre o COBREDIRETO 16
2.4.2. Fluxo do Pagamento – Padrão (WEB SERVICES) 18
2.4.3. Fluxo do Pagamento – Bibliotecas/Conectores 19
2.4.3.1 Integração do COBREDIRETO com o WEB SERVICE 20
2.4.3.2 Criando o Pedido 21
2.4.3.3 Retorno do Pagamento 23
2.4.3.4. Probe 24
3. SGE – SISTEMA DE GESTÃO DE ESCOLAS 26
3.1. ESTUDO DE CASO SGE e SGE CLIENTE 26
3.2. ARQUITETURA UTILIZADA 27
3.2.1 Ruby 27
9. 7
CAPÍTULO 1: INTRODUÇÃO
Com a evolução muito rápida das tecnologias utilizadas no desenvolvimento de
software, muitos dos softwares existentes hoje vêm sendo criados sem utilização de padrões e
metodologias bem definidas. Com o passar do tempo e o grande crescimento de empresas que
utilizam tais softwares, começou a surgir uma necessidade de integração da grande massa de
software existente. Entretanto, por tamanha falta de padrões, tais softwares não conseguem
comunicarse entre si de maneira eficiente, independente e escalável. Baseandose nesse
problema, começaram a ser propostas soluções que pudessem integrar tais sistemas. A
necessidade da integração entre aplicações, a utilização unificada de processos encontrados
em diferentes sistemas e escritos em diferentes linguagens são alguns exemplos. A fim de
sanar estas questões, a tecnologia dos Web Services foi criada, permitindo assim,
disponibilizar formas de integrar sistemas distintos, modularizar serviços e capacitar a
integração e consumo de informações.
10. 8
CAPÍTULO 2: WEB SERVICES
Este capítulo mostra alguns conceitos e definições do tema deste trabalho, e um
exemplo de Web Service que tem como objetivo facilitar o entendimento do assunto.
2.1. Conceitos e Definições
Os Web Services constituem um novo modelo de partilha de dados que permite
publicação de rotinas e métodos acessíveis pela Internet. Com uma interface transparente para
o Cliente e facilidade de integração de diferentes aplicações, os Web Services são uma
poderosa ferramenta para promover a integração dos dados em diferentes plataformas e
fornecem uma infraestrutura para manter uma forma mais rica e mais estruturada de
interoperabilidade entre clientes e servidores.
Pulier (2006) define Web Service (WS) como um sistema de software que segue um
conjunto de padrões abertos de interoperabilidade. Estes padrões permitem a interoperação
mundial de computadores independentemente da plataforma de hardware, sistema
operacional, infraestrutura de rede ou linguagem de programação. Pulier (2006) ainda afirma
que a grande utilidade do WS é baseada no fato de que ele usa protocolos abertos de
comunicação na Internet e XML para transacionar o seu negócio. Um WS é, portanto, um
sistema de software que pode agir a pedido de qualquer computador conectado à rede no
mundo, que se comunica usando padrões XML.
Um WS depende principalmente, segundo Pulier (2006), de três padrões
interrelacionados baseados no XML para funcionar corretamente:
● Simple Object Access Protocol (SOAP) O formato da mensagem.
● Web Services Description Language (WSDL) O documento que descreve exatamente
o que um WS faz e como invocálo.
14. 12
Cada prefixo é mapeado para uma URI (URI Uniform Resource Identifier ) da
seguinte forma: xmlns:prefixo atributo. URIs padrões podem também serem fornecidas para
elementos que não têm prefixos. Namespaces padrão são declarados por atributos xmlns.
Elementos e atributos que são anexados a mesma URI estão na mesma namespace.
Elementos de muitas aplicações XML são identificados pelas URIs padrões.
2.3.1.2. Extensible Stylesheet Language (XSLT)
Harold (2004) define a Extensible Stylesheet Language Transformations (XSLT) como
uma linguagem de programação funcional usada para especificar como um documento XML
de entrada é convertido em um outro documentotexto possivelmente, embora não
necessariamente, um outro documento XML.
Erl (2004) faz uma consideração importante sobre o conceito:
A XSLT permite a conversão eficiente de documentos XML em um número de
diferentes formatos de saída. O conjunto de recursos XSLT facilitam a manipulação,
ordenação, e filtragem dos dados do documento XML para fornecer visões e extrações
alternativas da informação para qualquer número de cenários de transformação de
documentos.
Segundo Harold (2004), um processador XSLT lê tanto um documento XML de
entrada como uma XSLT stylesheet (que é em si um documento XML porque XSLT é uma
aplicação XML) e produz uma árvore de resultado como saída. Esta árvore de resultado pode
então ser serializada em um arquivo ou ser escrita sobre um stream. Os documentos podem ser
transformados usando um programa autônomo ou como parte de um programa maior que se
comunica com o processador XSLT através da sua API.
2.3.1.3 Simple Object Access Protocol (SOAP)
15. 13
O protocolo SOAP especifica as regras de uso da XML para empacotar mensagens, por
exemplo, para suportar um protocolo de requisição e resposta.
De acordo com Josuttis (2007), SOAP foi o primeiro padrão real de WS que foi
desenvolvido. Originalmente SOAP era acrônimo de “Simple Object Access Protocol”.
Entretanto, notouse que SOAP não era simples e que não se tratava de acesso a objetos.
Mesmo assim o acrônimo tem resistido.
Pulier (2006) afirma que SOAP é a linguagem mais usada em WS, a estrutura XML na
qual todas as mensagens dos WS são construídas. Quando se diz que WS são baseados no
XML, na verdade se quer dizer que WS são baseados em mensagens SOAP, que são escritas
em XML. O que torna SOAP especial e o difere do simples XML é que cada mensagem SOAP
segue um padrão que foi especificado pelas normas da W3C.
SOAP é algumas vezes referida como um “envelope de dados”. Cada mensagem SOAP
começa com uma tag que lê <SOAPENV:envelope>. A tag envelope sinaliza a mensagem ao
destinatário que ele está prestes a receber uma mensagem SOAP. O que se segue é um
cabeçalho, que contem a informação crítica sobre onde as mensagens estão indo e de quem
elas vem. E depois, há o corpo da mensagem SOAP, que define o dado atual ou instruções de
operação exigidos pelo computador consumidor.
Uma mensagem SOAP é formatada como um “envelope” de código XML que define o
seu início e fim. O “cabeçalho” descreve de onde a mensagem veio, para onde ela está indo, e
como ela está indo. O “corpo” da mensagem SOAP contém os dados pertinentes ou instruções
processuais do pedido de resposta SOAP.
26. 24
Ao receber a campainha você deverá fazer uma requisição SOAP, passando no
parâmetro action o valor ‘probe’. O XML a ser enviado no parâmetro data terá o seguinte
formato:
<probe>
<merch_ref>Numero do pedido na loja</merch_ref>
<id>Numero do pedido no CobreDireto</id>
</probe>
O webservice retornará um XML, contendo o status do pedido naquele momento.
<probe>
<status>Status da comunicação, o status do pedido deve ser
visto dentro de order_data.bpag_data.status</status>
<msg></msg>
<order_data>
<bpag_data>
<status>Status do Pedido</status>
<msg></msg>
<url>URL para redirecionamento</url>
<id>Número do pedido no CobreDireto</id>
</bpag_data>
</order_data>
</probe>
STATUS DO
PEDIDO
CÓDIGO SIGNIFICADO DESCRIÇÃO
0 Pago Pedido pago com sucesso.
1 Não Pago Comprador finaliza pagamento sem sucesso e o
pedido é dado como terminado pela instituição
financeira.
27. 25
2 Inválido Este status acontece quando a transação não pode
mais ser processada pelo CobreDireto. Esta mudança
pode ocorrer por regras da própria loja ou por ação
manual via painel de controle do CobreDireto.
3 Cancelado (Estornado) Pagamento cancelado.
4 Não Efetivado Este é o status inicial do pedido.
5 Pendente de Saldo Ocorre quando o comprador não tem saldo suficiente
em sua conta bancária.
7 Pendente de Pagamento Ocorre quando a instituição financeira está
aguardando o pagamento. Ocorre para métodos de
pagamento via boleto ou para débito Real entre as 0h
e 7h.
10 Pago Parcialmente Ocorre quando o comprador pagou valor inferior ao
valor total do pedido. Geralmente isto ocorre quando
o usuário tenta fraudar o pagamento de boletos ou
quando o usuário capturar a transação para ele seja
efetivamente cobrada.
Tabela 01 – Status do Pedido no CobreDireto.
Fonte: http://www.cobredireto.com.br/integracao/integracaoviawebservices/retorno
dopagamento/
30. 28
NASA Langley Research Center que utiliza Ruby para simulações; a Level 3 Communications
em um sistema de Planejamento e Capacidade Unix que recolhe estatísticas de performances
de servidores Unix espalhados ao redor do mundo; entre outras empresas e organizações.
(referência: http :// www . ruby lang . org / pt / documentacao / historias de sucesso / )
3.2.2 Rails
O Rails, ou Ruby on Rails, também conhecido por RoR, é um Framework de
Desenvolvimento Web gratuito e Open Source. Este Framework é escrito na linguagem Ruby,
e utiliza a estrutura do padrão MVC – ModelViewController. Um dos destaques do Rails é a
facilidade de desenvolvimento e compreensão, pois favorece a convenção ao invés da
configuração aumentando assim a produtividade. O Rails também é definido como um meta
framework, pois é a junção de 5 frameworks, que são: Active Records, camada responsável
pela interoperabilidade entre o banco e a aplicação; Action Pack, que compreende a geração de
visualização (Action View) e o controle de fluxo de negócio (Action Controller); Action
Mailer, que é o serviço responsável pelo envio e o recebimento de emails; Active Support, que
é uma coleção de classes e bibliotecas úteis ao desenvolvimento em Ruby on Rails; e Action
Web Services, que é um facilitador para a publicação de APIs interoperáveis com Rails,
implementa WSDL e SOAP. A partir da versão 2.0 do Rails, este módulo foi retirado devido a
implementação do modelo Rest, mas ainda há a possibilidade de se obter este recurso através a
instalação de um plugin.
Baseado em um dos projetos de David Heinemeier Hansson, o Rails foi criado por ele
em 2003, e lançado a público em julho de 2004. A partir de então passou a ser expandido pelo
time central do Rails (http :// rubyonrails . org / core ), e hoje conta com mais de 1400 contribuidores
pelo mundo.
Nos últimos anos houve um grande crescimento de adeptos ao uso do framework Rails,
e hoje já é possível encontrar diversas aplicações em todo o mundo que o utilizam, desde
pequenas operações até mesmo grandes corporações (http :// www . rubyonrails . pro . br / ). Como por
34. 32
REFERÊNCIAS BIBLIOGRÁFICAS
COULOURIS, G., DOLLIMORE, J., KINBERG. Sistemas Distribuídos: Conceitos e Projetos.
4ª. edição. Bookmann, 2007.
SALES, Fábio de O., BARROS Kecyo S., “Solução de Integração entre Java, WEB
SERVICES E ANDROID, utilizando a arquitetura SOA”, Projeto Final de Graduação,
Universidade Católica de Salvador, BA, 2008.
SILVA, Alexandro N. da, “Composição Automática de Web Services: Avaliando os
planejadores JSHOP2 e JESS”, Projeto Final de Graduação, Universidade Federal da Bahia,
BA, 2007.
LINS, Fernando Antonio Aires, “Requisitos NãoFuncionais em WEB SERVICES”, Projeto
Final de Graduação, Universidade Federal de Pernambuco, 2008.
OLIVEIRA, Alex de, “Web Service para integração de aplicações que utilizam troca de
mensagens e controle de comunicação entre usuários”, Universidade Regional de Blumenau,
2007.
GARCIA, Leonardo Alvarenga; MATIAS, Thiago F. de M.; GARCIA, Tiago R. “Suporte da
Arquitetura Orientada a Serviços na Integração de Sistemas Médicos”, Universidade Federal
de Itajubá – UNIFEI, 2008.
MORO, Tharcis Dal,; DORNELES, Carina F,; REBONATTO, Marcelo T. “Web services WS
* versus Web Services REST”, Instituto de Ciências Exatas e Geociências Universidade de
Passo Fundo (UPF), RS.