Googleは、長年にわたってコーディングしてきた途方もない量のC++でよく知られています。私が間違っている場合は修正してください。ただし、Googleのコア検索エンジンの大部分はC++で記述されているのではないですか。 C++で記述されたプログラムをどのようにしてWebサイトとインターフェイスさせるのですか?
注:私は特にGoogleがこれをどのように行うかを探しているのではなく、それが一般的にどのように行われるかを探しています。
すべてのWebソフトウェアは、ソケットを介してメッセージを送受信するだけです。これを行うには任意の言語を使用できますが、これは言語に固有のものではありません。
ただし、この種の作業の車輪を作り直さない方がよいでしょう。Webアプリケーションの実行に使用されるほとんどの言語には、プロジェクトの特定性に集中できるように、基本的な通信を行う一連のフレームワークがあります。 Ruby RORあり、PythonありDjangoおよびその他、Java .. 。等。
C++は歴史的に最近まで類似のフレームワークを持っていませんでした:
さて、Googleが解決するような問題を解決するには非常に高性能なモジュールが必要なので、Googleが構築した「とんでもない量のC++」が必要です。パフォーマンスに焦点を当てた言語で書かれたモジュールなしで同じことをやろうと頑張ってください。よりよく理解するために、このテーマについてCPPCMS wikiを読むことをお勧めします。歴史的事実については、Amazon、Google、Facebook(Hip Hopと最近のAlexandrescuのインタビューを参照)および他のいくつかの本当に大きなWebサービスは、プログラマーの生産性で失われる時間よりも重要な明らかな計算上の理由から、C++にコアを持っています。
CPPCMSとcpp-netlibはオープンソースなので、C++を使用してアプリケーションをWebサービスとして機能させる方法を知りたい場合は、それらを調べることができます。つまり、ポートをリッスンしてデータをポートに送信できるすべてのアプリケーションがこれを実行できる可能性がありますプロトコル(TCP/IP、HTTPなど)がすべてです、コードではありません。
他の言語と同じように...
TCPソケットを開き、httpメッセージを送受信します。それらを解析し、コンテンツに基づいて処理を行います。
基本的なhttp機能をサポートするc ++フレームワークの例については、Qtを参照してください。
C++専用のWebフレームワークもあります。多くはなく、広く使用されていない、AFAIK。おそらく、C++を介してWebを行う場合、とにかく非常に専門的なことを行っており、すべてを完全に制御する必要があるためです。
クライアントの観点からすると、C/C++プログラムがあり、それを使用してインターネットと通信したい場合は、libcurlを使用します。これは、httpのURLに接続してデータを送受信するための、ほぼ標準的な(そして包括的な)ライブラリです。他にもいくつかのライブラリがあります-Microsoftにはいくつかありますが、いくつかのオープンソースライブラリがあります。
これで、http(またはSMTP、FTP、Gopher、または.. libcurlを介した単純な古いURL)が対象になります。SOAPを介してWebサービスを利用する場合は、次のような他の多くのライブラリを使用できます。 gsoap。
サーバー側では、C++コードを公開するWebサーバーまたはフレームワークが必要です。繰り返しますが、これには多くの方法があります。最も古いWebプログラムはすべてC/C++で、CGIプログラムとして記述され、WebサーバーがIPCの形式を使用してアプリを呼び出しました。それ以来、Wt、Qt、cppCMS、ファード、およびMicrosoftのすべて(ISAPI、ATLServer、そして現在はカサブランカ)を使用しています。
No-onneが実際にWebプログラミングにC++を使用する理由は、他の言語がこれらのライブラリーにあらかじめパッケージ化されているためです。 C++(いつものように)を使用するにはライブラリを探しに行く必要がありますが、PHPはWebに行く準備ができているだけです。