Escolar Documentos
Profissional Documentos
Cultura Documentos
Fundamentos de Cliente-Servidor PDF
Fundamentos de Cliente-Servidor PDF
SUMRIO
1 - INTRODUO 1
2 - ARQUITETURA CLIENTE/SERVIDOR 1
2.1 - VANTAGENS 3
2.2 - DESVANTAGENS 3
2.3 - MODELOS DA ARQUITETURA CLIENTE / SERVIDOR 4
2.3.1 - Arquitetura C/S Simples 4
2.3.2 - Arquitetura C/S em Dois Nveis 4
2.3.3 - Arquitetura C/S Multinvel 5
2.3.4 - Arquitetura C/S Par-Par 6
3 - ALGUNS TIPOS DE PROCESSOS NUMA ARQUITETURA CLIENTE/SERVIDOR 6
3.1 - PROCESSAMENTO DISTRIBUDO 7
3.2 - CAMADAS DA ARQUITETURA CLIENTE / SERVIDOR 9
3.2.1 - Sistema de Trs Camadas para a Aplicao 12
3.2.1.1 - Apresentao Distribuda 13
3.2.1.2 - Apresentao Remota 14
3.2.1.3 - Lgica Distribuda 14
3.2.1.4 - Gerenciamento de Dados Centralizado 15
3.2.1.5 - Gerenciamento de Dados Distribudos 15
4 - REDES DE COMPUTADORES 16
4.1 - PROTOCOLOS 16
4.1.1 - O Modelo de Referncia OSI/ISO 17
4.1.2 - TCP/IP 18
4.2 - ASPECTOS DE CONEXO 20
4.3 - ASPECTOS DE SINCRONISMO E PASSAGEM DE MENSAGEM 21
4.4 - CONEXO TCP/IP 22
4.5 - SOCKETS 25
4.5.1 - Interfaces de Comunicao utilizando Sockets 28
5 - BANCOS DE DADOS ORIENTADOS A OBJETOS 30
5.1 - INTRODUO 30
5.2 - ALGUNS SGBDOOS E SUAS VERSES CLIENTE/SERVIDOR 31
5.2.1 - SGBDOO O2 31
5.2.2 - SGBDOO GemStone 32
5.2.3 - SGBDOO POET 33
6 - CONCLUSO 34
REFERNCIAS BIBLIOGRFICAS 35
1
Fundamentos da Arquitetura Cliente/Servidor
1 - Introduo
Este relatrio tem por objetivo mostrar as caractersticas tcnicas que envolvem a
Arquitetura Cliente/Servidor, desde a sua concepo terica at a implantao da
comunicao entre Cliente e Servidor por meio de uma biblioteca de Sockets.
No item 2 ser definido a parte terica da Arquitetura Cliente/Servidor bem como
alguns aspectos de definio desta arquitetura, alm de mostrar os modelos existentes para
implantao desta arquitetura. Em 3 sero mostrados alguns tipos de processamentos
existentes, porm enfocando o processamento distribudo. Em 4 sero vistos os conceitos
bsicos sobre Rede de Comunicao, enfatizando o protocolo TCP/IP e a biblioteca de
Sockets. Em 5 so apresentadas as caractersticas tcnicas de alguns SGBDOOs numa
arquitetura Cliente/Servidor. Finalmente, em 6, feita uma breve concluso com respeito ao
modelo de arquitetura apresentado.
2 - Arquitetura Cliente/Servidor
Cliente
Cliente, tambm denominado de front-end e WorkStation, um
processo que interage com o usurio atravs de uma interface grfica ou
no, permitindo consultas ou comandos para recuperao de dados e
anlise e representando o meio pela qual os resultados so apresentados.
Alm disso, apresenta algumas caractersticas distintas:
o processo ativo na relao Cliente/Servidor.
Inicia e termina as conversaes com os Servidores, solicitando servios
distribudos.
No se comunica com outros Clientes.
Torna a rede transparente ao usurio.
Servidor
Tambm denominado Servidor ou back-end, fornece um determinado
servio que fica disponvel para todo Cliente que o necessita. A natureza e
escopo do servio so definidos pelo objetivo da aplicao
Cliente/Servidor. Alm disso, ele apresenta ainda algumas propriedades
distintas:
o processo reativo na relao Cliente/Servidor.
Possui uma execuo contnua.
Recebe e responde s solicitaes dos Clientes.
No se comunica com outros Servidores enquanto estiver fazendo o papel
de Servidor.
Presta servios distribudos.
Atende a diversos Clientes simultaneamente.
2
! Servidor de Fax
! Servidor X-Windows
! Servidor de Processamento e Imagens
! Servidor de Comunicao e etc.
2.1 - Vantagens
Confiabilidade
Se uma mquina apresenta algum problema, ainda que seja um dos Servidores,
parte do Sistema continua ativo.
2.2 - Desvantagens
Manuteno
As diversas partes envolvidas nem sempre funcionam bem juntas. Quando algum
erro ocorre, existe uma extensa lista de itens a serem investigados.
3
Ferramentas
A escassez de ferramentas de suporte, no raras vezes obriga o desenvolvimento
de ferramentas prprias. Em funo do grande poderio das novas linguagens de
programao, esta dificuldade est se tornando cada vez menor.
Treinamento
A diferena entre a filosofia de desenvolvimento de software para o
microcomputador de um fabricante para o outro, no como a de uma
linguagem de programao para outra. Um treinamento mais efetivo torna-se
necessrio.
Gerenciamento
Aumento da complexidade do ambiente e a escassez de ferramentas de auxlio
tornam difcil o gerenciamento da rede.
CLIENTE
SERVIDOR
4
CLIENTE CLIENTE CLIENTE
SERVIDOR
CLIENTE
Nesta arquitetura (figura 3), permite-se que uma aplicao possa assumir tanto o
perfil do Cliente como o do Servidor, em vrios graus. Em outras palavras, uma
aplicao em alguma plataforma ser um Servidor para alguns Clientes e,
concorrentemente, um Cliente para alguns Servidores.
CLIENTE
SERVIDOR
5
2.3.4 - Arquitetura C/S Par-Par
Esta arquitetura pode ser vista como o caso mais geral da arquitetura
Cliente/Servidor, ilustrado na figura 4. Cada um dos nodos desta arquitetura assume
tanto o papel de Cliente quanto de Servidor. Na verdade, torna-se pouco funcional lidar
com quem o Cliente ou o Servidor. o caso onde o processo interage com outros
processos em uma base pareada, no existindo nenhum Mestre ou Escravo: qualquer
estao de trabalho pode iniciar um processamento, caso possua uma interface de
comunicao entre o usurio e o processo Cliente.
CLIENTE CLIENTE
SERVIDOR SERVIDOR
Processamento Distribudo
A distribuio de aplicaes e tarefas se faz atravs de mltiplas plataformas
de processamento. O processamento distribudo implica que essas
aplicaes/tarefas iro ocorrer em mais de um processo, na ordem de uma
transao a ser concluda. Em outras palavras, o processamento distribudo
atravs de duas ou mais mquinas e os processos, na maioria, no rodam ao
mesmo tempo, por exemplo, cada processador realiza parte de uma aplicao
em uma seqncia. Geralmente, o dado usado em um ambiente de
processamento distribudo tambm distribudo atravs de plataformas.
Processamento Cooperativo
A cooperao requer dois ou mais processadores distintos para completar uma
simples transao. O processamento cooperativo relatado para ambos os
processos cliente-servidor. uma forma de computao distribuda onde dois
6
ou mais processadores distintos so requeridos para completar uma simples
transao de negcios. Normalmente esses programas interagem e executam
concorrentemente como diferentes processos. Os processos cooperativos
tambm so considerados como um estilo de Cliente/Servidor atravs da
arquitetura de mensagens, que devem obedecer a um determinado padro.
Processamento Cliente-Servidor
Cliente Servidor
Aplicao Aplicao
Hardware Hardware
7
Modelo de Distribuio de
Processos
Apresentao Apresentao Apresentao Apresentao Apresentao
Gerncia de
Dados
Apresentao
Processamento Distribudo
Processamento
Processamento Processamento
Centralizado Distribudo
A B C
8
Caractersticas do Processo Peer-to-Peer (no hierrquicos):
So processos clones rodando em todas as mquinas e prestando servios uns
para os outros.
No existem processos servidores, estabelecendo um Servidor dedicado.
Cada processo pode ser Cliente e Servidor para outros processos.
A A
A B
Aplicao
Servios do
Sistema
Hardware
9
Figura 8 - Trs Camadas da Arquitetura Cliente/Servidor
A tecnologia Cliente/Servidor pode existir tanto no nvel da camada de Aplicao,
quanto no da camada de Servios do Sistema. A coexistncia do paradigma nestas camadas
surge em funo da hierarquia das atuaes no sistema. Caso o usurio seja externo ao
sistema, ento os processos Cliente e Servidor compem a camada da Aplicao, enquanto
que, se o usurio for um programa de aplicao o Cliente um processo redirecionador, e o
Servidor ser um processo respondedor da camada de Servios do Sistemas.
A utilizao de sistemas Cliente/Servidor pela camada de aplicao utiliza Servios do
Sistema no Cliente/Servidor (figura 8), entretanto, sistemas no Cliente/Servidor, ao nvel da
aplicao utilizam Servios do Sistema Cliente/Servidor (RENAUD,1994).
Para sistemas Cliente/Servidor na camada de aplicao, a camada Servios do Sistema
oferece somente um mecanismo de IPC (InterProcess Comunication) para troca de
mensagens. Por outro lado, a camada Servios do Sistema configurada como Cliente/Servidor,
responsvel por gerenciar o redirecionamento das solicitaes de gravao/leitura, por
exemplo. importante notar que a diferena entre os sistemas Cliente/Servidor nas camadas
de Aplicao e Servios do Sistema, o equilbrio entre a quantidade de processamento tanto
no lado do Cliente quanto no lado Servidor.
Existem vrios sistemas que podem ser baseados na estrutura Cliente/Servidor. O uso
mais freqente so as aplicaes de Banco de Dados usando processos SQL (Structured Query
Language) de front-end, para acessar remotamente, as bases de dados.
A figura 9 mostra uma estrutura baseada num Servidor de Arquivos. Esta estrutura
ocasiona um maior fluxo de informaes na rede, uma vez que todo o arquivo ser transferido
para o Cliente para ento ser trabalhado.
10
O Cliente, neste tipo de estrutura o usurio, passando a ter uma viso da aplicao
como se as partes, Cliente e Servidor, fossem algo nico. A figura 11 exemplifica esta viso.
Aplicao
Gerenciador de
API do Gerenciador de Banco de Dados
Banco de Dados
Hardware Hardware
Hardware Hardware
12
Modelo de Distribuio de
Processos
Apresentao Apresentao Apresentao Apresentao Apresentao
Gerncia de
Dados
Apresentao
Apresentao Distribuda
Revamping Simples
Consiste em habilitar as telas de modo grfico das aplicaes centralizadas com
dilogos em modo grfico. Cada mapa de tela, gerado corresponde a uma janela
de interface grfica.
13
Revamping Evoludo
Este tipo no emite simplesmente uma rplica grfica da janela a ser criada de
uma aplicao no grfica. Constri uma aplicao inteiramente nova,
inteiramente diferente da aplicao original. Assim, um dilogo na nova
aplicao pode representar um empilhamento de vrias janelas da aplicao
centralizada.
Revamping Modificado
Este terceiro tipo se deriva do segundo, porm com o fato interessante de se
poder manipular a aplicao centralizada instalando sistemas grficos, visando
retirar o melhor de sua performance.
Apresentao
Lgica de Negcio
Gerncia de Dados
Rede
Gerncia de Dados
Gerenciamento de Dados
Distribudos
Fonte: Gartner Group
15
Outro ponto muito importante a ser verificado o gerenciamento da concorrncia entre
processos, quase sempre a cargo dos Sistemas Operacionais das plataformas, tais como o
Windows NT e o UNIX (CUSTER,1993) (PHAM,1996), (TANENBAUM,1995). O trabalho
de gerenciamento para o compartilhamento dos dados se deve exclusivamente aos SGBDs.
Os tipos de arquiteturas apresentadas no so mutuamente exclusivas, mas sim
complementares. possvel fazer vrios tipos de associaes entre Servidores e Clientes,
dentro de uma rede de computadores.
A tabela 1 mostra um resumo das caractersticas de sistemas Cliente/Servidor.
4 - Redes de Computadores
4.1 - Protocolos
16
4.1.1 - O Modelo de Referncia OSI/ISO
Em maro de 1977, foi constitudo pela ISO um grupo de trabalho para estudar a
padronizao da interconexo de sistemas de computao. Foi definida, inicialmente, uma
arquitetura geral, denominada MODELO DE REFERNCIA OSI (Open System
Interconection), para servir de base para a padronizao da conexo de sistemas abertos
(TAROUCO,1986) (TANENBAUM,1996)
O modelo OSI possui sete camadas, como apresentado na figura 13. Cada camada
especifica um grupo especfico de tarefas de comunicao. A norma descreve o escopo
funcional de cada camada e os requisitos para a interface com as camadas adjacentes
(servios).
17
O modelo OSI/ISO especifica todas as primitivas de comunicao para que haja troca
de mensagens entre as camadas (AMARAL,1993) (COMER,1993) (DUMAS,1995)
(RENAUD,1994) (TANENBAUM,1996). Cada camada adiciona um cabealho para que haja
uma identificao na mquina destino.
A figura 15 mostra os principais protocolos usados nas comunicaes Cliente /
Servidor baseados na Microsoft, Internet e IBM.
4.1.2 - TCP/IP
O TCP/IP distingue-se dos demais protocolos pelo seu endereamento universal. Cada
mquina em uma rede possui um endereo que a identifica. A camada TCP orientada
conexo, enquanto a camada IP trabalha sem conexo (COMER,1993) (DAVIS,1994)
(DUMAS,1995). Cabe camada IP o trabalho de distribuir os datagramas entre as mquinas
de uma rede. Para fazer este servio, ele possui um nico endereo de 32 bits que contm
informaes suficientes para identificar univocamente uma rede e um determinado
computador.
Este endereo comumente escrito em decimal de quatro bytes separados por um
ponto. Por exemplo:
11011111, 00000001, 00000010, 00000101, representaria o endereo 223.1.2.5.
Existem 5 classes onde estes endereos so divididos. A figura 16 mostra estas
classificaes.(QUINN,1996) (RENAUD,1994)
18
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Classe
A 0 ID da Rede ID do Host
B 1 0 ID da Rede ID do Host
C 1 1 0 ID da Rede ID do Host
D 1 1 1 0 Endereo de Multi-Transmisso
E 1 1 1 1 0 Reservado
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
19
4.2 - Aspectos de Conexo
A mensagem, que
dividida em vrios pacotes,
HOST 1
pode seguir caminhos
distintos, tanto do host 1 para
o host 2, quanto no sentido
inverso, podendo, inclusive,
chegar ao seu destino em
tempos diferentes, havendo
assim, a necessidade de
reordenao da mensagem
pela parte responsvel da
comunicao pela aplicao
do host de destino.
HOST 2 O outro tipo de
comunicao o baseado em
Figura 17 - Mensagem por Datagrama conexo, onde um circuito
prvio estabelecido antes
que a troca de dados se efetue. Quando um circuito estiver conectado, cada mensagem segue
uma seqncia e sempre direcionada ao longo do mesmo circuito (COMER,1993)
(DUMAS,1995) (QUINN,1996).
Logo, cada mensagem s precisa de um identificador de circuito para ser direcionada
para o seu destino. O recebimento de cada mensagem normalmente confirmado e, se for o
preciso, o controle de fluxo usado para regular a velocidade com que as mensagens so
enviadas.
A comunicao baseada em conexo, conforme apresentado na figura 18, garante a
transmisso das mensagens. Estas so tambm divididas em pacotes, sem perda para o
seqenciamento dos pacotes nos hosts destinos, diminuindo assim o trabalho de
implementao na parte de comunicao do aplicativo.
20
HOST 1 Quando a comunicao
finalizada, torna-se necessrio
desfazer a conexo para poder
liberar os recursos de rede
utilizados.
Deve-se notar que as
mensagens sempre chegam
ordenadas neste tipo de
conexo. Um exemplo de
comunicao baseado em
conexo o sistema telefnico.
HOST 2
A tabela 3 a seguir
compara os dois tipos de
comunicao.
Figura 18 - Mensagem baseada em conexo
Uma vez que a base de comunicao iria ser efetuada por meio de sockets, foi
estabelecido tambm que o protocolo de comunicao utilizado seria o TCP/IP, possibilitando
assim uma possvel conexo futura com a plataforma UNIX.
22
Para este desenvolvimento, a plataforma a ser utilizada o Windows NT 3.5 ou 3.51,
que apresenta a robustez necessria para os processos multitarefas. A escolha deste ambiente
tambm se deve ao fato dele suportar vrios tipos de protocolos para comunicao, entre eles
o TCP/IP (QUINN,1996).
A figura 20 mostra os protocolos de comunicao do Windows NT.
O protocolo TCP/IP o protocolo padro utilizado pela Internet, que possibilita a
interligao de diversas plataformas. Existem vrios servios que utilizam o protocolo
TCP/IP, entre eles pode-se encontrar o FTP, Telnet, E-mail, Ping e Finger, como pode ser
visto na figura 21, junto com sua referncia camada do modelo OSI/ISO.
Na camada de Transporte pode-se notar a existncia de dois padres, o TCP, que a
comunicao com conexo e o UDP, que a comunicao sem conexo, como j foi
mencionado anteriormente na seo 4.2. Para o desenvolvimento deste prottipo foi adotado o
padro TCP, onde o controle de erro e o seqenciamento dos pacotes das mensagens so
automaticamente tratados, o que no ocorre no padro UDP, necessitando que estes
tratamentos sejam desenvolvidos.
O padro TCP permite a abertura de uma conexo virtual entre a mquina fonte e a
destino em todas as camadas do modelo OSI/ISO.
4
TCP/IP DECNet NetBEUI Appletalk SPX/IPX
3
Driver de APIs padres
23
A Internet utiliza o padro UDP, uma vez que as comunicaes baseadas no protocolo
TCP/IP se utilizam de portas de comunicao que, associadas aos sockets, permitem a troca de
mensagens.
O protocolo TCP/IP disponibiliza 999999 portas (comprovao emprica), sendo que
as portas de nmero 0 at a porta de nmero 1023 so reservadas para servios pr-
determinados, como por exemplo a porta 23, para o servio Telnet, a porta 21 para o FTP, e
assim por diante. Devido a este limite, caso a Internet utilizasse o padro TCP, as mquinas
que respondessem a um nmero muito grande de acessos, acabariam limitando a sua
utilizao.
No padro UDP, por sua vez, quando existe uma solicitao de comunicao, o
endereo IP do remetente da mensagem segue junto com a mensagem para o destinatrio, de
forma que o disponibilizador do servio possa posteriormente enviar a resposta do servio
solicitado.
importante salientar que, para que as comunicaes transcorram normalmente, as
APIs no necessariamente precisam ser as mesmas, muito embora os protocolos devam ser os
mesmos, como pode ser visto na figura 22.
Funciona No Funciona
Cliente Servidor Cliente Servidor
Aplicao da Aplicao da Aplicao da Aplicao da
Rede Rede Rede Rede
API ( TLI) Winsock API Winsock API Winsock API
TCP/IP TCP/IP TCP/IP SPX/IPX
Os demais protocolos suportados pelo Windows NT, permitem a conexo com outros
tipos de plataformas, como pode ser visto na tabela 4.
Protocolo Plataforma
NetBEUI Microsoft
SPX/IPX Novell
Apple Talk Mcintosh
Tabela 4 - Demais protocolos do Windows NT
24
enquanto que o IPX, igual ao IDP, oferece um servio de datagrama, permitindo a conexo
entre mquinas do tipo PC que estejam rodando o Sistema Operacional de Rede da Novell
(RENAUD,1994).
Por sua vez, o protocolo Apple Talk permite a conexo com mquinas da plataforma
Macintosh, e um protocolo totalmente particular. Os principais protocolos usados por
mquinas Macintosh so os DDP - Datagram Delivery Protocol, ATP - AppleTalk
Transaction Protocol e ADSP - AppleTalk Data Stream Protocol (RENAUD,1994).
4.5 - Sockets
25
A sua verso mais recente o Winsock 2 (reviso 2.0.8 - 19/05/95). A verso 2.0 da
especificao do Windows sockets se associa a arquitetura que o Windows NT utiliza para
suportar mltiplos protocolos de fornecedores variados (QUINN,1996).
O Winsock API aumenta a funcionalidade dos sockets de Berkeley, ao acrescentar
extenses especficas do Windows para suportar a natureza orientada a mensagens do S.O.
baseado no Windows.
Todas as aplicaes que hoje em dia acessam a Internet diretamente da residncia do
usurio, usando FTP, E-mail, Finger, Telnet, SMTP, entre outros, utilizam os sockets como
base de comunicao, atravs do protocolo TCP/IP (ROBERTS,1995).
Os Sistemas Operacionais Windows NT e Windows 95 j possuem dentro de suas
bibliotecas, as rotinas para suportar a programao para o protocolo TCP/IP via sockets
(DAVIS,1994).
Para o ambiente Windows, o relacionamento entre as aplicaes e o ambiente de rede,
pode ser demonstrado na figura 23.
Aplicao 1 Aplicao n
Winsock.DLL
TCP/IP
Network card
26
Quando uma solicitao chega de
SERVIDOR CLIENTE um Cliente aps ativar a funo Connect(),
Socket() Socket() o Servidor cria um processo filho
mediante a funo Accept(), numa nova
Bind() porta TCP/IP. O pedido do Cliente
associado a esta porta, permitindo assim a
Listen() transferncia de dados pelas funes
Send()/Recv(), deixando, desta forma, a
Accept() Connect() porta original de conexo do Servidor livre
para efetuar novas conexes.
Send()/ Recv() Send()/ Recv() Ao trmino da comunicao, o
Cliente utiliza a funo CloseSocket() para
CloseSocket() CloseSocket()
fechar a conexo, liberando a porta do
processo filho do Servidor para ser ligada
Figura 24 - Conexo Stream
a outro processo de comunicao. O
Servidor s ir utilizar esta funo quando
for desligado.
Por sua vez, para uma comunicao sem
conexo, figura 25, a utilizao das funes de SERVIDOR CLIENTE
sockets tornam-se mais fceis de se implementar. Socket() Socket()
Porm, necessrio lembrar que a utilizao de
comunicao baseada em Datagramas determina Bind()
que as rotinas de recuperao das seqncias dos
pacotes entregues a rede devem ser programadas,
aumentando assim a possibilidade de falhas na
implantao do sistema.
A seqncia e as funes definidas para
uma conexo Datagrama so as mesmas da Send()/ Recv() Send()/ Recv()
conexo Stream, excluindo apenas as funes
CloseSocket() CloseSocket()
Listen(), Accept() e Connect(). Isto ocorre pelo
fato do protocolo baseado em Datagrama no
Figura 25 - Conexo Datagrama
utilizar uma conexo real entre as mquinas
origem e destino, implementando,
automaticamente dentro das funes de troca de
mensagens, Send()/Recv(), um cabealho com o endereo IP da mquina no qual ser feita a
comunicao.
Um ponto a ser observado, que, para a transmisso, tanto na funo Send() ou
Recv(), os sockets somente operam com dados do tipo Char.
Para a transmisso de dados puramente do tipo caracter, o sistema desenvolvido
baseado em sockets no impe nenhuma restrio. Entretanto, para sistemas desenvolvidos
sob o paradigma da Orientao a Objeto, que manipula tanto objetos simples, como
complexos ou longos, necessrio que, ao se transmitir, se faa uma converso da classe do
objeto para o tipo Char. No momento em que a informao chega ao seu destino, necessrio
que o receptor faa a reconverso, isto , do tipo Char para o tipo original do objeto.
Esta peculiaridade para a transmisso de dados de tipos diferentes de Char, faz com
que o destinatrio da mensagem possua o conhecimento prvio de todos os tipos possveis de
objetos que podem ser transmitidos.
27
4.5.1 - Interfaces de Comunicao utilizando Sockets
Pode-se notar que a interao da aplicao com o protocolo TCP/IP faz-se somente
pela API que o Windows sockets disponibiliza, minimizando assim maiores possibilidades de
gerao de erros.
Para que se estabelea uma comunicao no padro TCP, faz-se necessrio seguir uma
seqncia de operaes pr-definidas como ilustrado na figura 2.21. O diagrama de estado da
seqncia de conexo Stream Socket, pode ser visto na figura 27.
O Servidor deve ser sempre colocado no ar, antes de qualquer tentativa de
comunicao. Para esta abertura de conexo com sockets, necessrio que vrias funes da
biblioteca Winsock sejam chamadas.
A funo Socket define o socket, que um descritor a partir do qual a aplicao se
associar quando desejar transmitir uma mensagem. O Servidor, por sua vez, executa outras
duas funes que so disparadas em seqncia: a funo Bind, que associa o nmero de uma
porta com o endereo IP da mquina servidora, e a funo Listen, que fica escutando na
porta selecionada esperando que haja uma solicitao de conexo.
28
Quando a funo Connect for ativada pelo Cliente, uma solicitao de conexo para o
Servidor enviada e, caso a resposta a esta solicitao seja afirmativa, o Cliente e o Servidor
passam para o estado de conectado.
nomeado e
escutando
recebido requisio
de conexo
conexo fechamento
Bind() e
pendente pendente
Listen()
solicitao de
Accept() fechamento Closesocket()
Socket()
Connect() Closesocket()
abrir conectado socket
conexo (escrevendo) fechado
Uma vez estabelecida a conexo, a troca de mensagem passa a ser efetuada e a funo
Recv retira do buffer de leitura as informaes que foram trocadas entre o Cliente e o
Servidor. Caso no se consiga enviar alguma mensagem pela funo Send, por causa do
estouro da capacidade do buffer, os dados so armazenados e retransmitidos posteriormente.
Os dados OOB (Out-of_Band) possuem um nvel de prioridade de transmisso acima
dos outros dados. Isto possibilita uma alterao na seqncia a ser transmitida, porm esta
interferncia na seqncia fica transparente ao usurio.
Ao trmino da comunicao, o Cliente utiliza a funo CloseSocket para fechar a
conexo, liberando a porta do processo filho do Servidor para ser ligada a outro processo de
comunicao. O Servidor s ir utilizar esta funo quando ele for desligado.
Portanto, primeiro o Servidor posto no ar (1), em seguida o Cliente escolhe o nome
de Servidor e a porta no qual sera feita a conexo (2a) e solicita uma conexo (2b), quando a
conexo aceita, o Servidor cria um processo filho, numa nova porta TCP/IP (3), associando
o pedido do Cliente esta porta, permitindo assim a troca de mensagens (4), deixando a porta
29
original da conexo do Servidor livre para efetuar novas conexes, como pode ser visto na
figura 28.
(1) Servidor no ar
Porta 2450
(2 b) Solicitao de Conexo
Servidor
(2a) Cliente no ar
Nome do
servidor e Porta
(3) Criao 2450
Cliente
Processo Filho
Processo Filho
do Servidor
Porta 1111
Figura 28 - Criao de Processo Filho para a comunicao
Caso ocorra uma perda de conexo, tanto por parte do Cliente quanto pelo Servidor
sem antes ter sido efetuada a funo CloseSocket, quem ainda estiver no ar no poder
reutilizar a porta que estava sendo utilizada at que o seu fechamento se d de forma correta.
Para evitar que problemas desta natureza possam vir a ocorrer, necessrio o
desenvolvimento de uma funo de Time-out, de modo a proporcionar um nvel de segurana
ainda maior para as conexes.
A funo de Time-out fica checando se existe troca de informaes nas conexes
existentes, e permite que a funo CloseSocket seja ativada automaticamente ao se verificar a
inexistncia de qualquer tipo de troca de mensagem aps um determinado tempo,
possibilitando assim a otimizao das portas do protocolo TCP/IP.
5.1 - Introduo
30
A classificao dos Banco de Dados desde os relacionais (SGBDR) at os OO pode ser
vista na figura 29 (POET,1997).
Os SGBDOOs existentes tais como Versant, O2, Poet, GemStone, Itasca, entre outros,
j incorporam caractersticas de comunicao baseadas na arquitetura Cliente/Servidor.
SGBDR Puro SGBDR com um pouco BDO - Front End BDO Esttico BDO Ativo
de OO
para um BDR
O sistema O2 possui uma verso workstation e outra server, sendo que as duas verses
possuem quase a mesma interface. A principal distino na implementao: a verso
workstation monousurio, enquanto que o server multiusurio, possuindo total controle
nas aes com o disco. S atravs do server pode-se fazer acesso a qualquer tipo de
informao armazenada em disco (BANCILHON,1992).
O O2 constitudo por 8 mdulos funcionais em sua arquitetura. Entre eles pode-se
destacar o mdulo OM (Object Manager) que composto pelo COM (Complex Object
Manager), MPM (Message-Passing Manager), TM(Transaction Manager), CM (Clustering
Manager) e o IM (Index Manager).
O OM possui uma camada intermediria na qual gerencia o buffer de objetos (BM -
Buffer Manager) e a camada de comunicao (CM - Communications Manager). No server, o
gerente de comunicaes fica escutando as requisies das workstations e dispara o
processamento dos mdulos correspondentes.
O gerente de comunicao do O2 desenvolvido baseado em 4 critrios:
A simplicidade, que se traduz na portabilidade, conseguida pela escolha de
ferramentas bem definidas e o protocolo de comunicao utilizado para a conexo
entre Cliente e Servidor o TCP/IP.
A transparncia resulta no fato de que o usurio final no reconhece de onde as
informaes esto sendo obtidas.
A performance obtida pela otimizao do protocolo de comunicao que permite
a transferncia de objetos sem que resulte na criao de gargalos numa arquitetura
Cliente/Servidor.
Finalmente, a confiana, que obtida pelo mecanismo de deteco de falhas que
consegue prevenir o travamento do sistema por possveis finalizaes anormais dos
processos envolvidos na comunicao.
32
Figura 31 - Padronizao CORBA para a Comunicao de Objetos Distribudos
33
6 - Concluso
34
Referncias Bibliogrficas
13. (KHOSHAFIAN,1993) Khoshafian, Setrag Object Oriented Database, John Wiley &
Sons, Inc. , Canad, 1993.
35
15. (MARTIN,1994) Martin, James Princpios de Anlise e Projeto baseados em Objetos
Ed. Campus, Rio de Janeiro, 1994.
16. (MCKIE,1997) McKie, Stewart Everything you wanted to know about Client/Server
computing but were afraid to ask Eye on Technology,
http://www.duke.com/controller/Issues/DecJan/Clientse.htm
17. (MOURA,1997) Moura, A.M.C.; Freitas, Luciani et al; SIGO: Ambiente para
Desenvolvimento de Aplicaes No-Convencionais em Banco de Dados Relatrio
Tcnico, RT016/DE9/ABR97, IME, Rio de Janeiro, Abri/1997.
20. (PHAM,1996) Pham, Thuam Q. & Garg, Pankaj K. Multithreaded Programming with
Windows NT Prentice Hall, 1996.
22. (QUINN,1996) Quinn, Bob & Shute, Dave Windows Sockets Network Programming
Addison Wesley, 1996
24. (ROBERTS,1995) Roberts, Dave Developing for the Internet with Winsock Coriolis
Group Books, 1995.
26. (SALEMI,1993) Salemi, Joe. Banco de Dados Cliente/Servidor . IBPI Press, 1993.