Quais são as diferenças entre a programação do lado do servidor e do lado do cliente?

101

I've seen questions (mainly on Stack Overflow), which lack this basic knowledge. The point of this question is to provide good information for those seeking it, and those referencing to it.

No contexto da programação web, quais são as diferenças entre a programação do lado do servidor e a programação do lado do cliente? Quais idiomas pertencem a qual e quando você usa cada um deles?

    
por Madara Uchiha 24.10.2012 / 16:08
fonte

4 respostas

118

Antecedentes

Desenvolvimento da Web é tudo sobre comunicação. Neste caso, comunicação entre duas (2) partes, sobre o protocolo HTTP:

  • O Servidor : essa parte é responsável pelas páginas veiculação .
  • O Cliente - Esta parte solicita páginas do Servidor e as exibe para o usuário. Na maioria dos casos, o cliente é um navegador da web .
    • O Utilizador - O utilizador utiliza o Cliente para navegar na Web, preencher formulários, ver vídeos online, etc.

A programação de cada lado, refere-se ao código que é executado na máquina específica, no servidor ou no cliente.

Exemplo básico

  1. O Usuário abre seu navegador da web (o Cliente ).
  2. O Utilizador procura o link .
  3. O Cliente (em nome do Usuário ) envia uma solicitação para o link (o Servidor ), para sua página inicial.
  4. O Servidor reconhece a solicitação e responde ao cliente com alguns metadados (chamados cabeçalhos ), seguidos pela origem da página.
  5. O Cliente recebe a origem da página e a torna em um site visualizável por humanos.
  6. O Usuário digita Stack Overflow na barra de pesquisa e pressiona Enter
  7. O Cliente envia esses dados para o Servidor .
  8. O Servidor processa esses dados e responde com uma página que corresponde aos resultados da pesquisa.
  9. O Cliente , mais uma vez, renderiza essa página para o Usuário exibir.

Programação

Programação do lado do servidor

Programação do lado do servidor, é o nome geral para os tipos de programas que são executados no Servidor .

Usa

  • Processar entrada do usuário.
  • Compila páginas.
  • Estruturar aplicativos da web.
  • Interaja com armazenamento permanente (SQL, arquivos).

Idiomas de Exemplo

  • PHP
  • Python
  • ASP.Net em C #, C ++ ou Visual Basic.
  • Quase qualquer idioma (C ++, C #, Java). Eles não foram projetados especificamente para a tarefa, mas agora são usados com frequência para serviços da Web no nível do aplicativo.

Programação no lado do cliente

Assim como o lado do servidor, a programação do lado do cliente é o nome de todos os programas que são executados no Cliente .

Usa

  • Crie páginas da Web interativas.
  • Faça as coisas acontecerem dinamicamente na página da web.
  • Interaja com armazenamento temporário e armazenamento local (Cookies, localStorage).
  • Envie solicitações para o servidor e recupere dados dele.
  • Fornece um serviço remoto para aplicativos do lado do cliente, como registro de software, entrega de conteúdo ou jogos com vários participantes remotos.

Idiomas de exemplo

  • JavaScript (principalmente)
  • HTML *
  • CSS *
  • Qualquer idioma em execução em um dispositivo cliente que interaja com um serviço remoto é uma linguagem do lado do cliente.

* HTML e CSS não são realmente "linguagens de programação" por si. Eles são uma sintaxe de marcação pela qual o Cliente renderiza a página para o Usuário .

    
por 07.08.2018 / 20:54
fonte
27

Nas palavras do leigo:

Aqui falarei apenas sobre programação na web.

A programação do lado do cliente tem a ver principalmente com a interface do usuário, com a qual o usuário interage. No desenvolvimento web, é o navegador, na máquina do usuário, que executa o código, e é feito principalmente em javascript, flash, etc. Esse código deve ser executado em vários navegadores.

Suas principais tarefas são:

  • validando entrada (a validação deve ser feita no servidor. Uma validação redundante no cliente pode ser usada para evitar chamadas do servidor quando a velocidade é muito crítica.)
  • animação
  • manipulando elementos da interface do usuário
  • aplicando estilos
  • alguns cálculos são feitos quando você não quer que a página seja atualizada com tanta frequência

A pessoa encarregada da programação do front end deve conhecer :

  • javascript
  • css
  • HTML
  • design gráfico básico
  • Ajax
  • talvez Flash
  • algumas bibliotecas javascript de terceiros, como JQuery
  • Design da interface do usuário
  • design de informação, etc.
A programação do lado do servidor tem a ver com a geração de conteúdo dinâmico. Ele é executado em servidores. Muitos desses servidores são "sem cabeça". A maioria das páginas da Web não é estática, elas pesquisam um banco de dados para mostrar as informações personalizadas atualizadas pelo usuário. Esses lados interagem com o back-end, como, digamos, o banco de dados.

Esta programação pode ser feita em muitas linguagens:

  • PHP
  • Java e jsp
  • asp
  • Perl
  • Python
  • Ruby on Rails, etc.

Este código tem a ver com:

  • Consultando o banco de dados
  • Codifique os dados em html
  • Inserir e atualizar informações no banco de dados
  • Regras e cálculos de negócios

O responsável pela programação do servidor deve saber:

  • algumas das línguas mencionadas acima
  • HTML
  • SQL,
  • shell script do linux / unix
  • OOP
  • regras de negócios, etc.
por 24.10.2012 / 16:36
fonte
13

Outras respostas se concentraram no qual é a programação do lado do cliente e do lado do servidor: quais idiomas são usados principalmente, quais tarefas devem ser realizadas, etc.

Isso está absolutamente certo, mas eu sinto falta de um pouco de foco em quais são as diferenças entre os dois tipos de programação, no contexto da programação da web. Deixe-me tentar resolver isso.

Segurança e permissões

Na programação do lado do cliente, você não tem acesso ao sistema completo, devido a preocupações de segurança. O usuário não necessariamente confia em cada parte do código que é baixado da web e executado em sua máquina, e esse é o principal objetivo do projeto do ambiente do lado do cliente (o navegador e o mecanismo JavaScript): fornecer um ambiente isolado onde o código do cliente pode ser executado, mas não pode acessar nada fora do escopo permitido.

Na programação do lado do servidor, é uma boa prática também limitar o acesso de cada aplicativo ao sistema subjacente, mas isso é muito menos imposto a você, já que, no final, você ou sua empresa controlam esse sistema . Esse design de 'gaiola isolada' não é não embutido nas ferramentas e linguagens de programação do lado do servidor, mas é realizado por meio da instalação (usando usuários dedicados com permissões restritas, escolhendo portas que exigem ou não exigem permissões de root, etc).

Implantação e plataforma

Na programação do lado do servidor, a implantação deve acontecer fora do seu código, usando algum tipo de ferramenta (mesmo que seja make install ou git clone ), e essa implantação é geralmente manual - ou pelo menos, espera-se que aconteça de forma semi-supervisionada. O sistema (ou seja, o sistema operacional) no qual você implementa é geralmente uniforme em várias máquinas, mas pode ser altamente personalizado de acordo com suas necessidades.

Na programação do lado do cliente, a implantação acontece a partir do código do lado do servidor, que atende os clientes automaticamente e sem supervisão. O sistema subjacente (significando principalmente o navegador) pode ser muito diferente em um número muito maior de máquinas. Para tornar a implantação viável, os padrões devem ser mantidos, e há uma tendência muito mais strong para uma única linguagem e ambiente.

É por isso que copiar o código do lado do servidor de uma máquina para outra pode levar semanas, enquanto o código do lado do cliente geralmente é trivial para executar em máquinas diferentes.

Efeitos estatais e secundários

(Aviso: este é de longe o ponto mais subjetivo de todos. Provavelmente há muitos aspectos errados em minha argumentação. É apenas uma hipótese interessante, na minha opinião.)

Na programação do lado do servidor, o estado é uma preocupação muito maior, significando como recuperar e atualizar dados a pedido do usuário, com a possibilidade de conflitos devido à simultaneidade. Mesmo que a maior parte dessa complexidade seja transferida para um servidor de banco de dados, é responsabilidade do código do servidor permitir que o banco de dados mantenha suas garantias de integridade de dados usando sua interface corretamente (por exemplo, não usar um cache para atualizações que nunca são vistas por DB), embora seja também um objetivo do código do lado do servidor não sobrecarregar o banco de dados com o trabalho e manter o usuário aguardando resposta.

Na programação do lado do cliente, apresentar os resultados para o usuário é uma preocupação muito maior, e isso implica efeitos secundários (principalmente impressão na tela). Isso não quer dizer que não haja nenhum estado envolvido (por exemplo, cookies), apenas que o objetivo principal do código é realmente interagir com o usuário, e isso não pode acontecer sem efeitos secundários.

É por isso que a programação do lado do cliente geralmente requer (em algum momento) a tela com uma demonstração, para verificar se todas as cores e layout estão corretas, enquanto a programação do lado do servidor pode acontecer quase exclusivamente em um ambiente orientado a texto. , onde testes automatizados verificam se a lógica ainda está fazendo o que é suposto fazer.

    
por 12.01.2015 / 13:37
fonte
1

Isso não pretende de forma alguma ser uma resposta aceita; prefiro oferecê-lo como um ponto complementar (em resposta à questão when do you use each of them ) que ainda tem que ser mencionado nas outras respostas até agora, a saber:

Proteção da propriedade intelectual

O código-fonte que fica no lado do cliente (como em Javascript) é facilmente legível e / ou capaz de ser submetido a engenharia reversa se tiver sido ofuscado.

O código-fonte que fica no lado do servidor, entretanto, pode proteger com segurança algoritmos proprietários e somente retornar o resultado; uma caixa preta de tipos.

    
por 16.03.2016 / 20:00
fonte