0

Web サーバーからクライアントにデータをストリーミングする必要があります。データは、サーバー上で収集および保存される位置データです。クライアントは、html ページのボタンをクリックして「オプトイン」し、データの受信を開始します。このデータは終わりがなく、データを 24 時間年中無休で受信する必要があるクライアントが少なくとも 1 つあります。各クライアントがまったく同じデータを受信するとは限らないため、ストリーミングされるデータはクライアント固有になります。

私はソケットを介していくつかのマルチスレッド tcp サーバーを実行しました。Websocket はこれを攻撃したい方法ですが、要件はこれが ie9 で動作する必要があることです。

最初の要件は、これがvb.net cgi実行可能ファイルであることでした-しかし、テスト中、アプリが終了するまでvb.net実行可能ファイルからのストリームを「使用」できませんでした-stdoutをフラッシュすることさえできなかったように特にconsole.out.flush()を使用していましたが。したがって、これが実行可能なオプションではなく、事実でこれをサポートできる場合は、この要件を変更できます。

また、Orbit や APE などのサードパーティ サーバーを使用してデータをストリーミングすることについてもかなり読んだことがありますが、要件は 1 つのサーバー (Web サーバー) です。他のハードウェアは必要ありません。

私が見つけたものに基づいて、vb.net CGIは理想的なソリューションではないと確信していますが、それは実行可能ですか、それともそのソリューションを放棄して新しいテクノロジーであるISAPIに移行する必要がありますか? アイデアや提案は、正しい方向に私を向けるだけであっても、大歓迎です。

4

1 に答える 1

0

あなたはいくつかの道を行くかもしれません。

C# .Net を使用する場合は、Silverlight ソリューションを検討することをお勧めします。ただし、ブラウザにプラグインをインストールする必要があります (Flash など)。ここで良いことは、サーバーから純粋なリアルタイムで、通常のソケットを介してデータを送信できることです。同時に、Silverlight は .Net を使用するため、一部のコードを共有できます。それは開発プロセスに役立ちます。同様に、異なるブラウザでの動作方法も同じです。

JavaバックエンドでJavaアプレットを使用して同様のソリューションを見ているかもしれません(.Netでもかまいませんが、両方が同じ言語の場合は開発が簡単です)。

別のオプションは、WebSockets を使用してフロントエンドを使用することですが、ご存じのとおり、IE9 以下ではサポートされておらず (IE10 ではサポートされることが約束されています)、Opera もサポートしていません。バックエンドは好きなように行うことができます。ただし、WebSockets はフレーミングを使用することに注意してください。10 バイトを送信すると、2 ~ 12 バイトのフレームと平均 40 バイトの TCP パケット ヘッダーが作成されるため、一定ではあるが小さなパケットの場合は効率的ではありません。

古いブラウザーをサポートするには、ロング ポーリングを検討する必要がありますが、Websocket ほど信頼性は高くありません。

同様に、システムを使用するデータ量と概算ユーザー数を計算することも重要です。計算に基づいて、それがどれほど現実的であるか、およびどのサーバーを処理する必要があるかについてのおおよその情報が得られます。

于 2012-04-10T17:29:37.930 に答える