Come si interfaccia C ++ con il Web (ad esempio, su Google)?


12

Google è ben noto per la ridicola quantità di C ++ che ha 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 può prendere un programma scritto in C ++ e interfacciarlo con un sito Web?

Nota: non sto cercando il modo in cui Google lo fa in particolare, ma come potrebbe essere fatto in generale.


Bene, Google ha creato la maggior parte delle loro applicazioni in Python e ora anche Java è molto usato. Google non si limiterebbe all'utilizzo delle lingue. Per l'interfaccia Web, vengono utilizzati socket. Niente di C ++, ma di apis di C. C ++ non ha il suo !!
user1708086,

Risposte:


16

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

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

Storicamente il C ++ non aveva un framework simile fino a poco tempo fa:

  • un modo moderno di fare C ++ è usare qualcosa come CPPCMS ;
  • c'è anche uno sforzo per impostare una libreria standard per gli sviluppatori web. 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 "quantità ridicola di C ++" su cui è costruito Google è necessaria perché è necessario disporre di moduli ad altissime prestazioni per risolvere il tipo di problemi che Google risolve. Buona fortuna cercando di fare lo stesso senza alcun modulo scritto in un linguaggio incentrato sulle prestazioni. Consiglio di leggere il wiki CPPCMS su questo argomento per capire meglio. Per fatti storici, Amazon, Google, Facebook (vedi Hip Hop e recenti interviste ad Alexandrescu) e alcuni altri servizi web davvero grandi hanno core in C ++, per ovvie ragioni computazionali che sono più importanti del tempo perso sulla produttività del programmatore.

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


Non posso ancora esprimere il mio voto tranquillo, ma ho accettato la tua risposta. Non sapevo che esistesse qualcosa di simile a CPPCMS, ma è bene saperlo. Grazie!
Maniacal Science,

1
Capisco, è piuttosto nuovo rispetto agli altri. Altre soluzioni povere (secondo il mio consiglio) esistevano in precedenza, ma penso che questa sia la più adatta alla lingua e al problema.
Klaim,

1
Il C ++ aveva tali framework: il web veniva eseguito interamente con le app cgi, le dll ISAPI di MS o persino il server ATL di Microsoft. Al giorno d'oggi, abbiamo diversi framework web c ++ e Microsoft sta lavorando su Casablanca, che offre c ++ come servizi cloud.
gbjbaanb,

Va detto che la maggior parte delle applicazioni web vive dietro un server front-end e parla con esso sia CGI, che passa i dati in ambiente, stdin e stdout o FCGI, che utilizza socket e un protocollo un po 'più semplice di HTTP.
Jan Hudec,

3

Come qualsiasi altra lingua ....

Aprire un socket TCP, inviare e ricevere 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 web framework dedicati per C ++. Non molti né ampiamente utilizzati, AFAIK. Probabilmente perché se fai web via C ++, stai comunque facendo qualcosa di molto specializzato e vuoi il pieno controllo di tutto.


Probabilmente avrei dovuto essere in grado di capirlo da solo. L'unica programmazione web che ho fatto è stata attraverso Django, quindi è stato tutto sottratto.
Maniacal Science,

Ho capito che. Django è carino, ma se ci scavi dentro vedrai che la parte centrale non è molto complicata. Ora, scrivere un equivalente di Django in C ++, c'è una sfida divertente. ;)
Macke,

@Macke Beh, immagino che CPPCMS sia una sfida divertente, non sono sicuro però. La mancanza di reti standard in C ++ non aiuta, ma ci sono tonnellate di soluzioni per lavorarci. Il problema principale con C ++ credo sia più il fatto che è difficile fare aggiornamenti senza riavviare l'eseguibile, ed è anche così lungo da compilare a volte. CPPCMS aiuta in questo però.
Klaim,

A proposito, per una libreria c ++ di rete asincrona moderna e buona, raccomando la libreria ASIO, disponibile come parte dell'eccellente pacchetto Boost. Ho scritto alcune semplici applicazioni client / server TCP / UDP, ed è piuttosto bello.
Macke,

2

Dal punto di vista del client, se si dispone di un programma C / C ++ e si desidera utilizzarlo per parlare con Internet, si userebbe libcurl. È praticamente una libreria standard (e completa) per connettersi agli URL http per inviare e ricevere dati. Esistono diverse altre librerie: Microsoft ne ha alcune, ce ne sono diverse open source.

Ora questo è per semplici vecchi URL su http (o SMTP, o FTP, o Gopher, o .. libcurl è molto completo!) Se stai cercando di consumare servizi web su SOAP, puoi usare una di molte altre librerie come gsoap.

Per il lato server, è necessario un server Web o un framework che esponga il codice C ++. Ancora una volta 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 il motivo per cui no-onne utilizzi davvero il C ++ per i loro programmi Web è perché le altre lingue sono preconfezionate con queste librerie. C ++ (come sempre) devi trovare una libreria da usare, mentre PHP è appena pronto per il web.


-4

L'architettura client-server consente che ciò avvenga.

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

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.