Quali sono le differenze tra la programmazione lato server e quella lato client?

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.

Nel contesto della programmazione web, quali sono le differenze tra la programmazione lato server e la programmazione lato client? A quali lingue appartiene e quando li usi?

    
posta Madara Uchiha 24.10.2012 - 16:08
fonte

4 risposte

118

Sfondo

Lo sviluppo Web è interamente basato sulla comunicazione. In questo caso, comunicazione tra due (2) parti, tramite il protocollo HTTP:

  • Il server : questa parte è responsabile delle pubblicazioni
  • .
  • Il cliente - questa parte richiede pagine dal server e le visualizza all'utente. Nella maggior parte dei casi, il client è un browser web .
    • L'utente - L'utente utilizza il Cliente per navigare sul Web, compilare moduli, guardare video online, ecc.

La programmazione di ogni parte fa riferimento al codice eseguito su una macchina specifica, sul server o sul client.

Esempio di base

  1. L'utente apre il suo browser web (il Cliente ).
  2. L'utente passa al link .
  3. Il Cliente (per conto dell'utente ), invia una richiesta al link (il Server ), per la loro home page.
  4. Il Server riconosce la richiesta e risponde al client con alcuni metadati (chiamati intestazioni ), seguiti dal codice sorgente della pagina.
  5. Il Cliente riceve quindi il codice sorgente della pagina e lo rende in un sito Web umano visibile.
  6. I utenti tipi Stack Overflow nella barra di ricerca, e preme Invio
  7. Il Cliente invia tali dati al Server .
  8. Il Server elabora i dati e risponde con una pagina che corrisponde ai risultati della ricerca.
  9. Il Cliente , ancora una volta, esegue il rendering di quella pagina per Utente da visualizzare.

Programmazione

Programmazione lato server

La programmazione lato server, è il nome generico per i tipi di programmi che vengono eseguiti su Server .

Utilizza

  • Elabora input utente.
  • Compila pagine.
  • Struttura delle applicazioni web.
  • Interagisci con la memoria permanente (SQL, file).

Lingue di esempio

  • PHP
  • Python
  • ASP.Net in C #, C ++ o Visual Basic.
  • Quasi tutti i linguaggi (C ++, C #, Java). Questi non sono stati progettati specificamente per l'attività, ma ora vengono spesso utilizzati per i servizi Web a livello di applicazione.

Programmazione lato client

Molto simile al lato server, la programmazione lato client è il nome di tutti i programmi che vengono eseguiti sul Client .

Utilizza

  • Crea pagine Web interattive.
  • Fai in modo che le cose accadano dinamicamente sulla pagina web.
  • Interagisci con la memoria temporanea e la memoria locale (cookie, localStorage).
  • Invia richieste al server e recupera i dati da esso.
  • Fornisci un servizio remoto per le applicazioni client, come la registrazione del software, la consegna di contenuti o il gioco multiplayer remoto.

Lingue esemplificative

  • JavaScript (principalmente)
  • HTML *
  • CSS *
  • Qualsiasi lingua in esecuzione su un dispositivo client che interagisce con un servizio remoto è un linguaggio lato client.

* HTML e CSS non sono realmente "linguaggi di programmazione" per sé. Sono sintassi di markup con cui il Cliente esegue il rendering della pagina per Utente .

    
risposta data 07.08.2018 - 20:54
fonte
27

In parole semplici:

Qui parlerò solo di programmazione web.

La

programmazione lato client ha principalmente a che fare con l'interfaccia utente, con cui l'utente interagisce. Nello sviluppo web è il browser, nella macchina dell'utente, che esegue il codice, ed è principalmente fatto in javascript, flash, ecc. Questo codice deve essere eseguito in una varietà di browser.

Le sue attività principali sono:

  • convalida dell'input (la convalida deve essere eseguita nel server. È possibile utilizzare una convalida ridondante nel client per evitare chiamate al server quando la velocità è molto critica.)
  • animazione
  • manipolazione degli elementi dell'interfaccia utente
  • applicare gli stili
  • alcuni calcoli vengono eseguiti quando non desideri che la pagina si aggiorni così spesso

Il responsabile della programmazione front-end deve sapere :

  • JavaScript
  • css
  • HTML
  • progettazione grafica di base
  • Ajax
  • forse Flash
  • alcune librerie javascript di terze parti come JQuery
  • Progettazione dell'interfaccia utente
  • progettazione delle informazioni, ecc.
La

programmazione lato server ha a che fare con la generazione di contenuti dinamici. Funziona su server. Molti di questi server sono "senza testa". La maggior parte delle pagine web non sono statiche, ma cercano un database per mostrare all'utente informazioni aggiornate e personalizzate. Questi lati interagiscono con il back-end, come dire, il database.

Questa programmazione può essere eseguita in molte lingue:

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

Questo codice ha a che fare con:

  • Interrogazione del database
  • Codifica i dati in html
  • Inserisci e aggiorna le informazioni nel database
  • Regole e calcoli aziendali

Il responsabile della programmazione lato server deve sapere:

  • alcune delle lingue sopra menzionate
  • HTML
  • SQL,
  • script di shell linux / unix
  • OOP
  • regole aziendali, ecc.
risposta data 24.10.2012 - 16:36
fonte
13

Altre risposte si sono concentrate su che è la programmazione lato client e lato server: quali sono le lingue maggiormente utilizzate, quali attività devono essere eseguite, ecc.

Questo è assolutamente giusto, ma mi manca un po 'di attenzione su quali sono le differenze tra entrambi i tipi di programmazione, nel contesto della programmazione web. Lasciatemi provare ad affrontarlo.

Sicurezza e permessi

Nella programmazione lato client, non hai accesso al sistema completo, a causa di problemi di sicurezza. L'utente non si fida necessariamente di ogni singolo codice scaricato dal Web ed eseguito sulla sua macchina, e questo è l'obiettivo principale della progettazione dell'ambiente client-side (il motore del browser e JavaScript): fornire un ambiente isolato dove il codice client può essere eseguito ma non può accedere a qualcosa al di fuori dell'ambito consentito.

Nella programmazione lato server, è buona norma limitare anche l'accesso di ogni applicazione al sistema sottostante, ma questo è molto meno applicato a te, dato che alla fine tu o la tua azienda avete il controllo di quel sistema . Questo design "a gabbia isolata" è non integrato negli strumenti e nei linguaggi di programmazione lato server, ma viene eseguito attraverso l'installazione (utilizzando utenti dedicati con autorizzazioni limitate, scegliendo le porte che richiedono o non richiedono permessi di root, ecc.)

Distribuzione e piattaforma

Nella programmazione lato server, la distribuzione deve avvenire dall'esterno del codice, utilizzando un qualche tipo di strumento (anche se è make install o git clone ), e questa distribuzione è di solito manuale - o almeno, è previsto che accada in un modo semi-supervisionato. Il sistema (ovvero il sistema operativo) sul quale viene distribuito è generalmente uniforme su un certo numero di macchine, ma può essere strongmente personalizzato in base alle proprie esigenze.

Nella programmazione lato client, la distribuzione avviene dal codice lato server, che serve i client automaticamente e senza supervisione. Il sistema sottostante (che significa principalmente il browser) può essere molto diverso su un numero molto più grande di macchine. Per rendere fattibile l'implementazione, è necessario mantenere gli standard, e c'è una tendenza molto più strong verso una singola lingua e ambiente.

Ecco perché copiare codice lato server da un computer a un altro può richiedere settimane, mentre il codice lato client è di solito banale da eseguire su macchine diverse.

Effetti di stato e secondari

(Disclaimer: questo è di gran lunga il punto più soggettivo di tutti. Probabilmente ci sono molti aspetti sbagliati nella mia argomentazione, è solo un'ipotesi interessante, secondo me.)

Nella programmazione lato server, lo stato è una preoccupazione molto più grande, che significa come recuperare e aggiornare i dati su richiesta dell'utente con la possibilità di conflitti dovuti alla concorrenza. Anche se la maggior parte di questa complessità viene scaricata su un server di database, è responsabilità del codice lato server consentire al database di mantenere le sue garanzie sull'integrità dei dati utilizzando la sua interfaccia correttamente (ad esempio non utilizzare una cache per gli aggiornamenti che non sono mai visti da il DB), mentre è anche un obiettivo del codice lato server non sovraccaricare il database con il lavoro e mantenere l'utente in attesa di risposta.

Nella programmazione lato client, presentare i risultati all'utente è una preoccupazione molto più grande, e questo implica effetti secondari (principalmente la stampa sullo schermo). Questo non vuol dire che non vi siano stati coinvolti (ad esempio i cookie), solo che l'obiettivo principale del codice è di interfacciarsi effettivamente con l'utente, e questo non può accadere senza effetti secondari.

Questo è il motivo per cui la programmazione lato client di solito richiede (ad un certo punto) guardando lo schermo con una demo, per verificare che tutti i colori e il layout siano corretti, mentre la programmazione lato server può avvenire quasi esclusivamente in un ambiente orientato al testo , dove i test automatici verificano che la logica stia ancora facendo quello che dovrebbe fare.

    
risposta data 12.01.2015 - 13:37
fonte
1

Questo non significa in alcun modo essere una risposta accettata; piuttosto lo offro come punto complementare (in risposta alla domanda when do you use each of them ) che deve ancora essere menzionato nelle altre risposte fino ad oggi, vale a dire:

Protezione della proprietà intellettuale

Il codice sorgente che si trova sul lato client (come in Javascript) è facilmente leggibile e / o può essere decodificato se è stato offuscato.

Il codice sorgente che si trova sul lato server, tuttavia, può proteggere in modo sicuro gli algoritmi proprietari e restituire solo il risultato; una scatola nera di sorta.

    
risposta data 16.03.2016 - 20:00
fonte

Leggi altre domande sui tag