問題タブ [appdomain]
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.
silverlight - Silverlightは、ブラウザータブごとに個別のアプリケーションドメインを使用しますか?
同じSilverlightアプリケーションが2つのWebブラウザータブで実行されている場合、各タブは別々のアプリケーションドメインを使用しますか?
Microsoftがこの情報を明示的に提供している場所がわかっている場合は、参照を含めてください。
c# - 回避策 .net アプリケーション ドメインのみがオブジェクトを値で渡す
プラグインに大きく依存する .net アプリケーションを開発しています。アプリケーション自体には、リモート サーバーへの接続が含まれています。
最近、私はアプリケーション ドメインを掘り下げて、アプリケーションの残りの部分からプラグイン コードを分離するための理想的なソリューションであると考えました。
ただし、プラグインをホストするアプリケーション ドメインを実装できない大きな欠点が 1 つあります。接続オブジェクトへの参照を渡すために必要な別のアプリケーション ドメインへの参照によってオブジェクトを渡す方法はないようです。
そのオブジェクトへの参照を渡すことができるように、誰かが回避策を教えてくれることを望んでいました。
注: プロキシの作成は問題外です。クラスは自動生成されるため、接続レイヤーは既にプロキシとして機能します。
注 2: System.AddIn は、コンパクト フレームワークでは使用できないため、使用できません。
.net - AppDomain の作成速度はどのくらいですか?
Reflection.Emit を介してアセンブリを生成する場合、.NET フレームワークは、Reflection.Emit クラスが GC されないようにする静的メンバーに参照を保持することを発見しました。
制限により DynamicMethod を使用できません。また、プログラムの過程で多くのアセンブリ (IronScheme のインクリメンタル コンパイラ) を生成します (1000 以上になる場合もあります)。
したがって、別のドメインでコード生成を処理し、後でアンロードすることを考えていました (これを処理する方法を決定していません)。
これがどれだけ高価になるか経験のある人はいますか?
.net - appdomainリサイクル全体でカスタムパフォーマンスカウンターを使用する
カスタムパフォーマンスカウンターを作成して書き込むことで統計を追跡するASP.NETアプリケーションがあります。ときどき、現在のプロセスですでに使用されているためにカウンターを開くことができなかったことを示すエラーログが表示されます。これは、同じw3wp.exeプロセス内で.NETアプリドメインがリセットされたことが原因だと思います。アプリドメインがリサイクルされたときに、これらのエラーを回避し、パフォーマンスカウンターへの接続を再確立するにはどうすればよいですか?
カウンター構造:
カウンターの使用法:
[2009年3月26日に更新]受信したエラーメッセージは次のとおりです。
インスタンス'_lm_w3svc_1_root_myapp'は、プロセスの存続期間とともにすでに存在します。削除されるか、それを使用しているプロセスが終了するまで、再作成または再利用することはできません。プロセスの存続期間ですでに存在します。
パフォーマンスカウンターを初期化し、一時的なAppDomainでそれらの1つに書き込むことにより、コンソールアプリケーションで例外を複製しようとしました。次に、AppDomainをアンロードし、2番目のAppdomainで再度実行します(同じプロセス)。どちらも成功します。これの原因が正確にわからないので、ASP.NETでのAppDomainのリサイクルに関する私の仮定は間違っているようです。
c# - 署名されたアセンブリのみを新しい AppDomain にロードする方法は?
私は、メイン アプリが新しい AppDomain の実行時にアセンブリ Addin1.dll と Addin2.dll をロードするアドイン システムを実行しています。
ただし、Addin1.dll が私のキーで署名され (厳密な名前)、Addin2.dll が署名されていない場合、Addin1.dll のみをロードして Addin2.dll を拒否できるようにしたいと考えています。
AppDomainSetup でいくつかのパラメーターを設定して行う必要があると思われますか?
.net - 処理中のAppDomainを一覧表示します
プロセス内でAppDomainを列挙する方法はありますか?
c# - メッセージ ポンプと AppDomain
DLL をプラグインとしてロードする C# (FFx 3.5) アプリケーションがあります。これらのプラグインは個別の AppDomains に読み込まれます (多くの正当な理由により、このアーキテクチャは変更できません)。これはすべて順調です。
これらのプラグインのいずれかからダイアログを表示する必要があります。ダイアログ フォームをメイン アプリケーションに戻してそこに表示することはできないことに注意してください (現在のインフラストラクチャではサポートされていません)。
失敗1
DLL でフォームを作成し、Show を呼び出しました。ダイアログのアウトラインは表示されましたが、描画されず、マウス イベントに応答しません。これは、DLL が別の AppDomain にあり、アプリのメッセージ ポンプがメッセージを新しいフォームにディスパッチできないためであると想定しました。
失敗 2
私の DLL では、フォームを作成し、ShowDialog を呼び出しました。これは、すべての権利により、ダイアログ用の内部メッセージ ポンプを作成する必要があります。ペイントを終了し、マウス イベントに応答しなくなるため、Windows メッセージをディスパッチします。何らかの理由で、メイン アプリのメッセージ ポンプがディスパッチされていないようです。
失敗 3
DLL でフォームを作成し、Application.Run を呼び出しました。これにより、完全な 2 番目のメッセージ ポンプが確実に作成されます。失敗 2 と同じ動作になります。ダイアログは動作しますが、呼び出し元のアプリは動作しません。
ここで正確に何が起こっているのか、他の AppDomain の DLL からダイアログを表示して、呼び出し元と呼び出し先の両方が応答して適切にペイントする方法についての考えはありますか?
.net - AppDomainはリクエストごとに作成されますか?
ASP.NET 3.5(IIS6を使用)では、AppDomainはすべての要求に対して作成されますか?すべてのアプリケーションがw3wp.exeの下に独自のAppDomainを持っていることは知っていますが、AppDomain全体はどのように正確に機能しますか?
私は今日、ASP.NETアプリケーションに静的オブジェクト(またはシングルトンクラス)がある場合、このオブジェクトがすべての要求間で共有されることを私に納得させようとしている同僚と議論していました。これは誤りだと思います。私は正しいですか?どうすれば同僚を説得できますか?
ありがとう!
asp.net-mvc - 異なるAppDomainでASP.NETMVCルートを実行することは可能ですか?
私は次の解決策を考えるのに問題があります。最近、WebフォームからMVCにアップグレードしたブログを入手しました。このブログは、2つの異なるドメインでスウェーデン語と英語の両方で利用でき、IISの同じWebサイトで実行されています。
問題は、次のように、両方のサイトで言語固有のURLが必要なことです。
英語:http ://codeodyssey.com/archive/2009/1/15/code-odyssey-the-next-chapter
スウェーデン語:http://codeodyssey.se/arkiv/2009/1/15/code-odyssey-nasta-kapitel
現時点では、呼び出されるドメインに応じて、リクエストごとにRouteTableを登録することで、これを機能させています。私のGlobal.asaxは次のようになります(コード全体ではありません):
これは現時点では機能しますが、優れたソリューションではないことを私は知っています。このアプリを起動すると、「アイテムはすでに追加されています。辞書に入力してください」というエラーが表示され、安定していないように見えることがあります。
Application_Startでルートを設定する必要があるだけで、現在行っているようにすべてのリクエストでルートをクリアする必要はありません。問題は、リクエストオブジェクトが存在せず、どの言語固有のルートを登録する必要があるかを知る方法がないことです。
AppDomainについて読んでいますが、Webサイトでの使用方法に関する多くの例を見つけることができませんでした。私はこのようなものを主演することを考えていました:
次に、各アプリドメインの各ウェブサイトルートを登録し、URLに基づいてそれらの1つにリクエストを送信します。この方法でAppDomainsを操作する方法の例が見つかりません。
私は完全に軌道に乗っていないのですか?または、これに対するより良い解決策はありますか?
c# - AppDomains を使用せずに .net プラグインを実装するにはどうすればよいですか?
問題文: 関連付けられたアセンブリを上書きできるようにするプラグイン システムを実装します (ファイルのロックを回避します)。.Net では、特定のアセンブリをアンロードできず、AppDomain 全体のみをアンロードできます。
問題を解決しようとしたときに、すべてのソリューションが複数の AppDomains の使用を参照したため、これを投稿しています。複数の AppDomains を正しく実装することは、プロジェクトの開始時に設計された場合でも非常に困難です。
また、Speech Server ワークフローの InvokeWorkflow アクティビティの設定としてドメイン間で Type を転送する必要があったため、AppDomains は機能しませんでした。残念ながら、ドメイン間で型を送信すると、アセンブリがローカルの AppDomain に挿入されます。
また、これは IIS に関連しています。IIS には、メモリにロードされている間に実行中のアセンブリを上書きできるシャドウ コピー設定があります。問題は、(少なくとも XP では、2003 年の実稼働サーバーでテストしなかった) アセンブリをプログラムでロードすると、シャドウ コピーが機能しないことです (IIS ではなく DLL をロードしているため)。