Google ist bekannt für die lächerliche Menge an C ++, die sie im Laufe der Jahre codiert haben. Korrigieren Sie mich, wenn ich falsch liege, aber ein großer Teil der Kernsuchmaschine von Google ist in C ++ geschrieben, nicht wahr? Wie nimmt man ein in C ++ geschriebenes Programm und verbindet es mit einer Website?
Hinweis: Ich suche nicht nach der Vorgehensweise von Google im Besonderen, sondern nach der Vorgehensweise im Allgemeinen.
web-development
c++
web-applications
Maniacal Science
quelle
quelle
Antworten:
Jede Web-Software sendet und empfängt Nachrichten nur über Sockets, das ist alles. Sie können dazu jede Sprache verwenden, sie ist nicht sprachspezifisch.
Sie sollten das Rad für diese Art von Arbeit jedoch nicht neu erfinden, damit die meisten Sprachen, die für Webanwendungen verwendet werden, über ein Framework verfügen, das die grundlegende Kommunikation für Sie übernimmt, damit Sie sich auf die Besonderheiten Ihres Projekts konzentrieren können. Ruby hat ROR, Python hat Django und andere, Java als ... etc.
C ++ hatte historisch gesehen bis vor kurzem kein ähnliches Framework:
Jetzt ist die "lächerliche Menge an C ++", über die Google aufgebaut ist, notwendig, da Sie sehr leistungsstarke Module benötigen, um die Art von Problemen zu lösen, die Google löst. Viel Glück beim Versuch, dasselbe zu tun, ohne dass ein Modul in einer auf Leistung ausgerichteten Sprache geschrieben ist. Ich empfehle, das CPPCMS-Wiki zu diesem Thema zu lesen, um es besser zu verstehen. Aus historischen Gründen haben Amazon, Google, Facebook (siehe Hip Hop und die jüngsten Interviews mit Alexandrescu) und einige andere wirklich große Webdienste Kerne in C ++, und zwar aus offensichtlichen rechnerischen Gründen, die wichtiger sind als der Zeitverlust für die Produktivität der Programmierer.
CPPCMS und cpp-netlib sind Open Source. Sie können sie studieren, wenn Sie wissen möchten, wie eine Anwendung mit C ++ als Webdienst funktioniert. Das heißt, jede Anwendung, die Ports abhören und Daten an den Port senden kann, kann dies möglicherweise. Es geht nur um Protokolle (TCP / IP, HTTP usw.) , nicht um Code.
quelle
Wie jede andere Sprache ....
Öffnen Sie einen TCP-Socket, senden und empfangen Sie http-Nachrichten. Analysiere sie und mache Sachen basierend auf Inhalten.
In Qt finden Sie ein Beispiel für ein C ++ - Framework, das einige grundlegende http-Funktionen unterstützt.
Es gibt auch spezielle Webframeworks für C ++. Nicht viele noch weit verbreitet, AFAIK. Wahrscheinlich, weil Sie, wenn Sie über C ++ im Internet arbeiten, sowieso etwas sehr Spezialisiertes tun und die volle Kontrolle über alles haben möchten.
quelle
Wenn Sie aus Client-Sicht ein C / C ++ - Programm haben und es verwenden möchten, um mit dem Internet zu kommunizieren, verwenden Sie libcurl. Es ist so ziemlich eine Standardbibliothek (und eine umfassende Bibliothek), um eine Verbindung zu http-URLs herzustellen und Daten zu senden und zu empfangen. Es gibt mehrere andere Bibliotheken - Microsoft hat einige, es gibt mehrere Open Source-Bibliotheken.
Dies gilt für einfache alte URLs über http (oder SMTP oder FTP oder Gopher oder .. libcurl ist sehr umfassend!). Wenn Sie versuchen, Webdienste über SOAP zu nutzen, können Sie eine von vielen anderen Bibliotheken wie z gsoap.
Für die Serverseite benötigen Sie einen Webserver oder ein Framework, das Ihren C ++ - Code verfügbar macht. Auch hier gibt es viele Möglichkeiten - die frühesten Webprogramme waren alle C / C ++, geschrieben als CGI-Programme, bei denen der Webserver Ihre App mithilfe einer IPC-Form aufrief. Seitdem haben wir Wt, Qt, cppCMS, ffead und alle von Microsoft (ISAPI, ATLServer und jetzt Casablanca).
Ich denke, der Grund, warum no-onne C ++ wirklich für sein Web-Programm verwendet, ist, dass die anderen Sprachen mit diesen Bibliotheken vorinstalliert sind. In C ++ (wie immer) müssen Sie eine Bibliothek suchen, die Sie verwenden können, während PHP nur für das Web bereit ist.
quelle
Die Client-Server-Architektur ermöglicht dies.
C ++ kann verwendet werden, um den Server zu entwickeln.
Auf der Clientseite können Webtechnologien verwendet werden, um mit dem Server zu kommunizieren.
quelle