2

私はC#でアプリケーションを書いています。それは、C、C ++、またはJavaのいずれかで書かれた外部コードをコンパイルして実行することです。この点に関して、私はいくつか質問する必要があり、以下は私がこれまでに行った調査です。

  1. ユーザーから送信されたコードのリクエストを受信するアプリケーションをホストするサーバーがあります。これらのリクエストは特定のソケットで送信されます。
  2. そのようなすべての要求をキューに入れるレシーバースレッドがあります。
  3. キューからデキューし、プログラム(送信されたコード)をコンパイルして実行するコンシューマースレッドがあります。コンパイルと実行中に、適切なコンパイラとローダーがコマンドラインから使用され、C#アプリからのプロセスとして実行されます。
  4. 現在のところ、サンドボックス化、サーバーアクセスを公開しないなどのセキュリティ問題は、後で検討されていると想定できます。私の主な焦点は、この実行ロジックにあります。

次の質問があります。

  1. これを行うためのより良い方法はありますか/私は何か間違ったことをしていますか?
4

1 に答える 1

3
  1. アプローチは紙の上では見栄えがしますが、それは主に実装に依存します。
  2. マシンの機能まで、必要な数だけ。OSがそれらを処理します。
  3. 気密にする限り、それは実際には問題ではありません。悪意のある/不正な形式の/明らかに間違ったコード送信されます。Javaはそれほど大きなダメージを与えることはできませんが、C /C++はちょっと危険です。
于 2012-07-26T12:09:15.907 に答える