2

クライアントがサーバー上のサービスを呼び出して、何らかの処理を伴うアクションを実行する Web アプリケーションを開発したいと考えています。サーバーは必要なすべての処理を行い、更新されたデータの準備が整うと、そのデータをクライアントにプッシュします。現在、私は 2 つのアプローチを検討しています: - 1. SignalR で ASP.NET WEB API を使用する。

私のサーバーは Windows Server 2012 になりますが、クライアントの大部分は WebSocket をサポートしていないと思われる IE 9 になります。

SignalR のドキュメントに記載されているように、アプリケーション コードを変更せずに WebSockets サポートが存在しない場合、自動的にロング ポーリングに移行します。これが .NET 4.5 の WebSocket でもサポートされているか、手動で行う必要があるかどうか。サーバーに Pull メソッドと Push メソッドの両方を実装する必要があるかどうかを意味します。

私が従うべきアプローチを教えてください。

後のユース ケースでは、PhoneGAP を使用してこの Web アプリケーションを構築し、iOS、Android、および Windows Phone 用のモバイル アプリを作成したいと考えています。

4

3 に答える 3

9

WebSockets は longpolling にフォールバックしません (これはあまり意味がありません)。SignalR は、http トランスポートに対するより高いレベルの抽象化であり、そのため、フォールバックやその他のこと (接続を介して優れたプログラミング モデルを提供するなど) を行います。

ASP.NET で Websocket を使用することを選択した場合 (WCF については不明)、生のソケットに対してプログラミングを行うことになり (これは、配列セグメントの読み取り/書き込みなどを意味します)、それを適切に行うのは困難です。クライアントまたはサーバーで Websocket が利用できない場合、SignalR はこれを行い、他のいくつかのトランスポート (永久フレーム、サーバー送信イベント、ロングポーリング) にフォールバックします。

クライアントに関しては、SignalR を使用する場合は、SignalR クライアントを使用する必要があります。JavaScript と .NET (silverlight、windows phone 8、winrt、.NET 4、および .NET 4.5) のみをサポートしています。iOS や Android を含む他のプラットフォーム用のクライアントを作成した人もいますが、私たちはそれらを維持していないため、それらがどの程度最新であるかについてはお話しできません。

SignalR を使用することをお勧めします。これにより、websocket の低レベルのプログラミング モデルをいじるのではなく、アプリケーション ロジックに集中できます。

于 2013-03-25T09:24:28.720 に答える
1

フォールバックが自動的に機能することを確認できます。websockets トランスポートを使用できない場合は、ServersentEvents トランスポートが使用されます.. など.. 最後のトランスポート プロトコルは longpolling です。

SignalR サーバーは、Windows 2012 サーバー上の 4.5 dll を使用して ASP.NET MVC アプリでホストされる .NET 4.5 フレームワーク アプリです。アプリケーション プールは ASP.NET 4.0 です。

  • Windows 8 または Windows 2012 サーバー上の .NET 4.5 クライアントは、websocket を使用しているようです。
  • Windows 7 マシン上の同じ .NET クライアント (フレームワーク 4.5 がインストールされていても) は、serversent イベント トランスポートに自動的にフォールバックします。

ブラウザーで Signalr JavaScript クライアントを使用すると、同様のことが起こります。

  • Websocket をサポートする Chrome/Safari/その他のブラウザーは、Websocket を使用しているようです。
  • websockets をサポートしていないが、比較的新しいバージョンの IE やその他のブラウザーは、serverentevents を使用しているようです。

経験上、serversentevents はそれほど悪くないので、websockets が使用されていない場合でも先延ばしにしないでください。また、signalR を使用することに対する唯一の要因としてそれを使用しないでください。多くの利点があるためです。

お役に立てれば。

于 2013-03-27T05:27:48.807 に答える
1

ASP.NET チュートリアルhttp://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalrから始めることができます

このチュートリアルの後、SignalR について知っておく必要がある基本的なことはすべて理解できます。

于 2013-03-25T07:13:06.133 に答える