問題タブ [applicationdomain]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
apache-flex - リモート SWF をアプリケーション SecurityDomain (actionscript3) に「ブートストラップ」します。
私の Flash (AS3/AIR) アプリケーションは現在、(Flash アプリの) 少し変わったアーキテクチャを使用して、実行時に読み込まれたコンテンツに特定の基本クラスを提供しています。外部コンテンツは「スタブ」基本クラスで公開されますが、実行時に読み込まれると「実際の」基本クラスによって隠されます。Adobe ではこれをブートストラップ( pdf )と呼んでいると聞いたことがありますが、これまでのところ非常にうまく機能しています。確かなことを言う資格はありませんが、私が信じている DLL アーキテクチャと同じです。
これまでロードしていた外部コンテンツは、同じSecurityDomain
(同じサンドボックス) 内からロードされていたため、 child 内のコンテンツを簡単にロードできましたApplicationDomain
。残念ながら、私が知る限り、ApplicationDomain
s にまたがるSecurityDomain
s は関連付けることができません。つまり、ある SecurityDom の AppDom を別の SecurityDom の AppDom の子にすることはできません。
しかし、今度はこの外部コンテンツをアプリケーション サンドボックスの外からロードする必要があります。を介して通信を行う方法はたくさんありますがSecurityDomain
、そのほとんどは非常に限定されていますが、AIR のsandboxBridge
API はおそらく最も強力です。残念ながら、これらの通信方法では、このブートストラップ アーキテクチャを実現することはできません。
LoaderContext
オブジェクトにプロパティがあることに気付きましたsecurityDomain
が、Flash セキュリティにより、「ローカル swfs」がオブジェクトに触れることが禁止されています (SecurityError
または同様のものがスローされます)。
Flexには有望に見えるプロパティSWFLoader
がありますが、 で を設定するのtrustContent
と同じ制限があると思いがちです。SecurityDomain
Loader
LoaderContext
再設計する必要があると思いますが (これは簡単ではありません)、調査で何かを見逃していないことをここで確認したいと思います。
それで... アイデアや知恵の真珠はありますか?セキュリティモデルに取り組んでいるアドビの誰かが決定的な「はい/いいえ、できます/できません」と言ってくれたら、特にうれしいです...
前もって感謝します!
補遺:それ以来、ブートストラップがすべて外部ドメインで行われるように、アーキテクチャを再設計することにしました。しかし、私の質問はまだ好奇心から立っています。
c# - 静的クラスのスコープは何ですか?
一度に複数のプロセスで使用できるアセンブリがあります。静的クラスを使用している場合、複数のプロセスはすべてそのクラスの同じ「インスタンス」を使用しますか?
プロセスが分離されているため、これらは異なるアプリケーション ドメインで実行されているので、静的な「インスタンス」は分離されていますか?
ここでの詳細のプディングは、アセンブリがカスタム BizTalk アダプターによって使用されており、メッセージを並列バッチで処理するように設定されていることです。それが、私が上で「複数のプロセス」と呼んでいるものです。
silverlight - Silverlightは、ブラウザータブごとに個別のアプリケーションドメインを使用しますか?
同じSilverlightアプリケーションが2つのWebブラウザータブで実行されている場合、各タブは別々のアプリケーションドメインを使用しますか?
Microsoftがこの情報を明示的に提供している場所がわかっている場合は、参照を含めてください。
c# - アプリケーション ドメインとスレッド
MSDN からの引用: http://msdn.microsoft.com/en-us/library/6kac2kdh.aspx
1 つ以上のマネージド スレッド (System.Threading.Thread で表される) は、同じマネージド プロセス内の 1 つまたは任意の数のアプリケーション ドメインで実行できます。各アプリケーション ドメインは 1 つのスレッドで開始されますが、そのアプリケーション ドメイン内のコードは、追加のアプリケーション ドメインと追加のスレッドを作成できます。その結果、マネージ スレッドは、同じマネージ プロセス内のアプリケーション ドメイン間を自由に移動できます。複数のアプリケーション ドメイン間で移動するスレッドが 1 つだけの場合もあります。
1 つのスレッドを共有する 2 つのアプリケーション ドメインでコードを記述しようとしました。しかし、私はあきらめました。どうすればこれが可能になるのか、私にはまったくわかりません。これのコードサンプルを教えてください。
apache-flex - Flex でプラグインを作成する - ネストされた SWF ファイルをロードする
アプリケーションにプラグイン システムを実装しようとしていますが、動的にロードされた SWF ファイルを取得するのに時間がかかり、追加の SWF ファイルをロードします。
次のようになります。
- メイン アプリケーション シェルの読み込み...
- ------+ アプリケーションのロード...
- -----------------+プラグイン
アプリ #1 を取得してアプリ #2 を読み込むことに問題はありません
ただし、試してみると、アプリ#2をロードして#3をインスタンス化できません
ModuleManager を使用してさまざまな順列を試しましたが、これが最も近いものです。onLoadComplete メソッドが呼び出されると、SWF がロードされたことがわかりますが、ファクトリは常に NULL を返します。
興味深いのは、これを独自のアプリケーションで抽出すると、正常に動作することです。この問題は、動的にロードされた SWF からプラグインをロードしているという事実によって引き起こされます。
これは によるものApplicationDomain
だと思いますが、表も裏もわかりません。を指定してみましたcurrentDomain
が、成功 new ApplicationDomain(Application.currentDomain)
しませんでした。new ApplicationDomain()
また、どちらのアプリケーションでも Foo クラスへの参照をハード参照にすることはできないことに注意することも重要です。これは、その性質上、何が含まれるかを事前に知ることができないためです。
グーグルで調べてみると、これはよく知られている問題のようですが、まだ (明確な) 解決策を見つけていません。
と
c# - C# アセンブリの読み込みと遅延バインディング
私はC# と .NET に関するこの本を読んでいて、たくさんのすばらしいことを学んでいます。著者がアセンブリを動的にロードし、そのアセンブリで型のインスタンスを作成することについて話している部分を読みました。
AS3 では、1 つのことを除いて、同じ種類のことを行うことができます。クラスのセットをコンパイルするのではなく、型の安全性をチェックするようにコンパイラに要求できます。例を次に示します。
アプリケーション コードの実行時に、クラス A の定義を含む外部ライブラリを動的にロードし、それらの定義をアプリケーションの ApplicationDomain にロードすると、すべて正常に実行されます。反省はいらない!
これはC#で可能ですか?
つまり、C# コンパイラに一連のクラス (たとえば、ライブラリ内) に対して型チェックを行い、それらをコンパイルから除外するように指示できますか?
c# - 現在のアプリケーションドメインのアセンブリ名を取得する
現在のアプリケーションドメインでアセンブリフレンドリ名を取得したいので、次のように記述しました。
しかし、問題は、これが私が見たかったものではなく、私が得たものの出力であるということです:
mscorlib、Version = 2.0.0.0、Culture = neutral、PublicKeyToken = b77a5c561934e0 ApplicationDomains、Version = 1.0.0.0、Culture = neutral、PublicKeyToken = null
実際、私はそれらの名前を期待していました:
代替テキストhttp://www.pixelshack.us/images/xjfkrjgwqiag9s6o76x6.png
私が間違えたことがあるかどうか誰かに教えてもらえますか?
前もって感謝します。
または、私が期待していた名前はアセンブリではありませんでしたか?
.net - アプリケーションに複数のプロセスを同じアプリケーションドメインにスタックさせるにはどうすればよいですか?
だからここに私がやりたいことの例があります:
test.exeを実行すると、新しいWindowsプロセスが作成され、新しいCLRアプリケーションドメインが作成され、新しいCLRプロセスが作成されます。test.exeを実行すると、新しいWindowsプロセスが作成され、CLRアプリケーションドメインが存在することを認識し、最初のCLRアプリケーションドメインでCLRプロセスを再起動して、Windowsプロセスで閉じます。さらに20個のtest.exeインスタンスが実行され、それらはすべて同じWindowsプロセスと同じCLRアプリケーションドメインに存在します。
これは、少なくともアイデアです。
提案?
casting - 外部 SWF をロードしています。ドキュメント クラスを共有基本クラスにキャストできません
Widget 基本クラスを定義する親 SWF ファイルがあります。
次に、外部 SWF を親にロードします。外部 SWF のドキュメント クラスは、Widget ベース クラスから派生します。たとえば、DerivedWidget と呼びましょう。
問題は、外部 SWF をロードするときに、Loader.content (DerivedWidget 型としてデバッガーに表示される) を Widget 型にキャストできないことです。ロードが完了すると、「as」演算子を使用してコンテンツを親 SWF のウィジェットとしてキャストしますが、キャストの結果は「null」になります。
外部 SWF が親のアプリケーション ドメインに読み込まれ、ローダーのコンテンツが DerivedWidget としてデバッガーに表示されるため、この動作は想定されていません。これは Widget から派生することがわかっていますが、基本 Widget クラスへのキャストは失敗しています。
誰でもこの予期しない動作を説明し、解決策を提供できますか?
[編集: 以前のコードのスナップショットを振り返ると...これは以前は機能していましたが、現在は機能していません...そして読み込みとキャストのコードは変更されていません]
[編集 2: 実際、Flash IDE でのデバッグ時に失敗しているようです。正常に実行すると、すべてが正しい ApplicationDomain (sameDomain=true) にロードされます。これは明らかに大きなバグです]
c# - .NET のアプリケーション ドメインの一般的な使用法とベスト プラクティスは?
アプリケーション内に新しいアプリケーション ドメインを作成する場合のガイドラインとベスト プラクティスは何ですか?
また、アプリケーション内で複数のアプリケーション ドメインがどのように使用されるかの一般的な用途と例は何ですか?