14

リモートSharedObjectsを使用するアプリケーションがあり、奇妙な動作が見られます。Flash Builderを使用してAS3でActionScriptアプリケーションを作成し、Wowza MediaServer2に接続しています。

私のアプリケーションは問題なく動作していますが、FlexUnitを使用してアプリケーションの単体テストを作成しようとしています。私の単体テストでは、同じリモートSharedObjectへの複数の接続を作成し、更新が正しく取得されていることを確認します。info.codeが「delete」のSyncEvent.SYNCイベントが発生しないことを除いて、すべてが正常に機能しているようです。アプリケーションを個別のタブで個別に実行したり、同じページに埋め込まれた個別のswfsで実行したりすると、正常に機能します。ユニットテスト内では動作しませんが、何らかの理由で。また、同じSWF内のローダーを使用してswfsをロードすると、同じ動作が得られることもわかりました。同じSWF内で同じSharedObjectの倍数がどのように動作するかについては奇妙に思えます。

誰かが私がこれを回避する方法について何かアイデアがありますか?これは既知の問題ですか?私は夢中ですか?:)

助けていただければ幸いです!

4

3 に答える 3

0

sharedObject インスタンスを取得するには、静的メソッドを使用していますSharedObject.getRemote()。このメソッドは、特定の名前に対して常に同じインスタンスを返すと思います (永続化パラメーターが同じ値の場合)。

アプリから SharedObject を削除し ( mySO = null)、ガベージ コレクターが機能する前にそれを再インスタンス化すると、同じ種類の問題が発生する可能性があります)。

この種の振る舞いは私には理にかなっていますが、認めざるを得ない問題になる場合もあります。とにかく、デバッグセッションで簡単にテストできるはずです (オブジェクトのインスタンス番号を見てください)。

単体テストについて話していますが、何をテストしていますか? SharedObjects の動作は? もしそうなら、私はここにいくつかの誤解があると思います。この種の動作を本当にテストしたいのであれば (その背後にある理由にも興味があります)、2 つの別個のアプリケーションを実行する、より複雑なテストが必要になると思います。

それが役に立てば幸い!

于 2013-06-06T03:13:37.157 に答える
0

以前、Cairngorm などのコーディング フレームワークを使用して Flex アプリケーションを作成し、複数のリモート オブジェクトを使用して AMFPHP に接続していたときにも、この問題に直面しました。

この問題を解決するために私が思いついたのは、これらのリモート オブジェクトが同時に起動されないようにすることです。これは、いわゆる「シーケンシャル チェーン」を作成して、それらのリモート オブジェクトを次々と起動しようとしています。

これを実現するために、ゼロから行うのは難しい場合があります。最新の ActionScript フレームワーク 2.0 を利用することを検討してください (SWIZ や Robotlegs など)。これは、非常に最初に処理するには複雑すぎる場合があります。フレームワークによって処理されるようにリモート オブジェクト パーツを配置し、他の部分はそのままにしておくことをお勧めします。

于 2011-10-19T08:06:26.697 に答える