Nesta lição, veremos o relacionamento entre clientes e servidores. A arquitetura cliente/servidor oferece um número ilimitado de possibilidades de comunicação e é o que torna a Internet possível . Abordaremos uma compreensão básica do modelo cliente/servidor que será usado posteriormente para chamar uma API. Está além do escopo desta lição cobrir um recurso completo sobre arquitetura cliente/servidor; em vez disso, focaremos nos princípios básicos da comunicação cliente/servidor.
Você será capaz de:
O modelo cliente-servidor de tecnologias de comunicação é um conjunto de arquitetura de aplicativos distribuídos e operações de rede que gerencia as cargas de trabalho entre os provedores de um serviço, chamados servidores , e o solicitante do serviço, chamado clientes .
Embora o modelo cliente-servidor possa ser usado por programas dentro de um computador individual, nos concentraremos no aspecto que trata de ambientes de rede. Nesse caso, o cliente configurou uma conexão com o servidor por meio de uma rede local (LAN), uma rede de área ampla (WAN), como a Internet. Você já jogou Xbox Live ou usou a PlayStation Network? Seu Xbox One é o cliente e, quando faz login na rede, entra em contato com os servidores do Xbox Live para recuperar recursos de jogos, como atualizações, vídeos e demonstrações de jogos.
Uma arquitetura cliente-servidor típica de múltiplas camadas que a maioria de nós usa na vida cotidiana pode ser mostrada abaixo.
Um cliente é um dispositivo de hardware ou software de computador que solicita um serviço disponibilizado por um servidor. O servidor geralmente (mas nem sempre) está localizado em um computador físico separado.
Um servidor é um computador físico dedicado a executar serviços para atender às necessidades dos clientes. Dependendo do serviço em execução, pode ser um servidor de arquivos, um servidor de banco de dados, um servidor de mídia doméstico, um servidor de impressão, um servidor de e-mail ou um servidor web .
A ideia de um Cliente e um Servidor se comunicando através de uma rede é o que torna possível a visualização de sites e a interação com aplicativos da Web (como Gmail, Facebook, LinkedIn). Este modelo é uma forma de descrever o relacionamento de troca entre o cliente e o servidor em uma aplicação Web e governa como as informações passam entre os computadores.
Vamos ver como é um aplicativo Web básico que recebe uma solicitação de um cliente Web e atende adequadamente.
Um aplicativo da Web (aplicativo da Web) é um programa aplicativo armazenado em um servidor remoto e entregue pela Internet por meio de uma interface de navegador. Os serviços Web são aplicativos Web por definição e muitos, embora não todos, sites contêm aplicativos Web. Qualquer componente de site que execute alguma função para o usuário é qualificado como um aplicativo Web. O mecanismo de busca do Google é um aplicativo da web, mas seu conceito raiz dificilmente difere de uma lista telefônica que permite pesquisar nomes ou números.
A maioria dos aplicativos da web realmente usa uma interface de navegador para interação, ou seja, os usuários finais solicitam acesso e solicitam informações/serviços desses aplicativos por meio de uma interface de navegador da web moderna. Existem centenas de maneiras de construir e configurar uma aplicação Web, mas a maioria delas segue a mesma estrutura básica: um cliente Web, um servidor Web e um banco de dados.
O cliente é com quem o usuário final interage. O código do "lado do cliente" é, na verdade, responsável pela maior parte do que o usuário realmente vê. Para solicitar algumas informações como uma página web, o lado do cliente pode ser responsável por: inclui:
A maioria dessas tarefas é gerenciada por tecnologias semelhantes a HTML/CSS/JavaScript para estruturar as informações, o estilo da página e fornecer objetos interativos para navegação e foco.
Um servidor web em um aplicativo web é o que escuta as solicitações provenientes dos clientes. Quando você configura um servidor HTTP (HyperText Transfer Protocol - Linguagem da Internet), nós o configuramos para escutar um número de porta. Um número de porta está sempre associado ao endereço IP de um computador. Você pode pensar nas portas como canais separados em um computador que podemos usar para realizar tarefas diferentes: uma porta pode navegar em www.facebook.com enquanto outra busca seu e-mail. Isso é possível porque cada um dos aplicativos (o navegador da Web e o cliente de e-mail) usa números de porta diferentes.
Depois de configurar um servidor HTTP para escutar uma porta específica, o servidor aguarda as solicitações do cliente chegando a essa porta específica. Após autenticar o cliente, o servidor executa todas as ações indicadas na solicitação e envia os dados solicitados por meio de uma resposta HTTP.
Os bancos de dados são os fundamentos da arquitetura da Web. Um banco de dados SQL/NoSQL ou um tipo semelhante de banco de dados é um local para armazenar informações para que possam ser facilmente acessadas, gerenciadas e atualizadas. Se você estiver construindo um site de mídia social, por exemplo, poderá usar um banco de dados para armazenar informações sobre seus usuários, postagens, comentários, etc. Quando um visitante solicita uma página, os dados inseridos na página vêm do banco de dados do site, permitindo interações do usuário em tempo real com sites como o Facebook ou aplicativos como o Gmail.
Na imagem de exemplo acima, podemos ver a configuração mencionada acima em ação. Um navegador envia uma solicitação a um servidor web chamando seu domínio, ou seja, www.google.com. Com base em quem é o solicitante, o servidor coleta as informações necessárias para um banco de dados SQL. Essas informações são agrupadas como código HTML e enviadas de volta ao cliente. O navegador da web lê as informações de estruturação e estilo incorporadas ao HTML e exibe a página ao usuário de acordo.
Há muitos detalhes sobre arquiteturas cliente/servidor e como elas se manifestam na Internet. Vamos nos concentrar um pouco mais nas ideias destacadas nesta seção, configurando um cliente e fazendo solicitações em Python. Essas habilidades nos ajudarão a solicitar dados dos servidores para nossos experimentos analíticos. aqui estão alguns recursos extras para você se quiser se aprofundar no modelo cliente-servidor e como ele é configurado para muitas arquiteturas diferentes.
Nesta lição, examinamos os fundamentos do modelo cliente-servidor e nos concentramos em como esse modelo é implementado para aplicativos baseados na Web. Analisamos a função dos clientes web, servidores web e bancos de dados que transportam informações do cliente. Nas lições a seguir, veremos como implementar essas ideias usando Python!