Eu já vi perguntas (principalmente no Stack Overflow), que não possuem esse conhecimento básico. O objetivo desta pergunta é fornecer boas informações para quem a procura e para quem faz referência a ela.
No contexto da programação na web, quais são as diferenças entre a programação do servidor e a programação do cliente? Quais idiomas pertencem a quais e quando você usa cada um deles?
web-development
server-side
client-side
Madara Uchiha
fonte
fonte
Respostas:
fundo
Desenvolvimento Web é tudo sobre comunicação. Nesse caso, comunicação entre duas (2) partes, através do protocolo HTTP:
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
Programação
Programação do lado do servidor
Programação no servidor, é o nome geral dos tipos de programas que são executados no servidor .
Usos
Idiomas de exemplo
Programação do lado do cliente
Muito parecido com o lado do servidor, a programação do lado do cliente é o nome de todos os programas executados no cliente .
Usos
Idiomas de exemplo
* HTML e CSS não são realmente "linguagens de programação" por si só. São sintaxe de marcação pela qual o Cliente renderiza a página para o Usuário .
fonte
Nas palavras do leigo:
Aqui vou falar 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 da 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:
A pessoa responsável pela programação do front-end deve saber :
A programação do servidor tem a ver com a geração de conteúdo dinâmico. Ele roda em servidores. Muitos desses servidores são "decapitados". A maioria das páginas da Web não é estática, elas pesquisam um banco de dados para mostrar ao usuário informações personalizadas atualizadas. Esse lado interage com o back-end, como por exemplo, o banco de dados.
Essa programação pode ser feita em vários idiomas:
Este código tem a ver com:
A pessoa responsável pela programação do lado do servidor deve saber:
fonte
Outras respostas se concentraram no que é programação do lado do cliente e do servidor: quais idiomas são mais usados, quais tarefas precisam ser realizadas etc.
Isso está absolutamente certo, mas não entendo quais são as diferenças entre os dois tipos de programação no contexto da programação na 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 questões de segurança. O usuário não confia necessariamente em todo e qualquer código baixado da Web e executado em sua máquina, e esse é o principal objetivo de design 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 servidor, é uma boa prática também limitar o acesso de cada aplicativo ao sistema subjacente, mas isso é muito menos imposto a você, pois no final, você ou sua empresa estão no controle desse sistema. Esse design de 'compartimento isolado' não é incorporado nas ferramentas e linguagens de programação do servidor, mas é realizado através da instalação (usando usuários dedicados com permissões restritas, escolhendo portas que requerem ou não permissões de raiz, etc.).
Implantação e plataforma
Na programação do servidor, a implantação precisa acontecer de fora do seu código, usando algum tipo de ferramenta (mesmo que seja
make install
ou agit clone
), e essa implantação geralmente é manual - ou pelo menos, espera-se que ocorra em um ambiente semi-supervisionado. maneira. O sistema (ou seja, o SO) no qual você implanta geralmente é uniforme em várias máquinas, mas pode ser altamente personalizado para 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 viabilizar a implantação, é necessário manter os padrões e há uma tendência muito mais forte para um único idioma e ambiente.
É por isso que copiar o código do servidor de uma máquina para outra pode levar semanas, enquanto o código do cliente geralmente é trivial para ser executado em máquinas diferentes.
Efeitos estatais e secundários
(Isenção de responsabilidade: este é de longe o ponto mais subjetivo de todos. Provavelmente, existem muitos aspectos errados na minha argumentação. É apenas uma hipótese interessante, na minha opinião.)
Na programação 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 grande parte dessa complexidade seja transferida para um servidor de banco de dados, é de 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 use um cache para atualizações que nunca são vistas pelo o DB), embora também seja um objetivo do código do servidor não sobrecarregar o banco de dados com trabalho e manter o usuário aguardando resposta.
Na programação do lado do cliente, apresentar os resultados ao usuário é uma preocupação muito maior, e isso implica efeitos secundários (principalmente na impressão na tela). Isso não quer dizer que não haja um estado envolvido (por exemplo, cookies), apenas que o principal objetivo 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 exige (em algum momento) olhar para a tela com uma demonstração, para verificar se todas as cores e o layout estão corretos, enquanto a programação do lado do servidor pode ocorrer quase que exclusivamente em um ambiente orientado a texto, onde automatizado Os testes verificam se a lógica ainda está fazendo o que deveria.
fonte
Isso não significa que seja uma resposta aceita; pelo contrário, ofereço-o como um ponto complementar (em resposta à
when do you use each of them
pergunta) que ainda não foi mencionado nas outras respostas até agora, a saber:Proteção da propriedade intelectual
O código-fonte localizado no lado do cliente (como em Javascript) é facilmente legível e / ou pode sofrer engenharia reversa se tiver sido ofuscado.
O código-fonte que fica no lado do servidor, no entanto, pode proteger com segurança algoritmos proprietários e retornar apenas o resultado; uma espécie de caixa preta.
fonte