6

私は基本的に、その問題に取り組む方法に関するヒントとコツを探しています。

私はC++で書かれたサーバーソフトウェア(Linux)を持っています。私がする必要があるのは、apache Webサーバーへのhttp呼び出しを介して、そのソフトウェア内で生成された情報を提供することです。

もちろん、データベースにデータを格納してサーブレットを作成したり、IPCを使用してデータを取得したりすることは可能ですが、シンプルで1つのファイルにまとめたいと思います。また、そのアイデアがうまくいくかどうかも知りたいです。

したがって、ワークフローは次のようになります。クライアント->ApacheWebサーバー->C++ソフトウェア

Apache-> C ++接続を処理できる既存のライブラリまたは何かがありますか?それとも、リクエストをC ++のソケットにリダイレクトして、手動で行うようなものでしょうか?基本的には、Tomcatコネクタのようなものです。

編集

サーバーソフトウェアはバックグラウンドで永続的に実行されており、呼び出しによって「起動」されるべきではないことに注意してください

4

1 に答える 1

6

いくつかのオプションがあります。

CGIはシンプルで、永遠に存在しています。CGIでは、WebサーバーはWebリクエストごとに個別のプロセスを生成します。コメントで述べたように、C++プログラムへのRPC呼び出しを行うCGIスクリプトを作成できます。

FastCGIはCGIの代替です。Webリクエストごとに個別のプロセスを生成する代わりに、Webサーバーが複数のWebリクエストを単一の長時間実行プロセスにディスパッチできるようにするためのプロトコルを定義します。これは、Webアプリケーションで非常にうまく機能します。ただし、Webインターフェイスを追加する必要がある既存のサーバープロセスがあるシナリオでは、それも機能しない可能性があります。私の限られた理解に基づくと、Webサーバーは通常、既存のFastCGIプロセスに接続するのではなく、(着信要求、サーバーの負荷、アイドル時間などに応じて)長時間実行されるFastCGIプロセス自体を開始および停止することを期待します。(ほとんどのサーバーでは、これを再構成できると思いますが、デフォルトではありません。)

また、 Mongoosecpp-netlibなどのWebサーバーをC ++プロセスにいつでも埋め込み、リクエストをプロキシするようにApacheを設定することもできます。これが最善のアプローチかもしれません。(たとえば、マングースは非常に簡単に埋め込むことができます。)

最後に、本格的なApacheモジュールを使用できます(C ++サーバーをApacheモジュールとして再設計するか、Apacheモジュールを使用してC ++サービスと通信します)。このアプローチを採用するCPPSERVのような既存のプロジェクトがありますが、これはおそらくあなたがやりたいよりも複雑です。

于 2013-02-15T13:50:17.477 に答える