Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente servidor

35
Desenvolvimento de Sistemas Cliente/Servidor UNICEUMA Departamento de Informática Prof. Msc. Eduardo Freire [email protected]

description

Desenvolvimento de Sistemas Cliente/Servidor

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