現在、ホームページを持つアプリケーションを作成しようとしています。このホームページには、CPU を集中的に使用するコードを実行して結果を表示するボタンがあります。タイトルで述べたように、アプリケーションは Windows フォームではなく ASP.NET と C# を使用しています。
私は C# に比較的慣れておらず、他のプログラミング言語でこれを試みたことはありません。また、これを進める方法が本当にわからないので、表示するコードもありません。
はい、サーバー上でCPUを集中的に使用するコードを実行できます。通常、これにより Web アプリケーションが妥当な時間内に応答を送信できなくなり、Web アプリケーションがフリーズしたように見える可能性があることに注意してください。
どのようなタイプの CPU 集中型コードを念頭に置いていましたか? このシナリオを処理するには多くの方法があります。
「CPUを集中的に使用する」とは、プロセスが完了するまでに時間がかかることを意味していると思いますか? Web アプリケーションでは、数分以上かかるものはすべて非同期で実行する必要があります。HTTP の要求/応答モデルでは、(多くの理由から) 要求を行うクライアントに迅速に応答することが最善です。
長時間実行されるプロセスの場合、「非同期」とは、AJAX を使用することを意味するものではありません。これは、他のプロセスと同様に要求/応答であるためです。
この場合の「非同期」とは、CPU を集中的に使用するタスクを処理する別のサーバー側プロセスが必要であり、Web アプリケーションは実行のためにタスクをキューに入れ、タスクのステータスをチェックするだけのことを意味します。人々はそれを探します。その後、タスクの完了後にタスクの結果を報告できます。
したがって、アーキテクチャの基本的な概要は次のようになります。
ここで覚えておくべき主なことは、責任を2 つのアプリケーションに分割することです。Web アプリケーションは、ユーザー インターフェイスを提供することを目的としています。Web アプリケーションは、長時間実行されるバックグラウンド タスクには適していません。そのため、その責任は、その目的により適した別のアプリケーションに移されます。2 つのアプリケーションは、共有データベースを介して連携します。