Come funziona un'interfaccia C ++ con il web (su Google, ad esempio)?

11

Google è ben noto per la ridicola quantità di C ++ che hanno codificato nel corso degli anni. Correggimi se sbaglio, ma gran parte del motore di ricerca principale di Google è scritto in C ++, non è vero? Come si fa a prendere un programma scritto in C ++ e ad interfacciarlo con un sito web?

Nota: non sto cercando in che modo Google in particolare lo fa, solo come potrebbe essere fatto in generale.

    
posta Maniacal Science 06.05.2012 - 08:34
fonte

4 risposte

16

Qualsiasi software web invierà e riceverà solo messaggi tramite socket, tutto qui. Puoi usare qualsiasi lingua per farlo, non è specifico per le lingue.

Tuttavia, è meglio non reinventare la ruota per questo tipo di lavoro, quindi la maggior parte dei linguaggi utilizzati per le applicazioni web hanno il loro set di framework che fa la comunicazione di base per te, per permetterti di concentrarti sulle specificità di il tuo progetto. Ruby ha ROR, Python ha Django e altri, Java come ... ecc.

C ++ storicamente non aveva nessun framework simile fino a poco tempo fa:

  • un modo moderno in C ++ è usare qualcosa come CPPCMS ;
  • c'è anche uno sforzo per impostare una libreria standard per web dev. in C ++, uno di questi è cpp-netlib ;
  • Recentemente è stata rilasciata una libreria API REST multipiattaforma per C ++ 11 di Microsoft chiamata Casablanca che aiuta anche ;

Ora, la "ridicola quantità di C ++" su cui Google è costruito è necessaria perché è necessario disporre di moduli ad altissime prestazioni per risolvere il tipo di problemi risolti da Google. Buona fortuna cercando di fare lo stesso senza alcun modulo scritto in una lingua incentrata sulle prestazioni. Raccomando di leggere meglio il wiki CPPCMS su questo argomento. Per fatti storici, Amazon, Google, Facebook (vedi interviste Hip Hop e recenti Alexandrescu) e alcuni altri servizi web veramente grandi hanno core in C ++, per ovvi motivi computazionali che sono più importanti del tempo perso in termini di produttività del programmatore.

CPPCMS e cpp-netlib sono open source, puoi studiarli se vuoi sapere come far funzionare un'applicazione come un servizio web usando C ++. Detto questo, qualsiasi applicazione in grado di ascoltare porte e inviare dati alla porta può potenzialmente farlo, si tratta di protocoli (TCP / IP, HTTP, ecc.) , non di codice.

    
risposta data 06.05.2012 - 10:41
fonte
3

Come qualsiasi altra lingua ....

Apri un socket TCP, invia e ricevi messaggi http. Analizzali e fai cose in base al contenuto.

Guarda Qt per un esempio su un framework c ++ che supporta alcune funzionalità http di base.

Esistono anche framework web dedicati per C ++. Non molti né largamente usati, AFAIK. Probabilmente perché se fai web via C ++, stai facendo comunque qualcosa di molto specializzato e vuoi avere il pieno controllo su tutto.

    
risposta data 06.05.2012 - 08:51
fonte
2

Dal punto di vista del cliente, se hai un programma C / C ++ e vuoi usarlo per parlare con Internet, userai libcurl. È praticamente una libreria standard (e completa) per connettersi agli url http per inviare e ricevere dati. Ci sono diverse altre librerie - Microsoft ne ha poche, ce ne sono diverse altre open source.

Questo è per semplici URL vecchi su http (o SMTP, o FTP, o Gopher, o .. libcurl è molto completo!) Se stai cercando di utilizzare i servizi web su SOAP, puoi usare uno di tanti altri librerie come gsoap.

Per quanto riguarda il server, è necessario un server web o un framework che esponga il proprio codice C ++. Anche in questo caso ci sono molti modi per farlo: i primi programmi Web erano tutti C / C ++, scritti come programmi CGI in cui il server web chiamava la tua app usando una forma di IPC. Da allora, abbiamo Wt, Qt, cppCMS, ffead e tutti quelli di Microsoft (ISAPI, ATLServer e ora Casablanca).

Penso che la ragione per cui no-onne usa veramente C ++ per il loro progrmaming web è perché gli altri linguaggi vengono pre-confezionati con queste librerie. C ++ (come sempre) devi andare a cercare una libreria da usare, mentre PHP è appena pronto per il web.

    
risposta data 06.05.2012 - 15:48
fonte
-4

L'architettura client-server lascia che ciò accada.

C ++ può essere usato per sviluppare il server.

Sul lato client, le tecnologie web possono essere utilizzate per comunicare con il server.

    
risposta data 06.05.2012 - 10:26
fonte

Leggi altre domande sui tag