フラッシュアプリケーションをホストするc#アプリケーションがあります(AxInterop.ShockwaveFlashObjects.dllにあるShockwave Flash Objectを使用)。
flashの「fscommand」を使用して、フラッシュアプリケーションからc#アプリケーションにコマンドを送信できます。
ここで、コマンド(フラッシュテキストの設定など)をc#アプリケーションからフラッシュアプリケーションに送信する必要がありますが、それはできますか?どうやって?
1 に答える
達成するにはいくつかの方法があります。
George Profenza が指摘したように、ExternalInterfaceの使用は、双方向通信を可能にする単純な実装です。一部のプリミティブ データを前後に処理でき、すべての呼び出しで少量のデータを含むホスト型フラッシュ通信に最適です。ただし、送受信できるデータ量には制限があります。
サイズが重要な場合、XmlSocketは、ステートフルな双方向通信を可能にする別のオプションになります。C# 側では、このようなスニペットを使用して XmlSocket サーバーを作成し、ホスト アプリケーションにサーバーもホストさせ、開始時に Flash をサーバーに接続させることができます。サイズの制限はありませんが、すべての呼び出しを XML にエンコードする必要があるため、両端でデータをシリアル化および逆シリアル化するためのオーバーヘッドが少し発生します。私はこのテクノロジをいくつかのスタンドアロン .NET ベースの Winform アプリケーションで何年もうまく使用してきました。
3 番目のオプションは、FlashRemoting を利用することです。上記のオプションで使用された戦略に似ていますが、「サーバー」は、AMF を使用して Flash と通信できる Flash Remoting サーバーになります。このアプローチの主な利点は、サーバーとしてシリアライズ/デシリアライザーを作成する必要がなく、Flash がそれを処理することです。また、サイズ制限もありません。さまざまなシナリオに最適です。複雑なデータ構造を持つ呼び出しの。ただし、サーバーの統合には初期費用がかかります。オープンソース ソリューションとクローズドソース ソリューションがあります。
3 番目のオプションは、ほとんどの人が Web アプリケーションに使用するため、検討されない場合があります。個人的には 3 番目のオプションを好みますが、3 番目のオプションを Windows フォーム アプリケーションとして統合した直接の経験はありません。アプリケーションを Web ベースのアプリケーションに簡単に変換できる可能性があり、データのシリアル化を犠牲にすることなく複雑なデータ構造をサポートするので、私はそれを好みます。