2016-04-04 7 views
-1

C#を使用してASP.net Webアプリケーションを作成します。私のwebappは非常にインタラクティブです。C#とJavaScript:共有アルゴリズム

今、私は、いくつかの値のより複雑な計算を行う必要があるという状況があります。問題は、ユーザーがウェブサイト上のオブジェクトをドラッグしている間に、計算結果をリアルタイムで表示できることです。彼がピクセルを渡すたびに、アルゴリズムは何らかの計算を行います。 それは全く問題ありません。 JavaScriptでアルゴリズムを書くだけです。問題は次のとおりです。ユーザーが以前にドラッグした要素をドロップすると、ブラウザはサーバーにAjaxリクエストを行い、計算された入力を検証する必要があります。基本的には、サーバーがまったく同じアルゴリズムを実行する必要があることを意味します。もちろん、私はそれらを一度しか書いていません。だから、私はC#クラスとJavaScript関数を作成し、両方を維持したくありません。

私はこれをどのように達成できるか考えていますか?アルゴリズムをJavaScriptで記述して、C#またはその逆の方法でサーバー上で呼び出すことはできますか? C#でそれを書いてJSにコンパイルし、ブラウザからJSをダウンロードしますか?

これに関する情報はすばらしいでしょう! ありがとうございます!

Ps .:私はJavaとウェブ開発者の多くであるため、私はC#で多くの経験がありません。

+0

* JavaScriptでアルゴリズムを記述し、サーバー*で呼び出すことはできますか?はい、できます(*ブラウザはAjaxリクエスト*を行う必要があります)。だからあなたはあなたのために仕事をするためにサーバーにajaxリクエストをすることができます。 – Liam

+0

Websockets(signalR)またはAjaxを使用してデータを前後に送信するだけで、計算サーバー側を行うことができます。あなたはあまりにも多くの呼び出しを避けるためにデバウンス関数を投げることができます – cl3m

+0

FYIあなたはJavascriptにC#をコンパイルすることはできません。彼らは**非常に**異なる言語です。 – Liam

答えて

0

余分な待ち時間といくつかの危険が気にならない場合は、Webページでコンピューティングを実行できます。

プロジェクトがメモリに読み込まれると、(コマンドラインから)プロジェクトは、「提供」ページのURLを持つブラウザも開きます。

クライアントから要求がサーバに送信されるたびに、サーバはプロデューサ/コンシューマコンテキストでキューにキューイングします。

サービスページはリクエストを受け取り(Webサービスで、数秒に1回チェックします)、計算して結果をサーバーに送信し、サーバーはそれを残ります。

しかし、ブラウザクラッシュまたは異なるプラットフォームは互換性がありません%100。また、繰り返しWebサービスリクエストを送信すると、のためにが悪いです。複数のリクエストを処理する場合は、複数のアクティブなブラウザウィンドウ/タブが存在する必要があります。これはパフォーマンスに悪影響を与えます。しかし、サーバーの完全な制御権を持っているなら、それを試してベンチマークすることができます。

(javascript) 
client ------> 
client ------>  server -----> store result in db 
         |^
         | | 
         v | 
       (C#web_service) (consume) 
        work queue ----------> server page (javascript) 
           <--------- 
        ^|  (check if queue>0) 
         | | 
         | | 
         | v 
        server page (javascript) 

また、これによってCPUが不要な電力を消費することになります。サーバー・ページへのメッセージングでは、作業開始を通知し、Webサービスまたはクライアントが使用する同じメソッドを使用して結果を戻すために、ソケット・サーバーなどのより良い通信メカニズムを使用する必要があります。これはエネルギー消費を減らすことができます。

複数のブラウザとそれらの異なるバージョンを仮想マシンで実行すると、互換性が向上する可能性があります。

関連する問題