DS+Cliente+Servidor-+aula+1+-+Introdu%C3%A7%C3%A3o+ao+Cliente+Servidor
description
Transcript of DS+Cliente+Servidor-+aula+1+-+Introdu%C3%A7%C3%A3o+ao+Cliente+Servidor
Desenvolvimento de Sistemas
Cliente/Servidor
UNICEUMADepartamento de Informática
Prof. Msc. Eduardo [email protected]
2
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Introdução ao modelo Cliente / Servidor
“A necessidade da empresa em se tornar mais competitiva com a globalização, fez com que se
começasse a pensar em downsizing ligado a redução de custos...
É dado o marco inicial a computação Cliente/Servidor”
3
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Introdução ao modelo Cliente / Servidor O termo Cliente/Servidor foi inicialmente aplicado
para a arquitetura de software que descrevia o processamento entre dois programas
Nesse contexto, a aplicação cliente requisitava um serviço que era então executado pelo programa servidor
Entretanto, esse termo ainda não distinguia se o programa cliente e o programa servidor estavam sendo executados em uma mesma máquina ou em máquinas diferentes
4
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Introdução ao modelo Cliente / Servidor Hoje, quando se fala em cliente/servidor, está se
referindo a um processamento cooperativo distribuído, onde o relacionamento entre clientes e servidores são relacionamentos entre componentes tanto de software quanto de hardware
Portanto, estaremos interessados na arquitetura cliente/servidor envolvendo duas ou mais máquinas em um processo cooperativo para executar a aplicação
5
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Mudanças de Paradigma Paradigma Tradicional
A visão tradicional da computação era centralizada na figura do computador que concentrava todos os serviços e recursos fornecidos aos usuários
O acesso a esses computadores era feito diretamente pelo usuário através de teclados e monitores
6
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Mudanças de Paradigma Paradigma Tradicional
Em alguns casos, essa máquina era um equipamento poderoso capaz de atender vários usuários simultaneamente (Mainframe) – Figura 1
Em outros casos eram pequenos computadores isolados capazes de atender um único usuário de cada vez – Figura 2
Figura 1 Figura 2
7
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Mudanças de Paradigma Paradigma Tradicional
Problemas: Para que essas máquinas pudessem acompanhar a crescente
demanda de novos recursos e serviços seria necessário expandir seus recursos de memória e processamento
No caso de se utilizar apenas uma máquina servindo vários usuários (Mainframe), seria difícil expandir ainda mais seus recursos para suportar as novas demandas tecnológicas, principalmente a interface gráfica
Por outro lado, através de várias máquinas isoladas, os serviços teriam que ser replicados e cada máquina incrementada para suportar tal processamento
Além disso, essa alternativa não provê uma maneira de comunicação entre os usuários
8
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Mudanças de Paradigma Paradigma Tradicional
Soluções: Surgiu-se a necessidade de interligar essas máquinas, para
que juntas pudessem fornecer um número maior de benefícios Apareceram ambientes de redes que permitiam a distribuição
de recursos e serviços em locais diferentes, aumentando a capacidade do usuário final
Conseqüência: máquinas que tinham que ser equipamentos caros e poderosos podiam ser aos poucos substituídas por várias máquinas menores e de custo mais baixo, mas que através de um processo cooperativo conseguiam prover funcionalidade maior
9
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Mudanças de Paradigma Paradigma Cliente / Servidor
Modelo que faz um aplicativo ficar passivamente esperando dados e um outro de iniciar a comunicação enviando dados
Os termos cliente-servidor se refere-se basicamente a dois aplicativos envolvidos numa comunicação Cliente é o aplicativo que iniciar a comunicação Servidor é o aplicativo que espera passivamente o contato
10
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Definições para Cliente / Servidor “Modelo computacional que separa clientes e servidores,
sendo interligados entre si geralmente utilizando-se uma rede de computadores” (Wikipedia)
“Dois computadores com variados graus de capacidade de processamento, que compartilham elementos de computação necessários para execução do trabalho, utilizando-se de um aplicativo dividido em três componentes básicos, um cliente, um servidor e uma rede conectando os dois” (Revista Eletrônica da UNIFIEO)
11
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Definições para Cliente / Servidor Cada instância de um cliente pode enviar requisições
de dado para algum dos servidores conectados e esperar pela resposta
Por sua vez, algum dos servidores disponíveis pode aceitar tais requisições, processá-las e retornar o resultado para o cliente
12
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
O que pode fazer uma computação Cliente / Servidor? Cria aplicativos para negócios personalizados que acessem
dados em Mainframes, mas que sejam tão fáceis de usar quanto os aplicativos PC prontos para uso, tais como editores de texto e planilhas eletrônicas
Desenvolve aplicativos que possibilitam o acesso à dados armazenados em sistemas de computador de outro modo incompatíveis
Cria um sistema de informações executivo que reúne uma grande quantidade de informações, geralmente armazenadas em computadores Mainframes
13
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Alguns dos principais aplicativos para o modelo Cliente/Servidor Aplicativos de Banco de Dados Aplicativos de Processamento de Transação Correio Eletrônico Groupware
14
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Alguns dos principais benefícios do modelo Cliente/Servidor para as empresas Permite às corporações alavacarem a tecnologia de
computadores “desktops” Hoje, as estações de trabalho já possuem um poder
computacional considerável, por um custo muito mais baixo, antes só disponível em “Mainframes”
Permite que o processamento seja feito mais próximo da origem dos dados reduzindo o tráfego na rede Correio Eletrônico
15
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Alguns dos principais benefícios do modelo Cliente/Servidor para as empresas Facilita a utilização de aplicações gráficas e
multimídias Permitindo a construção de aplicações que excedem as
expectativas dos usuários proporcionando-lhes um real aumento de produtividade
Permite e encoraja a utilização de sistemas abertos, já que clientes e servidores podem rodar em diferentes hardwares e softwares, livrando as corporações de arquiteturas proprietárias
16
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Deficiências do modelo Algumas características necessárias para um completo
processo distribuído ainda não foram observadas nesse modelo que ainda apresenta algumas deficiências
Se uma porção significante da lógica da aplicação for movida para o servidor, esse se torna um “gargalo” assim como na arquitetura de “Mainframe”
Para resolver esse problema seria necessário uma melhor distribuição e gerenciamento do processamento da lógica da aplicação
Isto dá origem a uma nova arquitetura chamada “Segunda Geração Cliente/Servidor”.
17
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Deficiências do modelo Algumas características necessárias para um completo
processo distribuído ainda não foram observadas nesse modelo que ainda apresenta algumas deficiências
O processo de construção de aplicações distribuídas é bem mais complexo que o desenvolvimento de aplicações não distribuídas devido ao maior número de parâmetros a serem definidos, ao desconhecimento da tecnologia e a falta de padrões e ferramentas que auxiliem essa ambientação
Portanto, muito tempo pode ser consumido no processo de definição e construção do ambiente de desenvolvimento
Esse tempo é muitas vezes subestimado pelas empresas devido ao desconhecimento e as falsas propagandas dos vendedores de ferramentas
18
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Evolução da Arquitetura Cliente/Servidor Time-Sharing ou Emulador de Terminais Resourse-Sharing ou Servidor de Arquivos
(Recursos) Cliente / Servidor
Servidor de Banco de Dados Servidor de Informações
19
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Evolução da Arquitetura Cliente/Servidor Time-Sharing ou Emulador de Terminais
Arquitetura baseada em um processamento centralizado
Uma máquina, chamada de hospedeiro, é responsável por rodar todos os programas e gerenciar todos os recursos
O tempo de processamento é compartilhado pelos programas, simulando uma execução em paralelo
Os usuários têm acesso a esses serviços e recursos através de terminais conectados localmente ou remotamente
20
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Evolução da Arquitetura Cliente/Servidor Time-Sharing ou Emulador de Terminais
Os terminais não possuem nenhuma capacidade de processamento e consistem basicamente de uma tela, um teclado e do hardware necessário para se comunicar com o hospedeiro
Novas necessidades: mais de processamento, economicamente e fisicamente inviável
Os exemplos mais conhecidos dessa arquitetura são os sistemas em Mainframes e alguns sistemas em UNIX
21
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Evolução da Arquitetura Cliente/Servidor Resourse-Sharing ou Servidor de Arquivos
(Recursos) Consiste de vários computadores (estações
de trabalho) interligados, sendo cada um capaz de realizar seu próprio processamento
Alguns desses computadores são responsáveis em compartilhar e gerenciar recursos tais como impressora, disco, etc (servidores de rede)
A rede não é utilizada para proporcionar um processamento cooperativo entre as máquinas Processamento
Processamento
Servidor de Rede
Aplicações
22
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Evolução da Arquitetura Cliente/Servidor Resourse-Sharing ou Servidor de Arquivos
(Recursos) Todo o processamento da aplicação é
ainda feito por uma única máquina, havendo apenas o compartilhamento de recursos
Já é possível compartilhar a base de dados da aplicação, permitindo o acesso por várias pessoas simultaneamente
Problema: Como todo o processamento dos dados é realizado em cada máquina, a necessidade de um volume maior de informações torna inviável o tráfego de informações pela rede
Processamento
Processamento
Servidor de Rede
Aplicações
23
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Evolução da Arquitetura Cliente/Servidor Resourse-Sharing ou Servidor de Arquivos
(Recursos) Para resolver esse problema seria
necessário que a máquina responsável em armazenar os dados fizesse um processamento local capaz de enviar uma quantidade menor de dados para a máquina que está processando a aplicação
Processamento
Processamento
Servidor de Rede
Aplicações
24
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Evolução da Arquitetura Cliente/Servidor Cliente / Servidor
Também consiste de vários computadores, cada um com seu próprio processamento, interligados em rede
A diferença básica para a arquitetura Resource-Sharing é que aqui já começa a haver um processamento distribuído cooperativo
Parte do processamento, que era feito pela máquina da aplicação, é feito agora pela própria máquina responsável pelo armazenamento e distribuição da informação, diminuindo assim o tráfego de informações na rede
Processamento
Processamento
Processamento
Servidor de Bancode Dados (DBMS)
Aplicações
Processamento
Servidor de Rede
25
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Evolução da Arquitetura Cliente/Servidor Cliente / Servidor
É preciso selecionar os dados que serão enviados para o usuário para uma melhor eficiência do ambiente
Esse modelo já começa a retirar partes específicas de processamento das aplicações que eram executadas pelas máquinas clientes, centralizando-as nas máquinas de localização física mais adequada, garantindo assim uma melhor distribuição do processamento e utilização do ambiente
Processamento
Processamento
Processamento
Servidor de Bancode Dados (DBMS)
Aplicações
Processamento
Servidor de Rede
26
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Evolução da Arquitetura Cliente/Servidor Cliente / Servidor
Através dessas especializações garante-se também um melhor gerenciamento e facilidade de manutenção dos serviços devido a sua concentração em um ou poucos locais físicos
Processamento
Processamento
Processamento
Servidor de Bancode Dados (DBMS)
Aplicações
Processamento
Servidor de Rede
27
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Gerações Cliente / Servidor Primeira Geração
Definimos cliente/servidor como: Uma arquitetura computacional que visa distribuir os
recursos e o processamento de forma inteligente com o objetivo de otimizar o desempenho da rede e dos sistemas, maximizando a utilização dos recursos de cada máquina e fornecendo uma base sólida e flexível para a implantação de um número crescente de serviços
Algumas implementações desse tipo já vêm sendo utilizadas em várias empresas e são conhecidas como a primeira geração cliente/servidor
28
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Gerações Cliente / Servidor Primeira Geração
Para compartilhar recursos, como disco e impressora, são utilizados Servidores de Arquivos na rede
Estes são sistemas com a função de processar as requisições aos arquivos e impressoras e gerenciar seu acesso e distribuição
Além disso, parte do processamento das aplicações também foi distribuído
29
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Gerações Cliente / Servidor Primeira Geração
Alguns serviços de manipulação e gerenciamento de dados foram retirados das aplicações e colocados em pontos centralizados conhecidos como “Servidores de Banco de Dados”, tornando o processamento dos dados mais próximo do seu local de armazenamento
Os sistemas que fornecem tais serviços foram chamados de “Sistemas Gerenciadores de Banco de Dados” - SGDB
30
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Gerações Cliente / Servidor Primeira Geração
Basicamente, a primeira geração de cliente/servidor se caracteriza por essa distribuição do processamento da aplicação entre dois componentes: A estação de trabalho do usuário O servidor de banco de dados
À medida que a arquitetura cliente/servidor evolui, novas partes da aplicação vão sendo distribuídas e novos elementos vão aparecendo no ambiente
31
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Gerações Cliente / Servidor Segunda Geração
Hoje, a tecnologia cliente/servidor já caminha para sua segunda geração
Essa geração explora mais o ambiente de rede e suas máquinas
Surgem novos servidores com a finalidade de retirar das estações de trabalho grande parte do processamento que elas realizam
Os principais elementos dessa nova arquitetura são os servidores de aplicação e os servidores “Web”
32
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Gerações Cliente / Servidor Segunda Geração
Os servidores de aplicação são responsáveis por retirar o restante da camada de manipulação de dados que ainda havia na estação cliente
Além disso, tem o objetivo de concentrar a lógica de negócio, antes distribuída entre a estação cliente e o servidor de banco
Normalmente, esse trabalho não é feito por um único servidor de aplicação e sim por um conjunto de servidores onde o processamento é balanceado através de elementos chamados “Midlleware”
33
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Gerações Cliente / Servidor Segunda Geração
Desta forma resta para a estação cliente o processamento da interface visual com o usuário, deixando-a mais leve, exigindo uma menor configuração e melhorando seu desempenho.
Os servidores “Web” tentam ir mais longe ainda, permitindo retirar das estações de trabalho até parte da lógica da interface visual, deixando-as responsáveis apenas por interpretar o código “HTML” enviado pelos servidores
34
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Gerações Cliente / Servidor Segunda Geração
Entretanto, com a utilização de componentes como Java e ActiveX, parte do processamento pode retornar à estação de trabalho.
Essas novas tecnologias trazem mais recursos, mas tornam o ambiente mais complexo e difícil de ser implementado
Conclusão: É preciso estar bem certo do que se pretende e não fazer uso
de uma tecnologia mais nova sem a conhecê-la direito ou sem a real necessidade de utilizá-la
35
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Tópicos a serem pensados em um sistema Cliente / Servidor A construção de um sistema Cliente/Servidor Elementos de um computador Cliente Opções de computador Cliente Sistemas Operacionais que podem ser usados com
os computadores Clientes Como deve ser um computador Servidor O que deve ser observado neste tipo de
computador
36
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Tópicos a serem pensados em um sistema Cliente / Servidor Tipos de Servidores Acessórios para Servidores Opções de Servidor Servidores de Rede Local Super-Servidores Servidores de Médio Porte Usando Mainframes como Servidores Sistemas Operacionais para Servidores
37
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Conceitos relacionados Programa
Unidade de software executada pela CPU de um computador sob o controle de um SO
SO de multiprogramação SO que pode ter vários programas na memória ao
mesmo tempo e alternar a execução entre eles Processo ou Tarefa
Cada ativação de um programa
38
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Conceitos relacionados SO de multitarefa
SO que pode compartilhar a CPU entre os vários processos
SO de multiprocessamento SO que pode controlar múltiplas CPUs de multitarefa,
executando vários processos ao mesmo tempo A maior parte dos SOs de multitarefa ou de
multiprocessamento oferecem facilidades de comunicação entre processos (IPC)
39
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Conceitos relacionados Comunicação entre Processos
São processos concorrentes que rodam em paralelo a fim de se comunicarem, estejam eles compartilhando a mesma CPU, em CPUs múltiplas numa mesma máquina ou até em máquinas diferentes numa rede se comunicando um com o outro
A comunicação pode ser: Por meios dinâmicos. Ex.: memória compartilhada Por meios estáticos. Ex.: bloqueio de sistema de arquivo
40
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Conceitos relacionados Processos Distribuídos
São processos concorrentes que se comunicam através de passagem de mensagens, encontrados em facilidades de IPC
Um tipo especial de IPC é a Chamada a Procedimento Remoto (RPC)
41
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Conceitos relacionados Processos Distribuídos
Existem 4 tipos de processos distribuídos Clientes Servidores Filtros: realizam uma operação fixa no fluxo de dados,
passando adiante os resultados para outro processo Peers (não-hierárquicos): são idênticos um ao outro, e
interagem de forma cooperativa para um trabalho útil
A A’
A C
A B
B
Não-hierarquicos
Filtros
Cliente / Servidor
42
Desenvolvimento de Sistemas Cliente/Servidor – Introdução ao Cliente / Servidor
Conceitos relacionados Processos Distribuídos
Processos Clientes / Servidor Processos Clientes enviam pedidos para um processo
servidor, que responde com os resultados para esses pedidos Processos Servidores oferecem serviços aos seus clientes,
normalmente de processamento específico que só eles podem fazer
O processo Cliente, livre da complexidade e esforço adicional do processamento da transação, pode realizar outro trabalho útil
A interação entre os processos cliente e servidor é uma troca cooperativa transacional, onde o cliente é o ativo e o servidor é o reativo