0

位置情報を提供するリアルタイム データ フィードへのアクセス権が与えられました。これに基づいて Web サイトを構築したいと考えていますが、ニーズを満たすためにどのアーキテクチャを使用すればよいか少しわかりません。

残念ながら、私がアクセスできるフィードでは、IP アドレスごとに 1 つの接続しか許可されないため、フィードと直接通信する Web サイトを構築することはできません。各ユーザーが新しい要求を生成し、それが拒否されるためです。データに対して何らかの前処理を実行することも望ましいので、データを取得して処理し、Web サイトで利用できるようにするバックエンドが必要になると思います。

フロントエンド接続の観点からは、Web サービスは機能するように思えますが、これにより、各ユーザーのフィードへの複数の接続も作成されるのでしょうか? また、サイトにアクセスしていないときでもデータが取得および処理されるように、バックエンド接続を永続的にしたいと思います。IIS は、アイドル状態のときに Web サービスと Web サイトをリサイクルすると思いますか?

かなり柔軟な設計を維持したいと考えています。将来、いくつかのモバイル クライアントを追加する予定なので、API はリモート接続をサポートする必要があります。

簡単な解決策は、処理されたすべてのデータをデータベースに記録し、それを Web サイトが取得できるようにすることでしたが、これではデータのリアルタイムの側面が失われます。理想的には、データが変更されるたびに、またはデータが受信されるたびに、データを Web サイトにプッシュすることを検討しています。

これを達成する最善の方法は何ですか? また、ここで役立つ可能性があるテクノロジは何ですか? Comet アーキテクチャは私が必要としているものに近いように思えますが、それには複数の Web ベースのクエリを一度に処理できるバックエンドを構築する必要があり、かなりの作業のように思えます。

理想的には、Javascript クライアント側を使用した C#/ASP.NET ベースのソリューションを探していますが、この質問は、これらの技術的な実装よりもアーキテクチャと概念に基づいていると思います。

すべてのアドバイスを事前にありがとう!

4

2 に答える 2

2

リアルタイムデータコンシューマー

最も簡単な解決策は、リアルタイムフィードの読み取り専用のコンポーネントを1つ持つことです。次に、受信したデータをキュー(または複数のキュー)に公開して、アーキテクチャ内の他のコンポーネントで使用できるようにします。

このコンポーネント(A)はスタンドアロンのプロセスであり、おそらくサービスです。

キューの消費者

キューは次の方法で読み取ることができます。

  1. 将来の取得またはクエリのためにデータを永続化するための専用コンポーネント(B) 。データ量が多い場合は、永続キューから読み取るコンポーネントをさらに追加できます。
  2. 接続されているサブスクライバーにデータを直接公開するコンポーネント(C) 。ある程度の処理を行うこともできますが、大量の処理を行う場合は、このタスクを実行する複数のコンポーネントが必要になる場合があります。

リアルタイムWebテクノロジーコンポーネント(D)

.NETスタックを使用している場合は、SignalRが最も注目を集めているようです。XSocketsも見ることができます(私のリアルタイムWeb技術ガイドにはさらに多くのオプションがあります。「。NET」を検索してください。

signalRを使用してサブスクリプションを管理し、登録済みのクライアントにメッセージをパブリッシュすることをお勧めします(PubSub-このSO投稿は関連性があるようですが、もう少し情報を求めることができます)。

また、PubSubコンポーネントを、私が働いているPusherなどのホストされたサービスにオフロードすることも検討できます。これはサブスクリプションの管理を処理し、コンポーネントCは適切なチャネルにデータを公開するだけで済みます。リアルタイムウェブ技術ガイドにすべてリストされている他のオプションがあります。

これらすべてのコンポーネントにはJavaScriptライブラリが付属しています。

概要

コンポーネント:

  • A-.NETサービス-情報をキューに公開します
  • キュー-MSMQ、NServiceBusなど。
  • B-キューを読み取る単純な.NETサービスの場合もあります。
  • C-一部のリアルタイムWebテクノロジーは直接統合できるため、これは実際にはDに依存します。ただし、キューを読み取る単純な.NETサービスの場合もあります。
  • D-サブスクライバーに情報をルーティングする簡単な方法を提供するリアルタイムWebテクノロジー(PubSub)。

さらに情報を提供していただければ、回答を更新します。

于 2012-07-05T15:05:15.663 に答える
1

これに対する良い解決策は、 http://rubyeventmachine.com/またはhttp://nodejs.org/のようなものです。asp.net ではありませんが、リアルタイム データを他のユーザーに配布するという問題を簡単に解決できます。ユーザー接続、サブスクリプション、チャンネルへのブロードキャストがそれぞれに組み込まれているため、残りのコーディングは非常に簡単になります。クライアントは標準の tcp 経由で接続するだけです。

クライアントが更新をポーリングする必要がある場合は、次の要求のために情報を保存するための que システムが必要になります。これは、要件とユーザー数に応じて、単純な配列またはより複雑な que システムになる可能性があります。

私が知らない.netの解決策が同じことをするかもしれませんが、それらは私が知っている2つです。

于 2012-07-05T15:26:03.463 に答える