Você está na página 1de 8

Implementao de diferentes tecnologias para sistemas distribudos: Socket, RMI e XML-RPC

Resumo: Este artigo descreve o funcionamento de softwares que fazem uso de socket, demonstrando algumas possveis aplicaes que podem vir a serem executadas de forma distribuda, tendo como abordagem as seguintes ferramentas: socket TCP, socket UDP, socket RMI e socket XML-RPC. Sendo que todas as aplicaes foram desenvolvidas na linguagem Java. Abstract: This article describes the operation of software that make use of socket, showing some possible applications that may be executed in a distributed way, with the approach the following tools: TCP socket, UDP socket, socket and RMI socket XML-RPC. Since all applications have been developed in Java.

1. Introduo
Com o advento do conceito de tempo compartilhado foi o primeiro passo para a computao distribuda devido ao fato de prover dois importantes conceitos muito utilizados: compartilhamento simultneo de recursos por diversos usurios e o acesso a computadores localizados em lugares diferentes. O uso de sistemas distribudos tornou-se uma prtica comum nas organizaes que buscam compartilhamento de recursos, melhor comunicao e aumento de desempenho. Eles requerem que aplicaes executando em diferentes espaos de endereamento, potencialmente em mquinas diferentes, sejam capazes de trocar dados. Consistindo-se de um par de aplicaes que coexistem no servidor e no cliente que se comunicam entre si por meio de seus respectivos socket, podemos considerar que analogamente um socket a porta em uma residncia, ou seja o local por onde entra e saem os dados. Para demonstrar a utilizao foram desenvolvidas aplicaes que utilizam diferentes tecnologias, mas com o foco em aplicaes distribudas. Contudo, o trabalho baseia-se principalmente em aplicaes cliente/servidor usando tanto protocolo TCP quanto UDP, posteriormente utilizando a tecnologia RMI e XML-RPC.

2. Socket
Socket a interface entre a camada de aplicao e a de transporte dentro de uma maquina. Tambm denominado de interface de programao da aplicao API

(Application Programming Interface) entre a aplicao e a rede, ao criar uma aplicao de rede, a tarefa principal do programador e escrever tanto o cdigo tanto no programa cliente como para o programa servidor. Devendo obedecer s regras ditadas pelo RFC, para que o programa possa interagir, independente se um programador escrever a codificao para o programa cliente e um outro programador independente escrever uma codificao para o programa servidor. As aplicaes cliente-servidor que no obedecem necessariamente as nenhum RFC, so ditas aplicaes proprietrias, neste caso, um nico programador (ou equipe de programadores) criam ambos os programas cliente e servidor. As aplicaes socket podem ainda diferir quanto a sua implementao podendo fazer uso do protocolo TCP (Transmission Control Protocol) ou UDP (User Datagram Protocol), acrescentando s respectivas caractersticas dos protocolos a aplicao (como confiabilidade, apresentao em trs vias, agilidade, dentre outras) quando empregados.

3. Java RMI
O RMI (Invocao de Mtodo Remoto) uma tecnologia suportada pela plataforma Java que facilita o desenvolvimento de aplicaes distribudas. Ele utiliza o mecanismo que permite um objeto invocar um mtodo de outro objeto que existe em outro espao de endereamento. A invocao de mtodo remoto permite que um objeto executando sobre uma determinada JVM (Mquina Virtual Java) invoque mtodos sobre um objeto executando sobre outra JVM. RMI trata-se de uma soluo Java para implementar comunicao entre aplicaes distribudas orientadas a objeto. A composio bsica de uma aplicao que utiliza RMI constituda por dois componentes principais: cliente e servidor. O servidor disponibiliza os servios para serem acessados remotamente. O cliente, por sua vez, utiliza tais servios de acordo com sua necessidade. Desta forma, possvel que objetos em diferentes mquinas virtuais Java interajam entre si, independentemente da localizao fsica dessas mquinas. A tecnologia RMI foi disponibilizada a partir da verso 1.1 do Kit de Desenvolvimento Java (Java Development Kit - JDK), e sua Interface de Programao de Aplicao (Application Programming Interface - API) especificada no pacote java.rmi. Aplicaes distribudas orientadas a objeto apresentam trs caractersticas principais: localizao de objetos remotos, comunicao entre objetos remotos e definio de classes (dos objetos que so transmitidos).

4. XML-RPC
O Xml-RPC (RPC Remote Procedure Call), assim como java RMI, faz parte de uma famlia de protocolos de chamada de procedimento remoto, tendo seu surgimento na dcada de 80, ela possibilita que um programa chame um procedimento, mtodo ou funo que reside em um outro sistema, da mesma forma como se fosse parte da mesma aplicao. Esse mecanismo possibilita ao programador a invocao de procedimentos externos a sua aplicao, tornando a execuo de aplicaes de forma distribuda. Para o desenvolvimento da aplicao foi usada a verso 3.1.3 da biblioteca APACHE XMLRPC.

5. Aplicao 5.1 Calculadora - RMI


O programa desenvolvido faz o clculo de fatorial de um determinado nmero que fornecido pelo usurio da classe cliente e a execuo de operaes aritmticas (soma, subtrao, multiplicao e diviso). Primeiramente foi programada a classe chamada de Calculadora que contm a interface que define todas as funcionalidades remotas oferecidas pelo servio, com os referidos mtodos: calculaFatorial, calcularSoma, calcularSubtrao, calcularDivisao e calcularMultiplicao, como pode ser observado no cdigo abaixo.

public interface Calculadora extends java.rmi.Remote { public int calculaFatorial(int a) throws java.rmi.RemoteException; public double calculaSoma(double x, double y) throws java.rmi.RemoteException; public double calculaSubtracao(double x, double y) throws java.rmi.RemoteException; public double calculaDivisao(double x, double y) throws java.rmi.RemoteException; public double calculaMultiplicacao(double x, double y) throws java.rmi.RemoteException; }

Na classe chamada de CalculadoraImp ela ir implementar os mtodos da classe Calculadora recebendo os dados do cliente. Na classe CalculadoraCliente criado um objeto para obter os mtodos da classe Calculadora e assim o usurio poder inserir um valor para fatorial ou dois valores no

caso em operaes aritmticas para que posteriormente possa ser feito o clculo. A classe CalculadoraServidor cria o servidor no ip especificado e cria um objeto remoto que ser repassado para o mtodo rebind que far o clculo a partir do valor obtido do cliente. A figura 1 mostra a interface da aplicao.
import java.rmi.Naming; public class CalculadoraServidor { public CalculadoraServidor() { try { Calculadora obj = new CalculadoraImp(); Naming.rebind("//localhost/Calculadora", obj); } catch (Exception e) { System.out.println("Erro: " + e); } } public static void main(String[] args) { new CalculadoraServidor(); } }

Figura 1 aplicao RMI - Calculadora

5.2 Servidor DNS UDP


Para esta aplicao foram criadas somente duas classes distintas sendo que a classe ServidorDNSUDP ira traduzir os nomes em endereos IPs, inicialmente com estado listen aguardando uma solicitao do cliente, sua porta de escuta ser a 9876 ela

contem uma lista de IPs fictcios onde ela ira somente traduzir os nomes, infelizmente ela no pode redirecionar a solicitao a outro tradutor de nomes,sua lista de traduo de nomes ser baseada no seguinte vetor:
listIPAddress[0] listIPAddress[1] listIPAddress[2] listIPAddress[3] listIPAddress[4] = = = = = "168.134.150.93" /* Google */; "192.111.190.160" /* ufpa */; "190.192.220.234" /* globo*/; "195.230.50.187" /* cinepolis */; "222.170.250.45" /* facebook */;

A segunda classe chamada DNSQuery e a parte cliente da aplicao onde o cliente ter que fornecer a URL como consulta para que possa ser traduzido com base na lista de classe ServidorDNSUDP. A figura 2 apresenta a tela de uso da referida aplicao.

Figura 2 Servidor DNS UDP

5.3 Socket TCP Suporte para laboratrio de informtica.


Para implementao de um socket que oferecesse um servio confivel foi desenvolvida uma aplicao voltada ao suporte de um laboratrio de informtica onde o usurio/cliente, pode por meio software, comunicar possveis irregularidades em equipamentos de hardware existentes no laboratrio. Com isso o apoio tcnico (servidor de servios) poder manifestar uma posio em relao a solicitao de atendimento, tendo em vista um conhecimento prvio do possvel problema a ser solucionado. A aplicao tambm gera um log, no formato arquivo de texto, onde fica descrito todas as solicitaes de suporte. Esse arquivo salvo no seguinte diretrio C:\\Diretorio

de solicitaes do suporte de computadores. No que diz respeito ao funcionamento da aplicao o servidor ao ser iniciado permanece em estado listen na porta 7896. A aplicao tambm oferece uma interface intuitiva propiciando uma fcil usabilidade para o usurio. A figura 3 ilustra a interface da aplicao desenvolvida usando o protocolo TCP.

Figura 3 Suporte para laboratrio de informtica

Nesse trecho do cdigo fica exemplificado a criao da classe Servidor, que passa a escutar na porta 7896 partir do momento que iniciado, e tambm cria um diretrio em disco caso no exista um com o nome referenciado.

public class Servidor { public static void main(String[] args) { int serverPort = 7896; String caminhoDiretorioDeSolicitacoes = "C:\\Diretorio de solicitacoes do suporte de computadores" + File.separator; File diretorioDeSolicitacoes = new File(caminhoDiretorioDeSolicitacoes); if (!diretorioDeSolicitacoes.exists()) { diretorioDeSolicitacoes.mkdir(); System.out.println("Diretrio criado com sucesso"); } try { ServerSocket listenSocket = new ServerSocket(serverPort);

5.4 XML RPC

A aplicao desenvolvida que utiliza XML-RPC oferece ao cliente a possibilidade de executar as quatro operaes aritmticas (soma, subtrao, multiplicao e diviso) e o calculo fatorial de um nmero inteiro fornecido pelo usurio/cliente, como mostrado anteriormente na implementao do RMI. A diferena e que na aplicao RMI o acesso a objetos remotos feito via um objeto de referncia (stub), j na aplicao XML-RPC implementa WebService. A figura 4 demonstra a interface de uso da referida aplicao.

Figura 4 Calculadora XML-RPC

6. Consideraes finais.
As aplicaes demonstram claramente a vasta utilizao de diferentes tecnologias no que diz respeito a sistemas distribudos, a tecnologia a se empregar depende unicamente do foco do desenvolvedor em termos de aplicao final. Com isso as diferenas existentes entre elas so pontos relevantes e determinsticos na escolha do mecanismo a ser empregado as aplicaes.

7. Referncias
http://www.inf.pucrs.br/~gustavo/disciplinas/sd/material/Artigo_RMI_Conceitual.pdf. Acesso em 08/04/2012. http://www.deinf.ufma.br/~fssilva/graduacao/sd/aulas/java_rmi.pdf. 08/04/2012 http://www.inf.ufsc.br/~bertoni/sistemas/aulas/MWOD.pdf. Acesso em 12/04/2012 Integrao Simples com XML-RPC, Revista Java Magazine edio 50. Acesso em

http://xmlrpc.scripting.com/default.html. Acesso em 04/04/2012 TANEMBAUM, A. Redes de Computadores. 4 Ed. PHB, 2003. KUROSE, James F. and ROSS, Keith W. Redes de computadores e a internet: uma abordagem top-down; traduo Opportunity translation; reviso tcnica Wagner Zucchi. 5 ed. So Paulo: Addison Wesley, 2010.