Webアプリケーションを作成したいと思います(つまり、ブラウザーから実行されます)。重要なのは、HTML5 + CSS + JS(あるいは多分いくつかのPHP)でUIだけを書きたいということです。一方、アプリケーションの機能をCまたはC++で記述したいと思います。次に、UIと機能に関するコードを組み合わせます。したがって、C/C++コードをWebマークアップ/プログラミング言語と組み合わせることが可能かどうかを尋ねたいのですが。
Webの世界でCまたはC++を使用する方法はいくつかあります。
古代の方法は [〜#〜] cgi [〜#〜] です。このアプローチを使用すると、CGI fork
およびexec
が要求されたときにCGIを起動するように構成されたWebサーバーがあります。この問題は、forkとexecがかなり重いことです。 1000の同時接続がある場合、1000プロセスが実行されていることを意味します-理想的ではありません。
ステップをWebサーバー、特に今回はApacheに近づけると、コードを処理するCで module と記述できます。これは、ライブラリとしてWebサーバー内に存在し、はるかに高速ですが、Apache環境と緊密に統合することを意味します。このアプローチの 最新の本 は1999年に発行されたものであり、少し古いと思われます。
他のWebプログラミング言語とスタックは、アプリケーションサーバー構造に移動しました。このアプローチでは、(重いforkやexecではなく)軽量のプロセスをホストするように設計されており、多くの場合、アプリケーションのWeb向けインターフェースに重点を置いています。
ウィキペディアのリスト 少数 C++アプリケーションサーバー:
- Tuxedo -ATMI標準に基づいており、元のアプリケーションサーバーの1つです。
- Tntnet -HTMLページにC++コードを埋め込むことができるテンプレートエンジンが含まれています。テンプレートは実行前にコンパイルされるため、非常に高速です。マルチスレッド、スコープ付き変数を介してオブジェクトの存続期間をサポートします。
- [〜#〜] cppserv [〜#〜] -C++サーブレットコンテナ。
- Wt -Ajax機能が組み込まれたGUIアプリケーションのようなWeb開発を可能にするQtに類似したWebツールキット。
- POCO C++ Libraries -Poco.Net.HTTPServer.htmlを含むオープンソースクラスライブラリのコレクション
- CppCMS
これの要点は、おそらく別のフレームワーク内で作業する必要があることです。マルチスレッドのスケーラブルなWebアプリケーションを作成することは、ほとんどのプログラマの手段を超えています。
ホスティングが問題になる可能性があることを認識してください。ほぼすべてのWebホストがphpを提供し、多くはTomcat(Java)を提供しています。上記のアプリケーションサーバーの1つを提供するサーバーを見つけるには、少し掘り下げる必要があります(現在、cgiを提供するものはほとんどなく、ランダムなアプリケーションを実行することを許可するものはさらに少ないでしょう)。
開発の早い段階でアプリケーションサーバーに結合された言語の利点の1つは、アプリケーションの構造が一貫していることです(Javaには、デプロイするコンテナーに関係なく同じ.warファイルがあります。コンテナ固有のコード)。 C++コンテナーは互いに互換性がないようです(この問題の修正は歓迎します)。
別のサーバーとしてアプリの機能を開発し、REST(またはSOAP)を使用してUIと通信しますか?JSはこれらのメッセージを処理してUIを更新できます。IMHOのほうが良いオプションです。
この解決策は実行可能ですか?
emscripten のようなツールも使用できます。これにより、LLVMビットコードがJavaScriptに変換されます。これをclangまたはclang ++と組み合わせて、ブラウザーでCまたはC++を実行できます。 (CGIとは異なり、実際にはクライアント側で)
(Unrealは html5ポート をこの方法で実行しました!)