Principais Aplicativos de Socket
Daniel Tenório dos Santos
Sistemas de Informação – Faculdade Estácio de Alagoas.
Sistemas de Informação – Faculdade Estácio de Alagoas.
daniel.azimute@gmail.com
O avanço
da tecnologia na utilização de socket contribuiu para a melhoria no desempenho
das aplicações desenvolvidas nos dias atuais. Disponível através de componentes
em vários frameworks, o socket tem facilitado a comunicação entre aplicações,
de forma até transparente para o usuário e em algumas aplicações, chegam a ser
atualizadas de maneira que, a funcionalidade dos sistemas não sejam
interrompidas e os usuários não chegam a perceber essas operações que são
realizadas de forma real.
1. Introdução
No processo de
software, existe a comunicação, o socket permite isso de forma a ser
indispensável nos sistemas distribuídos, pois existe uma ligação entre os
processos do servidor com o cliente. Um socket é a interface entre a camada de
aplicação e a de transporte. [01]
Nas aplicações desenvolvidas, cliente e
servidor podem estar em máquinas diferentes e distantes. Através de protocolos, eles se comunicam e trocam
mensagens, os serviços via socket são implementados em
protocolos TCP e UDP.[01]
Para uma conexão ser
estabelecida, um programa cliente deve:
- Abrir um socket;
- Abrir um stream de entrada e um stream de saída para o socket;
- Dependendo do servidor, pode ler e escrever por meio dos streams segundo o protocolo;
- Fechar o stream;
- Fechar o socket.
Neste artigo, veremos
os principais sockets e em alguns, suas vantagens e desvantagens.
2. Socket na Aplicação TCP
Quando o cliente
conecta o servidor, o processo no servidor deve estar executando antes da
solicitação do cliente, que já aceita o socket disponibilizando uma porta de
comunicação. [01]
Nessa comunicação é
especificado o endereço IP e o número da porta do servidor e quando ele é
contactado é criado um novo socket para a comunicação com o cliente, com isso,
fica liberado uma nova comunicação para um novo cliente que deseje fazer a
conexão, na aplicação, a conexão TCP é um fluxo de dados onde as mensagens são
fragmentadas em pacotes, sem duplicação, isso garante a entrega e a ordem dos
pacotes, os pacotes são organizados porque são encaminhado através de uma
tubulação virtual, com isso, não é necessário que as cadeias de bytes contenham
IP e número da porta.[01]
3. Socket na Aplicação UDP
Também, torna-se
possível a comunicação entre processos UDP nessas aplicações. O UDP é um serviço
e sem conexão.[01]
Para tornar possível a conexão, é necessário incorporar o endereço IP ao conjunto de bytes enviados, também dever ser informado a porta de comunicação. Todo esse conjunto recebe o nome de pacote e o socket é responsável por colocar na rede esse pacote, por ser um serviço sem conexão, o UDP não garante de que o pacote realmente chegará ao seu destino.
Lado Cliente:
[05].O cliente sabe o
nome do servidor e a porta que o servidor está escutando, o cliente também tem
que se identificar ao servidor, estabelecendo uma porta local usada durante a
conexão. Tudo isso é destinado pelo sistema.
Figura 1. Solicitação
do cliente.[05]
Lado Servidor:
O Servidor aceita a conexão criando um novo socket para a mesma porta local e se conecta ao endereço e
porta do cliente através de um canal de comunicação. É necessário um
novo socket porque ele precisa continuar escutando os pedidos de conexão
enquanto atende as necessidades do cliente. Conforme figura 2.[05]
Figura 2. Canal de
comunicação entre cliente e servidor.[05]
4. DCE/RTC
Desenvolvido na Década
de 90, iniciou a parte de utilização de socket para transmissão remota de
procedimentos através de linguagem de programação.
Possui uma linguagem
própria de definição de interfaces e foi a primeira ferramenta que permitia ser
colado procedimentos remotos em servidores diferentes, através de programa
principal instalado no servidor, era possível instalar partes de procedimentos
em outros servidores e remotamente fazia locação para eles, antes nenhuma outra
ferramenta tinha esses recursos.
4.1. Característica
Pose ser executada em protocolo TCP/IP;
Roda em Servidores Windows
e Linux, para o Linux é necessário o Samba.
5. MSRPC
É o DCE/RTC com
recursos mais avançados, incorporou uma linguagem de desenvolvimento própria da
Microsoft, permite que os componentes sejam incluídos nas interfaces de
desenvolvimento, tornando o socket parte da aplicação através de componentes,
porém, não é multiplataforma, só roda no
Windows.
6. CORBA
Em uma arquitetura de
requisição de objetos, o foco principal não são os procedimentos e sim os
objetos. O Delphi é um exemplo que possui um componente do CORBA.
O socket cria um Proxy
em modo runtime, isso significa que quando a aplicação distribuída que foi
desenvolvida utilizando algumas linguagens de programação, detecta que um
objeto está sendo invocado e não existe um proxy especifico para este fim,
automaticamente, é gerado outro socket em modo de execução, tudo isso é realizado
na medida em que a aplicação está sendo executada, ou seja, em modo runtime.
6.1. Vantagens
A principal vantagem é
que não corremos risco de ter uma requisição negada por falta de Proxy, se a
aplicação servidora não possuir esse recurso não será possível estabelecer a
conexão, pois os serviços serão negados.
6.2. Desvantagens
É runtime, então o
consumo de recursos da aplicação é igual, pois ele vai criar um proxy para cada
cliente que chamar. Ao invés de utilizar o proxy de outra camada de software que
estão gerenciando a aplicação distribuída, que isso economizaria memória e
processamento na máquina, ele vai gerar um proxy dentro da aplicação para cada
requisição, então quanto mais requisições forem feitas mais lento ficará a
execução da aplicação.
Como é feita essa
chamada?
Para cada chamada remota é criado um vinculo entre cliente e servidor e a troca dessas informações acontecem através de RTC, o proxy é um gerente de todas essas chamadas remotas, geralmente tudo isso é fornecido pelo sistema operacional ou por uma camada de software encarregada de gerenciamento, mas o CORBA, se encontrar o Proxy ele faz uso e a aplicação fica livre dessa tarefa. O CORBA garante que as requisições sejam sempre aceitas porque se ele não detectar um proxy padrão, ele cria um dentro da aplicação.
O CORBA é multiplataforma.
7. COM/DCOM
A Microsoft possui
dois tipos de software distribuídos, um deles é totalmente orientado a objetos
que foi modificado através do DCE/RPC.
Através de um arquivo
de parâmetros é possível dar suporte a objetos que utiliza índices, esses
índices ficam nesses arquivos que chamamos de arquivos de parâmetros globais, é
possível fazer alterações nesses parâmetros.
Existe camada de
transporte compatível com RPC, como é utilizada a mesma camada de transporte,
não foi necessário criar outra para comunicação entre eles. No desenvolvimento
desse socket a camada de transporte foi mantida e os outros recursos foram
refeitos ou aprimorados.
7.1. Desvantagem
Por ser da Microsoft,
só funciona em
Servidores Windows.
8. JAVA RMI
Dispositivo RPC criado
pela SUN exclusivamente para o JAVA, enquanto os outros utiliza biblioteca
dinâmica o RMI é uma Classe, pode ser implementada em qualquer aplicação JAVA.
8.1. Vantagem
Por ser uma classe
podemos implementar em aplicação que não seja distribuída, permite importar uma
classe de outra aplicação.
É multiplataforma.
9. SOAP
Foi implementado pelo
W3C que é um padrão próprio através de computação distribuída, pode ser
utilizado com qualquer software.
Ele gera em sua
própria arquitetura um envelope permitindo troca de mensagens, cria também regras
específica para que as mensagens sejam codificadas, também cria um modelo para
que essas mensagens sejam trocadas, ainda implementa um mecanismo de chamada
remota de procedimentos independente da linguagem de programação.
Qualquer que seja a
linguagem, os mecanismos são independentes da linguagem, com isso temos uma
plataforma de programação independente. Só estabelece meios de comunicação, sem
muitos recursos.
9.1 Vantagens
É Multiplataforma;
Permite implementar
troca de mensagens distribuídas em sistemas pervasivos.
10. UDDI
È um mecanismo de
registro para que clientes localizem serviços que são implementados por um
servidor web.
Como isso acontece?
Um servidor registra
informações sobre serviços disponíveis, os clientes fazem contatos com esses registros
e localizam o serviço que é do seu interesse, e dependendo, pode utilizar tudo
isso com outro middleware. O UDDI é multiplataforma.
11. XML
Não é um
middleware, mas ele se
integra aos middleware por ser uma linguagem de marcações extensiva, estabelece
um padrão de troca de mensagens e formato de dados.
É fornecido uma
representação de dados padrão de alto nível entre outros componentes RPC, é
usado muito para trocar mensagem de uma aplicação para outra através do padrão
XML.[02]
Hoje é utilizado muito
em Notas
Fiscais Eletrônicas e Banco de Dados, podemos ter várias
linguagens de programação diferentes mas que conseguem trocar alguns tipos de
informações, a atual geração baseada em XML é o XHTML onde os comandos podem
ser usados ao longo do website como se eles fossem comandos HTML padrões.[02]
12. Referencias
[01].WIKIVERSIDADE.Introdução às
Redes de Computadores/Programação com
Sockets. Disponível em:
<http://pt.wikiversity.org/wiki/Introdu%C3%A7%C3%A3o_%C3%A0s_Redes_de_Co
mputadores/Programa%C3%A7%C3%A3o_com_sockets>. Acesso em: 06 de junho
de 2011.
[02].blogspot.com.XML – Linguagem de Marcação Extensiva. Disponível
em: <http://o-que-quer-dizer.blogspot.com/2008/06/xml-linguagem-de-marcacao-extensiva.html>
Acesso em: 06 de junho de 2011.
[03].MONNERAT, Nelson. Sockets.
Disponível em: <http://nmonnerat.br.tripod.com>.
Acesso em: 05 de junho de 2011.
[04].HENRIQUE, Carlos. Comunicação Entre Processos. Disponível em: <
http://pt.scribd.com/doc/55774976/5-Comunicacao-entre-Processos>.Acesso em:
05 de junho de 2011.
[05].NUNES. Leonardo R.
.Sockets em Java.
Disponível em: <http://www.riopomba.ifsudestemg.edu.br/dcc/dcc/materiais/1089335456_PAPER%204%20-%20Sockets%20em%20JAVA.pdf>. Acesso em 13/06/2011
Disponível em: <http://www.riopomba.ifsudestemg.edu.br/dcc/dcc/materiais/1089335456_PAPER%204%20-%20Sockets%20em%20JAVA.pdf>. Acesso em 13/06/2011


Comentários