2

数百人、もしかしたら数千人をリアルタイムで追跡したいのです。

ハードウェアの側面が整理され、データをデータベースに入れることができるとしましょう。

今、私はそれを取り出して、リアルタイムで見せたいと思っています。

うーん...「本当に十分な」時間。建物の間取り図を描き、1 秒から 5 秒ごとに全員をプロットしたいとしましょう。

(ボタンをクリックするだけで特定の「種類」の人だけを表示したい場合があります。データマイニングなどが必要になりますが、最悪のシナリオに固執しましょう)。

この種のことではありませんが、私はPHPに十分慣れています。個人的には、Delphi でコーディングされた Windows アプリの方が満足ですが、すべてをブラウザ ベースにする傾向があるようです。

したがって、問題は、ブラウザーがこれを処理できるかどうか、および Windows ベースまたはブラウザー ベースのソリューションに説得力のある議論があるかどうかだと思います。

ブラウザーベースでこれを処理でき (1 秒間に数千のデータポイントを表示)、Windows に関する圧倒的な議論がない場合、私はブラウザーベースに行き、いくつかの新しいトリックを学ぶと思います。明らかな利点は、コードの大部分を Google マップで (車両を) 追跡するために再利用できることです。

4

5 に答える 5

3

作業のほとんどは、おそらく空間対応のリレーショナル データベースで行われます。たとえば、PostGIS は、通常の SQL 結合および WHERE 条件と同様に、境界ボックスまたはより洗練された空間述語 (ST_Contains、ST_Crosses、ST_Intersects、ST_Touches、...) 内のデータ ポイントを選択できます。空間選択では、速度を上げるために空間インデックスを使用する必要があります。

この場合、アプリは主にプレゼンテーション レイヤーになります。この場合、あなたにとって最も簡単なものを使用してください。ブラウザーベースの利点は、デフォルトでクロスプラットフォームのクライアントサーバーであることですが、これは問題にならない場合があります。

レンダリング速度に関しては、マップのレンダリング方法に大きく依存します。Google マップで利用できる速度テストがあります。ただし、Google マップ タイプのインターフェイスを計画している場合、数千のポイントがピンぼけになるのではないかと思います。インターフェイスのモックアップはありますか?

于 2010-06-04T04:23:55.867 に答える
1

少し古い帽子のように見えるかもしれませんが、ブラウザベースにすることにした場合は、ポイントを画像に事前にレンダリングして、画像を表示するだけで済みますか?

于 2010-06-04T13:46:56.970 に答える
1

WebSocket

HTML5 WebSocketsを見てください。これらは、サーバー/ブラウザー データ交換の新しい標準です。

WebSockets は、単一の伝送制御プロトコル (TCP) ソケットを介して双方向の全二重通信チャネルを提供するテクノロジであり、Web ブラウザーおよび Web サーバーに実装するように設計されています。

サーバーは、新しいデータが利用可能になったときにクライアントにプッシュできるため、クライアントのプル リクエストのオーバーヘッドがなくなります。

ウィキペディアのページには、利用可能なサーバー側の実装が一覧表示されています。これには、PHP バージョン (Delphi は除く) が含まれます。

WebSockets は JavaScript にバインドされていません。websockets.org ページには次のように書かれています。

さらに、Web ソケット プロトコルを使用して、さまざまなクライアント セット (JavaScript、Adobe Flex、JavaFX、Microsoft Silverlight など) をサポートできます。ただし、HTML5 仕様では JavaScript のサポートのみが定義されており、テキストベースのプロトコルに限定されています。他の種類のクライアントにサービスを提供し、バイナリ プロトコルをサポートするには、外部のサービスに目を向ける必要があります。

メッセージ データはJSON形式で交換できます。これは JavaScript でサポートされており、Delphi でも利用できます(SuperObject や lkJSON などのオープン ソース実装として)。


アヤックス

Delphi 用のAjaxベースのリッチ インターネット アプリケーションは、 Intraweb またはExtPascalを使用して構築できます。ExtPascalは、完全な GUI Ajax フレームワークであるExt JSの Object Pascal (Delphi、FreePascal/Lazarus) ラッパー/バインディングであり、IE 6+、Firefox 1.5+、Safari 3+、Opera 9+ および任意のクライアント側プラットフォーム (PC、スマートフォン、iPhone、PDA など) での Chrome 2+。オンライン デモ アプリケーション: FishFactsなど。

Ajax Push (別名Reverse Ajax / Comet ) は、サーバー上のデータが変更されるたびに、サーバーから接続されているすべての Web ブラウザー クライアントにデータを転送するデータ (XML または JSON 形式) の" HTTP サーバー プッシュ" を提供します。クライアントは、関心のある情報を「購読」できます。

于 2010-06-04T17:51:24.493 に答える
1

あるタイプのアプリよりも別のタイプのアプリの方が満足できる場合は、そのタイプのアプリを作成してください。ブラウザー アプリにするためだけに何かをブラウザー アプリにしないでください。

于 2010-06-04T03:10:14.070 に答える
1

最初に、アプリのターゲット (およびそのサイズ、同時クライアントの数) を理解してから、ファット クライアントとシン/Web クライアントのどちらが最適かを判断する必要があります。次に、予測した負荷を管理できるアプリケーションの種類を確認する必要があります。あなたがマスターしている、またはあなたの時間枠でできるテクノロジーを使用して、毎秒数千のデータポイントを表示できますか? マルチスレッドは、現在のマルチコア プロセッサを活用して結果を達成するのに役立ちますか? それを利用できるテクノロジーはどれですか?

于 2010-06-04T08:55:22.917 に答える