CまたはC++で高性能(理想的にはイベントとオープンソース)のWebサーバーはありますか?
アプリケーションでメソッド/関数を呼び出し、HTTPリクエストクラス/構造体を入力し、それからHTTPレスポンスクラス/構造体を入力して返すことができるようにしたいと思います。
オープンソースでない場合は、ロングポーリング接続、キープアライブなどのサポートを組み込む必要があります。そうでなければ、これらのものを自分で追加できると思います。
使用可能なそのようなサーバーがわからない場合は、タスクに合わせて独自のWebサーバーを作成することをお勧めしますか? できないファイルベースであり、高性能C/C++で作成する必要があります。
編集:私はRuby Mongrel for Cのようなものを考えています。
多くの高性能Webサーバー(クローズドソースサーバーを含む)で使用できるFastCGI実行可能ファイルを作成することをお勧めします。
Axel Gneitingと同じことを提案しますが、このアプローチをとる理由を答えてくれました。
1)HTTPはプロトコルとして簡単ではありません-独自のサーバーを作成したり、既製のソリューションを修正したりすることは非常に複雑なタスクです-利用可能なAPIを使用して別の処理エンジンを実装するよりもはるかに複雑です
2)(変更されていない)メインストリームWebサーバーを使用すると、必要以上の機能が提供されます(そのため、スペースが増えます)。
3)(変更されていない)メインストリームWebサーバーを使用することは、通常、homebrewシステムよりもはるかに広範囲にテストされ、文書化されていることを意味します。
4)..および安全で安定している可能性が高い。
5)fastCGIを使用すると、あらゆる種類の言語を使用して、C++およびCを含むバックエンド処理を開発できます。これを容易にする 標準ツールキット が利用可能です。
6)あるいは、多くのWebサーバーがインプロセスインタープリターエンジンの実行をサポートしています(例:mod_php、mod_Perl)。ただし、独自のネイティブコードをモジュールとして実行することはお勧めしません。
ファイルベースにすることはできません。
え?どういう意味ですか?
mongoose:1つのファイル。シンプルで使いやすい。 asycn ioではなく、組み込みの特定の目的に最適です。
グワン。優秀な。クラッシュしません。非常によく計画された構成。言い換えれば、c/c ++開発にとって非常にスマートで簡単であり、nginxと比較して非常にクリーンで賢明なAPIです。コアごとにスレッドを提供します。またはあなたが指定するもの。素晴らしい選択。最大の欠点(この領域に欠けている可能性があります):コードをステップスルーできません。
libevent:シングルコアマシンでは、シングルスレッドはデメリットではありません。結局のところ、そのポイントは非同期I/Oです。他のコア用のマルチスレッドがあります。
nginx:個人的な経験はありません。パッチサーバーで深刻な地位を得ています。 (ひどく混乱するAPI)
boost asio:asynchio(asio)用のC++ライブラリ。驚くばかり。私のような単純な人のためのフレンドリーで高レベルのAPIが必要です。その他、php、Java、javascript、node.js、その他のWeb言語から来た人。
python bottle:python web apps。has/isは組み込みのhttpdサーバー、libeventやnode.jsなど)
node.js:javascript asyncioサーバー。優れた選択。残念ながら、退屈になるJavaScriptでプログラムする必要があります。仕事を成し遂げるために言うべきことがありますが、プロセス中に自分自身を楽しむために言われることもあります。うまくいけば、node.phpが出てくる人はいないでしょう
私は熱心です nginx ユーザー; nginxはCで書かれています。 nginxはあなたにとってうまくいくようです。 nginxから最高の速度を引き出すには、nginxモジュールを作成します。以下に サードパーティモジュール を示します。このモジュールを調べると、必要なものを把握できます。
長いポーリングの要件については、httpプッシュモジュールをご覧ください。