1

サーバーとの単一チャネルエンドポイント(非セキュア)通信にBlazeDSを使用するFlexWebアプリケーションがあります。

すべてが正常に実行されており、サーバーとデータベースとの間でデータを送受信するために、ほとんどすべての場所でBlazeDSを使用しました。サーバーからデータを取得するための新しいコードを作成していますが、サーバーは最初にこのデータを処理する必要があり、これには時間がかかります(たとえば、要求に応じて5〜30分)。

これまでの私のデザインパターンは、ユーザーにビジーカーソルを表示し、メインアプリケーションを無効にすることでした(デフォルトでは、Flexは無効になっているときにアプリケーションをぼかします)。これは通常、通信が完了するまで1〜2秒続きます。ただし、通信が完了するまでに時間がかかるため、サーバーからのプロセスがまだ戻っていない場合でも、ユーザーにアプリケーションを引き続き使用してもらいたいと考えています。

したがって、私がやりたいのは、メインアプリケーションを無効にしないことです。これにより、ユーザーはデータが返されるのを待っている間、メインアプリケーションを操作できます。私が心配している問題は、ユーザーがこの間に(たとえば最初のプロセスが戻る前に)別のプロセスをサーバーに送信するためにアプリケーションを使用する場合です-これは問題を引き起こしますか?つまり、BlazeDSは、チャネルがビジーであることを認識できるほど賢いので、リクエストを自動的にキューに入れますか?たとえば、BlazeDSは、最初のリクエストが返されるまで待機してから、2番目または3番目などを送信しますか?

または、この通信を手動で制御して、シリアル方式で確実に行われるようにする必要がありますか?もしそうなら、これを処理するためのデザインパターンはありますか?

または、BlazeDSは、最初のリクエストが戻る前に2番目のリクエストを送信して返すことができますか?

どんなアドバイスも大歓迎です。ユーザーが使用できないアプリケーションを5〜30分間見つめ、データが返されるのを待つのを避ける方法を探しています。ビジーカーソルはデータがまだ返されていないことを示しているので問題ありませんが、特に無効になっているメインアプリケーション(ぼやけているかどうかに関係なく)が問題になります。

アップデート:

ここでは、同じメソッドではなく、異なるメソッドへの同時呼び出しについて話しています。したがって、2つのメソッドがある場合は、最初のメソッドを呼び出し、戻ってくるのを待っている間に、最初のメソッドが(最終的に)戻る前に安全に戻る2番目または3番目のメソッドを呼び出します。これはBlazeDSでサポートされていますか?

4

1 に答える 1

2

私の知る限り、blazeDSにはそのようなキューイングシステムはありません。ただし、並行性変数を構成できます。

同じサービスへの複数の呼び出しを処理する方法を示す値。デフォルト値は倍数です。次の値が許可されます。

複数-既存のリクエストはキャンセルされません。開発者は、イベントストリームを注意深く管理することにより、返されたデータの一貫性を確保する責任があります。これがデフォルトです。

single-メソッドで一度に1つのリクエストのみを行うことができます。リクエストが未処理の間に行われた追加のリクエストは、クライアントですぐに障害が発生し、サーバーに送信されません。

last-リクエストを行うと、クライアントは現在の未処理のリクエストの結果または障害を無視します。最新のリクエストの結果または障害のみがクライアントにディスパッチされます。これにより、クライアントアプリケーションでのイベント処理が簡素化される場合がありますが、要求の結果または障害が安全に無視される可能性がある場合にのみ、このモードを使用するように注意する必要があります。

したがって、「シングル」を使用すると、ユーザーが同じメソッドを複数回呼び出すのを防ぐことができます

サーバーに送信されるメッセージをより具体的に制御したい場合の別の解決策は、コマンドパターンを使用することです。多くのメソッドを呼び出す代わりに、1つのメソッドのみを呼び出してネットワークを介してコマンドオブジェクトを送信します。やるべきことはもっとたくさんありますが、並行して実行できる操作とそうでない操作がある場合は、これは良い解決策です。

于 2012-09-11T06:44:02.310 に答える