web-dev-qa-db-ja.com

1つはどのようにして(たとえば、Googleで)WebとC ++を結び付けますか?

Googleは、長年にわたってコーディングしてきた途方もない量のC++でよく知られています。私が間違っている場合は修正してください。ただし、Googleのコア検索エンジンの大部分はC++で記述されているのではないですか。 C++で記述されたプログラムをどのようにしてWebサイトとインターフェイスさせるのですか?

注:私は特にGoogleがこれをどのように行うかを探しているのではなく、それが一般的にどのように行われるかを探しています。

12

すべてのWebソフトウェアは、ソケットを介してメッセージを送受信するだけです。これを行うには任意の言語を使用できますが、これは言語に固有のものではありません。

ただし、この種の作業の車輪を作り直さない方がよいでしょう。Webアプリケーションの実行に使用されるほとんどの言語には、プロジェクトの特定性に集中できるように、基本的な通信を行う一連のフレームワークがあります。 Ruby RORあり、PythonありDjangoおよびその他、Java .. 。等。

C++は歴史的に最近まで類似のフレームワークを持っていませんでした:

  • それを行う最新のC++の方法は、 [〜#〜] cppcms [〜#〜] ;のようなものを使用することです。
  • web開発用の標準ライブラリをセットアップする取り組みもあります。 C++では、そのうちの1つは cpp-netlib です。
  • 最近、クロスプラットフォームのリリースがありましたREST MicrosoftのC++ 11用APIライブラリ Casablanca と呼ばれ、これも役立ちます。

さて、Googleが解決するような問題を解決するには非常に高性能なモジュールが必要なので、Googleが構築した「とんでもない量のC++」が必要です。パフォーマンスに焦点を当てた言語で書かれたモジュールなしで同じことをやろうと頑張ってください。よりよく理解するために、このテーマについてCPPCMS wikiを読むことをお勧めします。歴史的事実については、Amazon、Google、Facebook(Hip Hopと最近のAlexandrescuのインタビューを参照)および他のいくつかの本当に大きなWebサービスは、プログラマーの生産性で失われる時間よりも重要な明らかな計算上の理由から、C++にコアを持っています。

CPPCMSとcpp-netlibはオープンソースなので、C++を使用してアプリケーションをWebサービスとして機能させる方法を知りたい場合は、それらを調べることができます。つまり、ポートをリッスンしてデータをポートに送信できるすべてのアプリケーションがこれを実行できる可能性がありますプロトコル(TCP/IP、HTTPなど)がすべてです、コードではありません。

16
Klaim

他の言語と同じように...

TCPソケットを開き、httpメッセージを送受信します。それらを解析し、コンテンツに基づいて処理を行います。

基本的なhttp機能をサポートするc ++フレームワークの例については、Qtを参照してください。

C++専用のWebフレームワークもあります。多くはなく、広く使用されていない、AFAIK。おそらく、C++を介してWebを行う場合、とにかく非常に専門的なことを行っており、すべてを完全に制御する必要があるためです。

3
Macke

クライアントの観点からすると、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に行く準備ができているだけです。

2
gbjbaanb