8

私のアプリケーションの1つに、最小限のWebインターフェイスを提供したいと思います。このコアアプリケーションはC++で記述されており、フレームワークとしてQt4を使用します。いくつかの計算や複雑なデータ管理を行うために作成したライブラリも使用しているため、この既存のコードをWebインターフェイスのバックエンドとして使用したいと思います。

アイデア1:組み込みWebサーバーを使用する

私が最初に試した(そしてある程度は機能した)のは、組み込みWebサーバー(mongoose)を使用することでした。ご想像のとおり、これは非常に薄いライブラリであり、多くのこと(セッション管理、Cookieなど)を自分で実装する必要があります。

アイデア2:通常のWebサーバーを使用し、アプリケーションにfcgi / cgi/scgiバックエンドを追加する

次に頭に浮かんだのは、成熟したコンパクトなWebサーバー(たとえばlighttpd)を使用し、それにfcgi / scgi/cgiバックエンドを提供することでした。Pylons、PHP、RoRなどの優れたフレームワークを使用してWebアプリケーションを作成し(...)/a/...、バックエンドと直接通信できるようなURLプレフィックスを付けることができます。

libfcgiをアプリケーションに実装しようとしましたが、必要以上に面倒に見えます(たとえば、アプリとWebサーバー間でデータを渡し、FCGIライブラリを介してデータをトンネリングするには、独自のTCP/IPソケットを実装する必要があります。 meh)

アイデア3:最も基本的なことを実行し、残りを実行するために通常のWebサーバーとフレームワークを使用するアプリケーションのコマンドラインバージョンを作成する

これは私の頭に浮かんだ3番目のアイデアです。基本的には、従来の方法(PHP、RoRなど)を使用してWebアプリケーションを作成し、アプリケーションのコマンドラインバージョンを使用してデータを処理し、必要に応じて返すことです。


Webアプリケーションの作成経験はありますが、こんなことをする必要はなかったので、アイデアや提案を聞きたいです。ブラウザ(つまりAJAX)でJavaScriptを使用し、Webブラウザとサーバー間でいくつかのJSON構造を渡して、ユーザーエクスペリエンスを少しスムーズにしたいと思います。

それで、あなたの提案、これに関するアイデアは何ですか?正直なところ、車輪の再発明はしたくありません。

4

5 に答える 5

4

apacheやlighttpなどのサーバーが構築されているため、カスタム作成されたアプリケーションをフロントエンドとしてネットに公開することは決してありません。彼らはあなたに箱から出してあなたにいくつかの深刻なセキュリティを与えます。

アプリとそのWebサーバーとの相互作用については、負荷と、PHP、Python、またはWebサーバーでサポートされている他の言語(もちろんインタープリター経由)でソフトウェアを作成する際の経験に少し依存します。

わずかな負荷と、PHPからアクセスするコマンドラインツールが完全に機能する可能性があります。

より重い負荷があり、Qtを使用して単純な(SOAP?)サーバーを実装し、Python(またはphp)スクリプトからそれにアクセスすることをお勧めします。

そうすれば、アプリでレイアウトを行う必要がなくなり、セキュリティをそれほど実装する必要もなくなります。

于 2010-02-18T09:08:16.210 に答える
3

私は現在、同様の状況(Qtを使用したカスタムWebアプリバックエンド)を調査していますが、最も悪いオプションはFastCGIです。興味があるかもしれない何かを見つけました。いくつかの深刻なテストなしでは本番環境の準備ができていませんが、これはQtの良い出発点かもしれません-FastCGI相互運用:FastCGIQt

于 2010-02-18T10:18:50.867 に答える
2

同様のプロジェクト(Qtアプリケーションでもあります)にFastCGIプロトコルドライバーライブラリを使用しました。ダウンロードリンクはそのページの最後にあります[Libfastcgi]。アプリケーションとの統合は、実際には比較的簡単であることがわかりました。Lighttpd+mod_fastcgiがWebサーバーとして使用されました。ただし、FastCGIQtについては何も言えません。

于 2010-07-28T19:38:48.933 に答える
0

You Wtは、QtベースのアプリケーションにWebインターフェイスを提供するためにうまく機能します。どちらも同様のプログラミングスタイルを持っており、Qtとの統合を示す例があります。

于 2010-10-14T11:26:12.047 に答える
0

埋め込まれたQMLサーバーの例を次に示します:https ://github.com/ncp1402/ql-server

于 2015-03-30T01:32:00.013 に答える