Você está na página 1de 43

Sistemas

Cliente/Servidor
Aula 02

Prof. MSc. Caique Zaneti Kirilo


Material baseado no cedido pelo Prof. Claudio Benossi

1.
Unidade
Conceitos de Programação
Cliente/Servidor
Sistemas Cliente/Servidor
Na Programação Cliente-Servidor é possível
observar o paradigma de programação
distribuída através da separação das aplicações 3

entre servidores e clientes foi a arquitetura de


distribuição predominante nos anos 1990.
Visão geral das arquiteturas
Sistemas stand-alone Sistemas cliente-servidor

Sistemas distribuídos
Arquiteturas stand-alone
O que é uma Arquitetura Stand-alone?
Caracteriza-se pelo uso de uma única estação
de trabalho autossuficiente, na qual se
centraliza a interface com o usuário, o
processamento e o armazenamento de dados.

Não há utilização de rede de comunicação.

Arquitetura muito popular até meados dos anos 1980, na era pré-Web.
Arquiteturas cliente-servidor
O que é uma Arquitetura Cliente-Servidor?

O ponto principal em uma arquitetura Cliente-Servidor


está na presença de elementos centralizadores de
dados ou de processamento (servidores), em geral bem
mais robustos que os outros elementos que são deles
dependentes (clientes).
Arquiteturas distribuídas
O que é uma Arquitetura Distribuída?
“Sistema com múltiplos processadores
autônomos, possivelmente de
diferentes tipos, que estão
interconectados por uma sub-rede de
comunicação de forma a interagir
cooperativamente de forma a atingir
um objetivo específico”

Ananda & Srivasan

“Conjunto de computadores independentes que, para os


usuários é como se fosse um só.”
Tanenbaum

Máquinas autônomas Sistemas transparentes


Distribuição – quando?
Quando um sistema pode ser considerado distribuído?

Um sistema pode ser considerado “distribuído” se ao menos um


de seus quatro componentes físicos o for:

Dados Hardware Processamento S. O.

Claramente, esta é uma definição bastante “pobre” por ter seus itens fortemente
acoplados entre si, uma vez que fica difícil imaginar sistemas que baseiam-se
somente na distribuição de hardware, sem distribuírem o processamento, e assim
por diante...
Centralizar, distribuir...
Centralização x Distribuição

Sistemas cliente-servidor tendem a ser centralizadores de dados e


processamento, do lado servidor, deixando a interface do lado cliente.

Sistemas baseados na Web em geral seguem essa arquitetura,


comumente denominada fat server, thin client (servidor “gordo”, cliente
“magro”).
Linux

Algumas aplicações Web, por exemplo as que utilizam applets, transferem


parte do processamento para o lado cliente.
10
12
Raspberry

Como usar a raspberry como servidor e cliente ao mesmo tempo?

14
Prós & Contras
Arquiteturas Cliente-Servidor e distribuídas
x
Sistemas Stand-alone

Compartilhamento de dados
Compartilhamento de dispositivos
Comunicação
Flexibilidade
Prós & Contras
Arquiteturas Cliente-Servidor x Distribuídas

Arquiteturas
cliente/servidor
costumam ser mais fáceis
de gerenciar que
arquiteturas distribuídas,
uma vez que são
centralizadas.
Também são mais fáceis de se
implementar, pela variedade de
tecnologias existentes
Prós & Contras
Arquiteturas Distribuídas x Cliente-Servidor

Arquiteturas distribuídas costumam


apresentar melhor relação
custo/benefício, e maior escalabilidade.
A velocidade depende das conexões
entre os elementos da arquitetura.
$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$
Prós & Contras
Algumas possíveis soluções...

Mesclar arquiteturas cliente-servidor com arquiteturas distribuídas.

Pool de servidores
(distribuídos)

Cliente/servidor
Tecnologias Server-Side

Visão geral das tecnologias:


■ ASP
■ Cold Fusion
■ PHP
■ Perl
■ Python
■ ASP.NET
■ Servlet e JSP
ASP (Active Server Pages)
Linguagem anterior ao ASP.NET (chamado ASP 3.0)
Tecnologia da Microsoft que suporta múltiplas linguagens de
criação de scripts, como Perlscript (baseada em Perl), Jscript
(baseada em JavaScript) e VBScript (linguagem padrão para o
ASP).
O código é inserido dentro de páginas HTML usando tags
especiais.
Os seus arquivos tem a extensão “asp”.
O servidor executa o código entre as tags antes de enviar o
resultado (HTML) para o browser.
É nativamente suportada pelo IIS (Internet Information Server) Web
server da Microsoft.
ASP (Active Server Pages)
ASP é otimizado para gerar pequenas partes de conteúdo dinâmico
e utiliza componentes COM (Component Object Model) para criar
scripts mais especializados, como por exemplo, criação de
diretórios virtuais, o acesso a banco de dados e manipulação de
arquivos
Um ponto a considerar é que páginas ASP sendo executadas em
plataforma não-Windows podem ter problemas ao executar tarefas
avançadas sem a biblioteca COM do Windows.
Grandes aplicações web utilizando somente ASP frequentemente
tem problemas de escalabilidade (eficiência no processamento de
grandes conjuntos de dados).
ASP (Exemplo)
Escreve “Hello, world!” 10 vezes.
<%@ LANGUAGE=“VBSCRIPT” %>
<% option explicit %>
<html><body>
<% Dim hello
i = 0
hello = “Hello, world!<br>”
Do while i < 20
Response.write(hello)
i = i + 2
Loop
%>
</body></html>
Exemplinho offline

24
ColdFusion
Linguagem interpretada do lado do servidor.
Tecnologia da Allaire, adquirida pela Macromedia e
depois pela Adobe, que fornece um conjunto de tags
embutidas em páginas HTML possibilitando a geração
dinâmica de conteúdo para a web.
Um aspecto interessante é que páginas HTML também
são constituídas de tags possibilitando um único estilo
consistente de sintaxe ao longo da página.
Os seus arquivos tem a extensão “cfm”.
ColdFusion
As tags do Cold Fusion são fáceis de distinguir das
tags do HTML porque todas começam com as letras
“cf”, por exemplo: <cfoutput>, <cfif>, <cfset>,
<cfabort>.
Quando um usuário acessa uma página Cold Fusion, o
servidor a analisa, encontra e traduz as tags cf e
escreve o código HTML puro.
Cold Fusion é suportado tanto em plataformas
Windows como Linux
ColdFusion (Exemplo)
Escreve “Hello, world!” 10 vezes.

<html><body>
<cfset hello = “Hello, world!” >
<cfset i=0>
<cfloop condition=“i LT TO 20”>
<cfoutput>#Hello, world#</cfoutput><br>
<cfset i = i + 2>
</cfloop>
</body></html>
PHP (PHP Hypertext Preprocessor)
Tecnologia de código aberto e free, criada
originalmente por Rasmus Lerdorf para atender, a
princípio, suas necessidades pessoais.
PHP é uma outra linguagem script, como ASP,
projetada para processar código inserido dentro de
páginas HTML.
O servidor analisa e transforma seu código para HTML
antes de mandar o resultado para o browser.
Emprega uma sintaxe similar à da linguagem C com
forte suporte para acesso a banco de dados e e-mail.
PHP
Seus comandos são finalizados com ; e as suas
variáveis são iniciadas com o símbolo $.
Seus arquivos tem a extensão “php”.
Tem suporte em várias plataformas operacionais:
Windows, Linux, MacOs, UNIX, etc. e em diversos
servidores de HTTP, como Apache, IIS (Internet
Information Server) da Microsoft e Netscape
Enterprise Server da Netscape.
PHP (Exemplo)
Escreve “Hello, world!” 10 vezes.
<html><body>
<script language=“php”>
$i = 0;
$hello = “Hello, world!<br>”;
while ($i < 20) {
echo $hello;
$i = $i + 2;
}
</script>
</body></html>

Obs.: Pode-se substituir <script...>...</script>


Por <?php...?> ou simplesmente <? ... ?>
Perl
É uma linguagem interpretada e muito popular para
escrever scripts CGI (Common Gateway Interface).
Possui recursos para manipulação de texto,
expressões regulares, leitura e escrita de dados,
utilizando entrada e saída padrão
Através dos programas conectados a essa interface
CGI é possível, por exemplo, conectar uma base de
dados à web ou gerar dinamicamente o conteúdo de
uma página HTML.
Perl
Seus arquivos tem a extensão “pl”.
Perl é free e está disponível para múltiplas
plataformas, como Windows, Unix e Linux. É um
componente padrão para algumas plataformas
operacionais como FreeBSD, IRIX, Mac OS X, RedHat,
Slackware e Solaris.
Seus comandos são finalizados com ; e as suas
variáveis são iniciadas com o símbolo $.
Perl (Exemplo)
Escreve “Hello, world!” 10 vezes.

print "Content-type: text/html\n\n";


$hello = “Hello, world!”;
$i = 0;
while ($i < 20) {
print $hello;
$i = $i + 2;
}

Obs.: A primeira linha é necessária para que a


mensagem seja exibida pelo browser.
Python
É uma linguagem interpretada onde não há
declaração de variáveis, e possui tipos de variáveis
dinâmicos.
O controle de bloco é feito apenas por indentação;
não há instruções do tipo BEGIN e END ou { e
}.
Possui tipos de variáveis de alto nível: strings, listas,
dicionários, classes. É orientada a objetos; aliás, em
Python, tudo é um objeto.
Seu arquivo possui extensão “py”.
Python
Python permite que o programa funcione em
múltiplas plataformas; em outras palavras, a sua
aplicação feita para Linux pode rodar sem problemas
em Windows e em outros sistemas.
Tem vários módulos já desenvolvidos, como o
HTMLgen que é uma biblioteca de classes que gera
documentos HTML conforme alguns padrões pré-
definidos. Oferece classes para manipular tabelas,
listas, e outros elementos de formatação.
Pode-se também escrever scripts CGI.
Python (Exemplo)
Escreve “Hello, world!” 10 vezes.

print ‘Content-Type: text/html\n\n’


i = 0
hello = “Hello, world!<br>”
while i < 20:
print hello
i = i + 2

Obs.: A primeira linha é necessária para que a mensagem seja


exibida pelo browser.
ASP.NET (VB, C#)
É um ambiente de desenvolvimento, criado pela
Microsoft, totalmente integrado a plataforma que
permite criar aplicações Windows ou Web.
Pode-se criar qualquer tipo de código nos
formulários, componentes, Web Services, XML, etc.,
e utiliza-lo dentro do próprio ambiente.
Para que uma aplicação funcione em uma plataforma
basta instalar o run-time do .NET para que as
aplicações criadas para o .NET sejam compiladas e
executadas nesta plataforma.
Servlets e JSP (Java Server Pages)

Eles não fazem parte da API básica de Java, J2SE


(Java 2 Standard Edition), estando disponíveis na
plataforma J2EE (Java 2 Enterprise Edition) que
permite a geração de páginas dinâmicas para a web.
Pode-se dizer que um servlet é uma classe Java que
pode ser carregada dinamicamente para expandir a
funcionalidade do servidor.
JSP é híbrido, pois suporta dois estilos diferentes
para adicionar conteúdo dinâmico às páginas HTML,
através de códigos Java e tags incorporadas nas
próprias páginas.
Servlets e JSP

Vantagem dos servlets e JSP é que, por serem


escritos em Java, aproveitam todas as vantagens da
plataforma Java básica.
Os programas são executados em cima de uma JVM
(Java Virtual Machine).
Este fato permite uma independência de plataforma
operacional. Bastando, para isto, possuir uma JVM
para esta plataforma.
A extensão dos arquivos é “java” para Servlets e “jsp”
para as páginas JSP.
JSP (Exemplo)
Escreve “Hello, world!” 10 vezes.
<html><body>
<%
String hello=“Hello, world!<br>”;
for(int i=0;i<20;i+=2)
out.println(hello);
%>
</body></html>

Obs.: Vale observar que o código é compilado no servidor antes


de enviar a página HTML ao browser.
Servlet (Exemplo)
Escreve “Hello, world!” 10 vezes.
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String hello = "Hello, world!<br>";
out.println("<html><body>");
for(int i=0; i<20;i+=2) out.println(hello);
out.println("</html></body>");
}
}

"Saber muito não lhe
torna inteligente. A
inteligência se traduz na
forma que você
reconhece, julga, maneja
e, sobretudo, onde e
como aplica esta
informação"
Carl Sagan

42
Obrigado!
43