数値解析や科学計算(シミュレーションなど)に使用する多くのレガシーCライブラリがあり、構築しているWebアプリケーションで使用したいと考えています(これまでのところ、ユーザーインターフェイスの作成にはJavascriptのみを使用しています)。クライアント側やサーバー側でこれを行うにはどのようなオプションがありますか?Chromeでネイティブクライアントを使用することについて聞いたことがありますが、これを行うためにクライアントがネイティブクライアントフラグをオンにする必要があるのは嫌です。
6 に答える
サーバー側:
まず、CGI (Common Gateway Interface) は、Web アプリケーションでネイティブ C ライブラリを使用できるようにするための最も基本的な方法です。この方法では、サーバー側の Web コンテンツを生成する実行可能ファイル (C で記述されたものなど) をデリゲートします。
しかし、CGI は非常に原始的で非効率的です。各コマンドにより、サーバー上に新しい が作成Process
される場合があります。したがって、他の実行可能な代替手段は次のとおりです。
- Apache モジュールを使用すると、Web サーバー自体でサードパーティ ソフトウェアを実行できます。
- FastCGI - 単一プロセスは、複数のユーザー要求を処理します。
- SCGI - シンプルなCGI
参照: http://en.wikipedia.org/wiki/Common_Gateway_Interface#Alternatives
クライアント側:
良いニュースと悪いニュース:
Chrome で PNaCl (Portable Native Client) を使用できます。デフォルトでオンになります。
しかし、最初の公開は2013 年後半に予定されています。PNaCl を探してください。
クライアント側では多くのことを行うことはできません.クライアントがこれらのライブラリを持っていることを期待する方法はなく、それらをダウンロードして実行する安全な方法もありません.
最も簡単な方法は、サーバー側を好きなように記述し、Web インターフェースを介してそれらにアクセスすることです。サーバー側のスクリプト作成に慣習的に使用される多くの言語は、ネイティブ C ライブラリにアクセスできます。また、通常の C アプリケーションを作成してスクリプト エージェントとして実行することもできます。
「本当に風変わりな」カテゴリでは、十分に保護された環境に埋め込めば、C コードとして開始されるものをクライアントで実行できます。たとえば、java で書かれた mips シミュレーターを埋め込むことによって、sqlite (C データベース アプリケーション) を 100% 純粋な Java アプリケーションにする方法の説明を参照してください。
http://blog.benad.me/2008/1/22/nestedvm-compile-almost-anything-to-java.html
サーバー側でレガシーCライブラリメソッドを一種の(WEB)サービスとして表現するのが最善のようです。生のCGIアプリケーションは、このアプローチではかなり低レベルのポイントのようですが、一般的には正しいです。Webサービスサーバーの作成に使用できるC/C ++フレームワークと、Webサービスアクセスとデータ表現をサポートするクライアント側ライブラリがあります。サーバー側では、たとえばgSoapを使用できます。
クライアント側で行うには、 Emscriptenを使用できます。ただし、これにはおそらく、JavaScript の非同期メイン ループ要件に適合するように、既存のコードを何らかのリファクタリングする必要があります。
Emscripten は概念実証などではないことに注意してください。これは非常に強力で、複雑なコードを Web に移植するために既に使用されています。デモ (上記の URL にリストされています) を見て、それで何ができるかを確認できます。
Wt
まだ見た?そのかなりきれい。
また、cgi (醜い) でコーディングするオプションもあります。
Cではありませんが、C++で書かれています。その部分を無視できる場合: Wt at your service
もう 1 つの可能性は、選択した Web サーバーを使用して通常のファイルを送信し、C コードに接続されたカスタム Web サーバー (完全な HTTP 仕様をサポートする必要はない) を使用して、クライアント側の Javascript と通信することです。
ベースとして使用できる 2 つの最小限の Web サーバーは、libuv-webserverとnwebです。