問題タブ [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.
c# - C# での AppDomain の使用法
C# での AppDomains の最も重要な用途は何ですか?
c# - AppDomain.CreateInstance
AppDomain.CreateInstance("Assembly name", Type name) を使用し、クラスが MarshalByRefObject から継承した場合、内部的にはどうなりますか? TransparetnProxy を作成していますか?
コード:
args[0] を渡す = あいさつ
c# - AppDomain を使用して DLL 内のクラスをインスタンス化する
私は、ユーザーの要求に応じてオンザフライでクラスをコンパイルし、Web サイトのサブディレクトリに dll (Equation.dll という名前) を配置する Web サイトを持っています。管理者はいつでも再コンパイルできます。ただし、クラスのインスタンスが作成されると、「別のプロセスによって使用されているため、プロセスはファイルにアクセスできません」というメッセージが表示されます。
私が理解しているように、これを回避する唯一の方法は、別の AppDomain からインスタンスを作成することです。次に管理者が再コンパイルする必要があるときは、この AppDomain をアンロードする必要があります。(私が思うに) すべて問題ありません。(もしかして私の推測が間違っているのでしょうか?)
率直に言って、命を救うためにこのクラスのインスタンスを作成することはできません。確かに、私はここで少し頭を悩ませています...だから私は何でもスイングしています。この時点での私のスニペットは次のとおりです。
「equationcache」フォルダーは、dll がコンパイルされる場所です (これを楽しみのために「bin」に配置しようとしましたが、どちらも成功しませんでした)。呼び出しのアセンブリ名は正しいようです (そして appDomain.Load で動作します)。呼び出しの型名は正しいようです。ログによると、次のことが起こります。
「equationcache」ディレクトリでさまざまな形式の「Cnn.CostModel」を探している理由がわかりません。確かに、呼び出しコードは bin フォルダーの "Cnn.CostModel.dll" にあります。代わりに「Equation.dll」ファイルを取得するにはどうすればよいですか?
それとも、私はこの努力に完全に基づいていませんか? 非常にイライラします。どんな助けでも大歓迎です。
asp.net - ASP.NET 開発の高速化
DotNetNuke をフレームワークとして使用し、必要な機能のカスタム モジュールを使用して Web アプリケーションを開発しています。問題は、コードに変更を加えると Web サイトの読み込みに時間がかかることです。再起動ごとに最大 1 分を見ていますが、これは非常に遅いです。これにより、開発、再構築、テストのサイクルが非常に遅くなります。
コンソール プロジェクトと winforms プロジェクトの両方を、開発を高速化するための新機能のテスト グラウンドとして使用していますが、ブラウザで実行する必要がある UI 機能はまだたくさんあります。
Web アプリの bin フォルダーで何かが変更されたときに発生するアプリドメインの再起動を高速化/防止する方法に関するヒントはありますか?
com - .Net COM DLL が vb6 から appdomain 間で動作しない
大規模なvb6アプリケーションがあり、変更/修正する必要があるため、フレームワーク2.0をターゲットにしてセクションを.netに移動しています。一連のクラスを .net dll に移動し、com に公開されるように適切にセットアップしました。
ここに問題があります: MainAppVB6.exe は DOTNET_COM.ComClass をインスタンス化します。これを別の .net dll のメソッドに渡し、appdomain を介して渡します。これは、vb6 で記述された COM オブジェクトではまったく問題になりません。
.net は appdomain の境界を認識し、オブジェクトをシリアライズ可能にするか、marshalbyref にする必要があります。vb6 に戻すデータを変更するには .net 部分が必要なので、シリアライズ可能は機能しません。Inherits MarshalByRefObject でクラスをマークすると、「このリモーティング プロキシにはチャネル シンクがありません。これは、サーバーに登録済みのサーバー チャネルがリッスンしていないか、アプリケーションにサーバーと通信するための適切なクライアント チャネルがないことを意味します」というメッセージが表示されます。
チャネルはありません。同じ dll 内の appdomain を通過しているだけです。.net はオブジェクトを COM として扱っていないようです。
marshalbyref と serializable の両方を削除すると、com オブジェクトが vb6 によってインスタンス化されている場合にのみ機能します。appdomain の .net 機能がオブジェクトを作成し、割り当てて vb6 に戻すと、vb6 で自動化エラーが発生します。
新しい appdomain でオブジェクトをシリアル化し、xml を送り返し、vb6 に逆シリアル化させるのは非常に厄介な方法ですが、それはばかげているように思えます。
誰にもアイデアはありますか?
ありがとうございました。
セス
c# - すべての C# プログラムに AppDomain はありますか?
AppDomain を特に作成しない場合でも、すべての C# プログラムに AppDomain はありますか? なぜそれが必要なのですか?サード パーティのアセンブリを別の AppDomain に読み込まないと、アプリケーション全体がクラッシュするという記事を読みました。その点がよくわかりませんでした。誰でもこれを説明できますか。
c# - .net の別のコンピューターでプロセスを実行するにはどうすればよいですか
ネットワーク上の複数のコンピューターに "MyService" という Windows サービスと "MyEXE" という実行可能ファイルがあるとします。
(「MyService」内から)別の/同じコンピューターで「MyEXE」の複数のインスタンスを開始し、何らかのタスクを実行させて、「MyService」のコールバックメソッドに真/偽の結果を返すことは可能ですか?
このようなもの
多分私はアーキテクチャ全体を間違っています!
.net-2.0 - AppDomain はいつ使用しますか?
私はリフレクションにかなり慣れていないので、(2番目の)AppDomainを何に使用するのだろうと思っていましたか? ビジネスアプリケーションでは、どのような実用的なアプリケーションがありますか?
c# - POCOインスタンスを他のAppDomainに公開するための汎用コンテナ-どのように機能しますか?
私は別のSOスレッドからのこの回答に興味を持っており、誰かが私にコンセプトに光を当てるのを手伝ってくれることを望んでいました。
プライマリAppDomainと、プライマリAppDomainによって作成および初期化される子AppDomainの束があるとします。擬似コードの場合:
プライマリAppDomain:
子AppDomain:
Init()中に、子AppDomainはPOCOオブジェクトをインスタンス化します。これは、定義上、マーシャリングできません。また、その点で変更できないと仮定しましょう。
リンクされた回答は、それをContainer<T>(それ自体がマーシャリング可能である)でラップすると、プライマリAppDomainに戻すことができるようにする必要があることを示唆しています。Container<MyInfo>実際に渡されるのはインスタンスへのプロキシであるため、これを理解しています。
私が理解していないのは、プライマリAppDomainがコンテナのプロキシを介してコンテナ内のPOCOインスタンスにアクセスする方法です。オーバーロードされた暗黙のキャスト演算子が表示されContainer<T>、含まれているPOCOインスタンスが返されることを理解しています。しかし、そのインスタンスはそれ自体がプロキシされていません-それはまだ子AppDomainにあります!だから、これは壊れるべきではありませんか?
ここで実際に何が起こっているのですか?