Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente servidor
description
Transcript of Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente servidor
Desenvolvimento de Sistemas
Cliente/Servidor
UNICEUMADepartamento de Informática
Prof. Msc. Eduardo [email protected]
2
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
Componentes da Arquitetura Cliente / Servidor Conforme visto, a arquitetura Cliente/Servidor é
composta de dois componentes físicos que se comunicam através da rede A estação de trabalho do usuário O servidor (de banco de dados, de aplicação, de
arquivos, etc.) Para se estabelecer a comunicação entre esses
dois componentes são utilizadas várias camadas de software que são instaladas em cada componente físico
3
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
Componentes da Arquitetura Cliente / Servidor A estação de trabalho cliente deve ter, além da
aplicação final, vários outros elementos para acessar os recursos e serviços do servidor através de rede
CLIENTECLIENTE
AplicaçõesAplicações
Bibliotecas para
acesso ao servidor
Bibliotecas para
acesso ao servidor
SERVIDORSERVIDOR
ServiçosServiços
MIDDLEWAREMIDDLEWARE
Serviços EspecíficosServiços Específicos
Protocolos de ComunicaçãoProtocolos de Comunicação
SO de RedeSO de Rede
4
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
Componentes da Arquitetura Cliente / Servidor Os sistemas que rodam nos dois lados devem ser
organizados por meio de camadas de software que é logicamente, uma posição entre um alto nível – camada que consiste a interação do usuário com a aplicação – e a camada que fica abaixo do sistema operacional
Note que, logicamente, a camada do middleware estende máquinas múltiplas excedentes
5
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
Componentes da Arquitetura Cliente / Servidor Exemplo: Arquitetura Cliente / Servidor para um
servidor de Banco de Dados (SGBD) A arquitetura pode ser composta por três componentes
(camadas) Cliente Middleware Servidor
O cliente deve ter a aplicação final e outro componente (o Database Engine), para acessar a base de dados em um SGBD através de rede
6
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
Componentes da Arquitetura Cliente / Servidor Exemplo: Arquitetura Cliente / Servidor para um
servidor de Banco de Dados (SGBD)
CLIENTE
Sistema Operacional
CLIENTE MIDDLEWARE
SQL/APISQL/API
SERVIDOR
Sistema Operacional
SERVIDOR
NetBiosNetBios TCP/IPTCP/IP IPX/SPXIPX/SPX SNASNA
RPCRPC MensagensMensagens SegurançaSegurança
Transporte
Serv. DiretórioServ. DiretórioSOR
Serviços Específicos
Serv. DiretórioServ. Diretório
FerramentasDesenvolvimento
Aplicações
Banco de DadosBanco de Dados
Database EnginerDatabase Enginer
7
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
Componentes da Arquitetura Cliente / Servidor Exemplo: Arquitetura Cliente / Servidor para um
servidor de Banco de Dados (SGBD) Database Engine
biblioteca fornecida pelo fornecedor da ferramenta de desenvolvimento com o objetivo de fornecer uma forma única e transparente da aplicação acessar diferentes bases de dados Ex: BDE (Borland Database Engine)
8
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
Componentes da Arquitetura Cliente / Servidor Exemplo: Arquitetura Cliente / Servidor para um
servidor de Banco de Dados (SGBD) SQL Links
“Driver” fornecido também pelo fornecedor da ferramenta de desenvolvimento responsável pela comunicação do Database Enginer com uma base de dados específica
Sua principal característica é traduzir os comandos utilizados pelo Database Enginer para comandos conhecidos pela base de dados utilizada Ex.: SQL links para acessar Oracle, Sybase, MS SQL Server,
Interbase, etc.
9
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
Componentes da Arquitetura Cliente / Servidor Exemplo: Arquitetura Cliente / Servidor para um
servidor de Banco de Dados (SGBD) SQL Links
A aplicação pode optar por utilizar o padrão ODBC para acessar a base de dados, ao invés de utilizar SQL Links (acesso nativo)
Entretanto, o acesso feito pelos SQL Links ainda possui um desempenho superior em relação ao acesso feito via “driver” ODBC
10
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
Componentes da Arquitetura Cliente / Servidor Exemplo: Arquitetura Cliente / Servidor para um
servidor de Banco de Dados (SGBD) Client do Banco de Dados
API fornecida pelo fornecedor do SGDB e instalada na estação cliente para estabelecer a comunicação com o banco de dados
Nessa API se encontram as funções de acesso a base de dados
É também, responsável por utilizar um determinado protocolo de rede para encontrar o servidor de banco para que a aplicação possa acessá-lo enviando comandos e buscando os dados
11
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
Componentes da Arquitetura Cliente / Servidor Exemplo: Arquitetura Cliente / Servidor para um
servidor de Banco de Dados (SGBD) Client do Banco de Dados
API fornecida pelo fornecedor do SGDB e instalada na estação cliente para estabelecer a comunicação com o banco de dados
Nessa API se encontram as funções de acesso a base de dados
É também, responsável por utilizar um determinado protocolo de rede para encontrar o servidor de banco para que a aplicação possa acessá-lo enviando comandos e buscando os dados
12
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
Componentes da Arquitetura Cliente / Servidor Exemplo: Arquitetura Cliente / Servidor para um
servidor de Banco de Dados (SGBD) Protocolo de Rede
Softwares responsáveis pela transmissão dos dados pela rede entre a máquina cliente e o servidor
13
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
Arquitetura Cliente / Servidor Distribuição Vertical
Arquiteturas cliente/servidor multithread são a consequência da divisão de aplicações que rodam na interface do usuário, onde vários componentes são processados
Normalmente as diferentes partes correspondem diretamente com a organização lógica de aplicações, ou seja, em muitos ambientes de negócios, o processamento distribuído é equivalente à organização de uma aplicação cliente-servidor em uma arquitetura multithread
14
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
Arquitetura Cliente / Servidor Multithread Distribuição Vertical
Este tipo de distribuição é conhecido como distribuição vertical, que se caracteriza pelo fato de componentes diferentes se localizam logicamente em diferentes máquinas
15
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
Arquitetura Cliente / Servidor Multithread Distribuição Horizontal
Entretanto, a distribuição vertical não é o único caminho para a organização de aplicações cliente-servidor ,e em muitos casos nem é o mais interessante.
Nas arquiteturas modernas, é comum que a distribuição de cliente e servidores pode ser logicamente em componentes diferentes mas rodando numa mesma máquina.
Esta distribuição conhecida como distribuição horizontal
16
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
Arquitetura Cliente / Servidor Multithread Distribuição Horizontal
Nesse tipo de distribuição, um cliente ou um servidor pode ser fisicamente dividido em partes lógica, mas cada parte roda em sua própria máquina
17
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
Arquitetura Cliente / Servidor Multithread Distribuição Horizontal
Um exemplo de distribuição horizontal de um serviço web
18
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
Estrutura de uma aplicação Cliente / Servidor Como foi visto, o ambiente cliente servidor permite
que a aplicação seja distribuída entre dois componentes físicos A estação cliente O servidor de recursos/serviços
Entretanto, logicamente podemos identificar três camadas distintas dentro de uma aplicação Apresentação Lógica do Negócio Gerenciamento do Recurso/Serviço
19
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
Estrutura de uma aplicação Cliente / Servidor Camadas
20
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
Estrutura de uma aplicação Cliente / Servidor Camadas
Apresentação Composta por componentes responsáveis pela interação
da aplicação com o usuário final É responsabilidade dessa camada receber os dados e
comandos do usuário e devolver-lhe informações através de elementos visuais como consultas, gráficos, relatórios e etc.
21
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
Estrutura de uma aplicação Cliente / Servidor Camadas
Lógica do Negócio Parte da aplicação responsável por manter as regras de
negócio da empresa Essa camada recebe as informações da camada de interface
(Apresentação) e executa as operações e validações necessárias para enviá-los servidor
Da mesma forma, extrai as informações do servidor de acordo com as regras de negócio da aplicação e os envia para elementos da interface para que sejam exibidos
Portanto, essa camada é responsável em interligar a interface visual com o servidor, ou seja, é a parte funcional da aplicação
22
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
Estrutura de uma aplicação Cliente / Servidor Camadas
Gerenciamento do Recurso/Serviço Parte da aplicação responsável pelo acesso às
informações do servidor Como já foi visto anteriormente, grande parte dessa
camada é implementada pelo próprio servidor do recurso / serviço
23
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
Estrutura de uma aplicação Cliente / Servidor Camadas
Gerenciamento do Recurso/Serviço Vejamos o caso de um SGBD
Normalmente o acesso aos serviços é feito através de SQL Porém, é também necessário um conjunto de comandos para
enviar as sentenças SQLs e gerenciar a comunicação entre a aplicação e o servidor
Esses comandos se encontram em bibliotecas disponibilizadas pelos próprios fornecedores de banco de dados que são instaladas em cada estação de trabalho
Além disso cada fabricante de ferramentas de desenvolvimento fornece também métodos e componentes capazes de simplificar e tornar mais transparente o acesso aos diversos SGDBs
24
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
Estrutura de uma aplicação Cliente / Servidor Camadas
Vantagens da organização em camadas A divisão da aplicação nessas três camadas lógicas possibilita
a organização e padronização da codificação e construção da aplicação, além de proporcionar uma maior facilidade de manutenção e evolução para novas fases da arquitetura Cliente/Servidor
Como já foi visto, a tendência da arquitetura Cliente/Servidor é retirar cada vez mais parte do processamento da aplicação realizado pelas estações de trabalho clientes e centralizá-lo em servidores, provendo um melhor gerenciamento do processo e facilitando a evolução da funcionalidade que foi distribuída
25
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
Estrutura de uma aplicação Cliente / Servidor Camadas
Vantagens da organização em camadas A distribuição da aplicação em camadas lógicas possibilita
também que cada camada possa evoluir independente das outras desde que se mantenha a interface entre elas
Por exemplo, pode-se alterar as regras de negócio para atender as necessidades do mercado sem necessariamente ter que modificar a camada de interface ou a camada de gerenciamento de dados
Por outro lado, pode-se evoluir a apresentação para novas tecnologias como multimídia, sem precisar alterar as regras de negócio
26
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
Estrutura de uma aplicação Cliente / Servidor Camadas
Vantagens da organização em camadas Evoluções tecnológicas, como a distribuição da base de
dados na camada de gerenciamento de dados pode ser feita de forma transparente das demais camadas
Portanto, esses tipos de distribuição tornam as aplicações mais escaláveis para suportar futuras implementações possibilitando um tempo de vida muito mais longo
27
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
As características dos componentes Cliente / Servidor Clientes
É programa aplicativo arbitrário que se torna um cliente temporariamente quando for necessário acesso remoto, mas pode executar outros processamentos locais
É diretamente invocado por usuário e executa somente para uma sessão
Executa localmente em um computador pessoal
28
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
As características dos componentes Cliente / Servidor Clientes
Inicia ativamente a comunicação com um servidor Pode acessar múltiplos serviços quando
necessário, mas contata ativamente um servidor remoto de cada vez
Não exige hardware especial
29
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
As características dos componentes Cliente / Servidor Servidor
É um programa privilegiado de propósito especial dedicado a fornecer um serviço, mas pode tratar de múltiplos clientes remotos ao mesmo tempo
É automaticamente invocado quando um sistema inicializa e continua a executar ao longo de muitas sessões
Roda em um computador compartilhado
30
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
As características dos componentes Cliente / Servidor Servidor
Espera passivamente pelo contato de clientes remotos arbitrários
Aceita contato de clientes arbitrários, mas oferece um único serviço
Exige hardware poderoso e um sistema operacional sofisticado
31
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
A interação Cliente / Servidor Existem diversas formas de interação Cliente /
Servidor, permitindo que as informações fluam em ambas as direções
Em geral, clientes enviam as informações e o servidor responde
32
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
A interação Cliente / Servidor Porém outras formas de interações são possíveis
Um único computador da classe servidor pode oferecer múltiplos serviços ao mesmo tempo, um programa de servidor separado é necessário para atender cada serviço
A execução de muitos servidores em uma única máquina servidora é prática porque um servidor não consome muito recurso de processamento enquanto fica esperando uma chamada
33
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
A interação Cliente / Servidor Múltiplas cópias de um servidor para um único
serviço Um servidor capaz de atender várias solicitações ao
mesmo tempo para um mesmo tipo de serviço suporta concorrência
Na verdade, são executadas copias (threads) do mesmo programa aplicativo na mesma máquina para cada cliente solicitante
Esta técnica é muito importante para alguns serviços que transferem arquivos por exemplo
34
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
A interação Cliente / Servidor Servidor dinâmico
A maioria dos servidores concorrentes operam dinamicamente
Um servidor é construído para operar em duas etapas Primeiro para receber as chamadas ou requisições Segundo para responder as chamadas realizadas
O processo é simples, para cada solicitação recebida pela primeira etapa, a aplicação principal cria uma thread (cópia) de um servidor dedicado para atender aquela chamada
35
Desenvolvimento de Sistemas Cliente/Servidor – A estrutura dos sistemas Cliente / Servidor
A interação Cliente / Servidor Outras interações...
Um aplicativo cliente, pode fazer o contato com diversos servidores
Um aplicativo cliente não precisa ser restrito a um único servidor para buscar suas informações Ex: para busca de data e hora
Um servidor, pode executar outras tarefas, como ser clientes de outros servidores Ex: um servidor de BD querendo autenticar em um servidor
de Rede