6

現在、asp.netで非同期/プッシュスタイルのプログラミングを行うために利用できるオプションがいくつかあるようです。しかし、何が最良で、何が最も開発者に優しいアプローチを提供するのかについて、私は少し混乱しています。私がすでに出くわしたことは、

NodeJ

SignalR

PushStreamContent(Web API)やKnockoutJSなどを使用する

SignalRはasp.net4.5に到達したと見なされていますが、 MS内(特にAzure周辺)のNodeJに多くの関心が寄せられてい ます。誰かが(少なくともNodeJとSignalRの)違いに光を当てることができますか?

4

1 に答える 1

15

SignalRは、「永続的な接続を介してメッセージングと抽象化を提供する.NET用のクライアントおよびサーバー側のライブラリ」です。これにより、コードが魔法のように非同期になるわけではありません。サーバーがクライアント(ユーザーのブラウザーで実行されているJavaScriptを含む)を非同期で呼び出すことができるようになるだけです。

ただし、.NET4.5およびVisualStudio 2012(およびMono 2.11以降)に同梱されているC#5.0では、新しいキーワードを使用してコードを非同期に記述async/変更できます。await

すでに.NET開発者である場合、C#async&awaitとSignalRは非常に簡単に取得、学習、実行できるため、非常にスケーラブルで非常に高性能なシステムを構築できます。

Node.jsを使用すると、JavaScriptでコードを記述し、アプリサーバーでホストできます。

Nodeは現在多くの注目を集めていますが、.NET開発のバックグラウンドを持っている場合は、サーバー上のJavaScriptに移行するときに驚いたりイライラしたりする可能性のあるいくつかの点に注意する価値があります。

  1. JavaScriptは、非常に強力で非常に柔軟な動的型付け言語です。ただし、この柔軟性は、その多くの欠陥とそれらを克服する方法を学ぶまで、非常に危険で問題になる可能性があります。JavaScriptコードを実行する必要がある場合は、JavaScriptにコンパイルされるTypeScriptCoffeeScriptなどの言語でソースを作成することを検討してください。ただし、JavaScriptの多くの危険から保護されます。

  2. ノードは優れた非同期ディスパッチ機能を提供しますが、そのコード実行パフォーマンスはC#の実行よりもはるかに遅くなる可能性があります。コードがデータの処理をほとんどまたはまったく行わない場合、この問題に気付かない可能性があります。ただし、コードがかなりの量のデータ処理/計算/分析などを実行する場合、ノードのJavaScriptパフォーマンスヒットが許容できない場合があります。

  3. ノードはシングルスレッドです!コードで大量のデータに対して複雑な計算を実行するなど、重い処理を実行する必要がある場合、各処理操作が完了するまで、単一のノードインスタンスが他の着信リクエストを処理できなくなります。したがって、ノードクラスタリング(現在は実験的な機能)を有効にすることを計画する必要があります。または、 Windowsでノードをホストする場合は、(すばらしい)IISおよびWindowsプロセスアクティベーションインフラストラクチャを使用してノードインスタンス管理を処理するIISおよびIISNode] 4を使用します。

  4. 通常の.NET開発者のデバッグ経験と比較すると、ノードで実行されているコードのデバッグは、現時点では遅くて面倒なプロセスです。これを行うには、ノードインスペクターとChrome Webブラウザーを使用してコードをデバッグする必要がありますが、エクスペリエンスは低くなります。ブレークポイントは実行間で保持されません。条件付きブレークポイントはサポートされていません。表示されるコールスタックは浅いです。等

于 2012-05-15T20:26:35.463 に答える