グーグルは、長年コーディングしてきた途方もない量のC ++で有名です。間違っている場合は修正してください。ただし、Googleの主要な検索エンジンの大部分はC ++で作成されています。C ++で書かれたプログラムをどのように取り、Webサイトとインターフェイスさせるのですか?
注:私は、特に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フレームワークもあります。あまり知られておらず、広く使われているわけでもない。おそらく、C ++を介してWebを行う場合は、とにかく非常に特殊化された操作を行っており、すべてを完全に制御する必要があるためです。
クライアントの観点から、C / C ++プログラムがあり、それを使用してインターネットと通信したい場合、libcurlを使用します。これは、データを送受信するためにhttp urlに接続するための標準(および包括的な)ライブラリです。他にもいくつかのライブラリがあります-マイクロソフトにはいくつかありますが、いくつかのオープンソースのものがあります。
これで、http経由の単純な古いURL(またはSMTP、FTP、Gopher、またはlibcurlが非常に包括的です!) gsoap。
サーバー側では、C ++コードを公開するWebサーバーまたはフレームワークが必要です。繰り返しますが、これを行うには多くの方法があります-初期のWebプログラムはすべてC / C ++であり、WebサーバーがIPCの形式を使用してアプリを呼び出すCGIプログラムとして記述されていました。それ以来、Wt、Qt、cppCMS、ffead、およびMicrosoftのすべて(ISAPI、ATLServer、現在はカサブランカ)があります。
no-onneがWebプログラミングに実際にC ++を使用する理由は、他の言語がこれらのライブラリにあらかじめパッケージ化されているためだと思います。C ++(いつものように)使用するライブラリを見つける必要がありますが、PHPはWebに移行する準備ができています。