Professional Documents
Culture Documents
Assíncrona
Jônnison Lima Ferreira1, Aislan Rafael Rodrigues de Sousa1 , Artur Luiz Torres de
Oliveira1
1Instituto Federal de Educação Ciência e Tecnologia do Piauí Campus Picos(IFPI
Picos)
jonnison_1234[arroba]hotmail.com, aislanmaster[arroba]gmail.com,
tuca_jampa[arroba]hotmail.com
Abstract. This article presents a model for construction of applications that
require the collection and processing of data in asynchronous. Describes the
technologies, architecture and was designed as the skeleton of code to support
applications.
Resumo. Este artigo apresenta um modelo para construção de aplicações que
necessitem de coleta e processamento de dados de forma assíncrona. Descreve
as tecnologias utilizadas, arquitetura e como foi idealizado o esqueleto de
código para dar suporte às aplicações.
1. Introdução
O modelo apresentado é uma proposta para solucionar problemas que necessitam
coletar informações para serem processadas em uma aplicação servidora. A seguinte
situação serve como exemplo para o uso do modelo apresentado:
Uma empresa de distribuição de bebidas tem uma equipe de vendedores, estes
vão até os clientes coletando informações sobre os pedidos: produtos e quantidade. Ao
final do expediente estes descarregam essas informações para ser feito a logística de
entrega.
Situação na qual os vendedores devem ter um dispositivo portátil com uma
aplicação cliente, para descarregar os dados no servidor onde vai ser feito todo o
processamento de estoque e logística da aplicação. O artigo tem o propósito de analisar
as tecnologias utilizadas na coleta, envio e processamento de dados.
2. Tecnologias adotadas
Para a construção do modelo utilizouse de tecnologias tanto na aplicação servidora,
cliente e no estabelecimento da comunicação entre as duas aplicações.
2.1 BDOO(banco de dados orientado ao objeto)
É um banco de dados que utiliza objetos para persistir dados e faz uso das características
do paradigma de orientação a objeto. Dois fatores importantes para a criação deste novo
modelo foi a dificuldade existente para trabalhar com dados complexos em um banco de
dados relacional, e o emprego em larga escala de linguagens de programação orientada
a objetos para a manipulação dos dados, na forma tradicional na aplicação é necessário
a tradução entre a representação dos dados como objetos e as tuplas do banco de dados
relacional.
Os BDOOs armazenam objetos persistentes, ou seja, mesmo após o término do
programa, os dados podem ser recuperados e compartilhados com outras aplicações.
Cada Objeto possui um identificador (OID) gerado pelo sistema. Com isso foi criado
várias possibilidades de uso. Ganharam nicho nas áreas de bancos de dados espaciais,
telecomunicações e áreas cientificas (como física de alta energia e biologia molecular).
Inicialmente houve pouco impacto nas aplicações comerciais, embora sejam utilizados
em algumas áreas especializadas em serviços financeiros.
A partir de 2004 esses bancos tiveram uma nova fase de crescimento, com o
surgimento de bancos de dados livres e vários recursos de fácil uso, por serem
totalmente escritos em linguagens de programação orientada a objetos (como Java, C++,
C#).
O acesso aos bancos de dados pode ser rápido, porque geralmente não são
necessárias as junções (como numa implementação de um banco de dados relacional),
isto é, o objetos é obtido diretamente sem busca, seguindo os ponteiros, outra
característica importante é o fato de que a linguagem de programação e banco têm os
mesmos tipos de dados.
O BDOO escolhido para o modelo foi o DB4O. Possui código aberto e uma
comunidade bastante ativa, compatível com a linguagem de programação Java. Próprio
para uso em aplicações feitas para dispositivos portáteis.
2.2 Hibernate
O hibernate é uma ferramenta de mapeamento objetorelacional para a linguagem de
programação Java. Ele tem como objetivo diminuir a complexidade da relação entre um
programa Java que é uma linguagem orientada a objetos com um banco de dados do
modelo relacional (maioria dos SGBDs).
Ele tem como principal característica a transformação das classes Java em
tabelas de dados (convertendo os tipos Java em tipos SQL). O hibernate gera todas as
SQL, poupando o desenvolvedor do trabalho de conversão de dados, fazendo com que o
programa fique portável para qualquer SGBD relacional de linguagem SQL, o único
problema causado por ele é um pequeno aumento do tempo de execução, para
compensar isso a ferramenta poupa o desenvolvedor do trabalho da escrita de muito
código de acessos ao banco e de SQL, acelerando o desenvolvimento.
Mas esse framework pode não ser a melhor opção para todas as aplicações, como
em aplicações que fazem grande uso de stored procedures, gatilho ou que fazem grande
implementação da lógica da aplicação no próprio banco, tendo um modelo “pobre” ele
não irá se beneficiar do uso do hibernate. Sendo indicado para sistemas com um modelo
“rico”, onde grande parte da lógica de negócios fica na aplicação Java.
O hibernate usa um dialeto SQL feito pra ele, o HQL(hibernate query language),
que é uma poderosa linguagem de consulta, muito parecida com a própria SQL, mas é
totalmente orientada ao objeto, com isso tem todos os benefícios desse tipo de
linguagem, como herança, polimorfismo e encapsulamento.
2.3 TCP
Segundo Battisti (2006) TCP é um protocolo de transporte que garante que os dados
sejam entregues de forma confiável, sem corromper ou alterarlos, é sem duvidas um
dos mais importantes protocolos da família TCP/IP. Este é um protocolo orientado a
conexão (onde são passadas informações de logon) antes de começar a troca de dados.
As principais características do TCP são a garantia de entrega de pacotes IP, ele
executa a segmentação e reagrupamento de grandes blocos de dados enviados, verifica a
integridade dos dados transmitidos, garantindo que os dados não sejam alterados ou
corrompidos durante o transporte enviando, mensagens positivas ou negativas,
dependendo do recebimento bemsucedido ou não.
Baseandose na conexão pontoaponto entre dois hosts de redes. Ao receber os
dados do programa ele os processa como um fluxo de bytes, esses segmentos são
conhecidos como “pacotes”.
Antes de se iniciar a troca de dados, primeiro é estabelecida a conexão sessão
entre si, essa seção é iniciada através de um processo conhecido como treeway
handshake, processo no qual ocorre a sincronização do numero de sequencia e oferece
as informações de controle necessárias para o estabelecimento da conexão virtual entre
os hosts.
O protocolo de transmissão TCP foi escolhido justamente por garantir a entrega
dos dados, já que ele só finaliza a conexão após a transferência correta de todos os
dados, já o protocolo UDP mesmo sendo um pouco mais rápido não garante a chegada
dos dados não assim indicada a esse tipo de aplicação.
2.4 Soquete
Segundo Colouris (2007) , soquete é uma abstração que serve como ponto de texto
para a comunicação entre processos. Para haver comunicação deve haver dois soquetes
onde vão ser transferidas mensagens. Para que a operação seja realizada com sucesso, o
soquete deve estar vinculado a uma porta local e a um dos endereços IP do computador
em que é executado a aplicação cliente ou servidora.
3. Arquitetura do Modelo
Figura 1. Modelo de Arquitetura
O servidor é responsável por receber os dados coletados pelos clientes e persistirlos em
uma base de dados através de uma conexão estabelecida quando o cliente achar
necessário.
3.1 Servidor
Figura 2. Modelo de Arquitetura da camada do Servidor
Na aplicação servidora os dados são persistidos em um banco de dados relacional. Ex.:
Mysql e SQL Server. Os bancos de dados relacionais são largamente utilizados nas
empresas. Assim não há necessidade de grandes alterações em base de dados legadas, e
também se trata de um modelo bastante testado e eficiente.
O hibernate é utilizado como uma camada para recuperar e persistir objetos em
uma base de dados relacional. O paradigma de Orientação a Objeto facilita no processo
de construção da aplicação servidora. A comunicação entre cliente e servidor é feita
através de trocas de mensagens, onde as quais transportam apenas objetos e as
informações necessárias para chegar ao destino.
3.2 Camada de comunicação
Figura 3. Modelo de Arquitetura da camada de comunicação
Para esta camada é empregado o uso de comunicação por fluxo TCP. Foi escolhido este
protocolo pelo fato de ocultar, ou seja, trata de maneira automática:
• Tamanho das mensagens;
• Mensagens perdidas;
• Controle de fluxo;
• Duplicação e ordenamento de mensagens;
• Destinos de mensagens.
A linguagem de programação escolhida para rodar tanto na aplicação servidora e
na aplicação cliente é o Java, por causa dessa escolha os objetos têm que ser serializados
ao serem transportados. De acordo com Coulouris (2007), essa é uma atividade para
simplificar um objeto, ou um conjunto de objetos conectados, em uma forma seqüencial
conveniente para ser armazenada em disco ou transmitida em uma mensagem.
3.3 Cliente
Figura 4. Modelo de Arquitetura da aplicação cliente
Na aplicação cliente é utilizado o banco de dados orientado a objeto DB4O, onde são
persistidos os objetos até que eles sejam transferidos a aplicação servidora por meio da
camada de comunicação.
DB4O é um banco próprio para aplicações portáteis e nativo para o uso de
objetos e tem suporte nativo para Java. A aplicação cliente deve sempre entra em
contato com a aplicação servidora sempre que for necessário descarregar os objetos.
4. Conclusão
Neste artigo foi apresentado um modelo para construção de aplicações que necessitem
de coleta e processamento de forma assíncrona. A opção pela utilização das tecnologias
descritas mostrouse acertada, por facilitar a implementação e manutenção de
aplicações do tipo.
Na aplicação servidor o uso de um banco de dados relacional junto a aplicação
Java, mostrouse acertada pelo fato do grande uso desse tipo de banco, facilitando assim
a construção ou aperfeiçoamento de um sistema já existente.
Na aplicação cliente o uso do DB4O junto à aplicação mostrouse muito
importante, não deixando o cliente totalmente dependente do servidor, alem de
facilitar a manutenção do sistema, alem de possuir um melhor desempenho.
Referências
Battisti, Julio. (2006) tutorial TCP/IP parte 11 – TCP, UDP e Portas de Comunicação
disponível em <http://www.juliobattisti.com.br/artigos/windows/tcpip_p11.asp>
acessado em 18/05/09.
Colouris, George. (2007) Sistemas distribuídos: conceitos e projeto.4 .ed. Porto Alegre:
Bookman.
Linhares, Mauricio Introdução ao hibernate 3 disponível em
<http://www.guj.com.br/content/articles/hibernate/intruducao_hibernate3_guj.pdf>
acessado em 17/05/09.
Monteiro, Eduardo(2006) db4o : Banco OO disponível em
<http://imasters.uol.com.br/artigo/5056/bancodedados/db4o_banco_oo> acessado em
19/05/09
Informações db4o disponível em <http://www.db4o.com/portugues/> acessado em
19/05/09.