- - PR -
アプリケーションドメイン間の通信について
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-08-17 18:03
VS2003、VB.NETで業務システムを開発しています。
画面(フォーム)が300以上ありまして、それをリフレクションで読み込んで実行しています。リフレクションデータはDBに格納しています。 この方法だと、全画面起動(DLLを読込)しただけで、メモリ消費量が膨大になってしまうため、解決策を模索しています。 アセンブリをアンロードするために、アプリケーションドメインを分ける事を、考えていますが、そうすると、アプリケーションドメイン間の通信が必要となってしまいます。実行環境にMetaFrameを用いていますので、リモートでの処理はあきらめています。 中立アプリケーションドメインという物を耳にして利用できないかと考えているのですが、仕様もはっきりと理解できていない状態なので、使いこなせていません。 詳しい情報をお持ちの方がいらっしゃれば、ご教授願いたく思います。 中立アプリケーションドメイン以外でも、何か良い方法があればお教え下さい。 | ||||||||
|
投稿日時: 2004-08-17 22:58
諸農です。
私自身、Domainについては余りよく判っていませんので、 とりあえず情報だけです。 「プログラミング Microsoft .NET Framework」 と言う書籍の後半部分に詳しく解説がされていました。 もしよければ参考にしてください。 _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||
|
投稿日時: 2004-08-17 23:01
こんばんは、meiです。
個々のフォームに対する独自の操作が無ければ、別ドメインを用意して、そこにアセンブリを読み込んでインタフェースやベースクラス経由でアクセスすることになると思います。(この例だとFormクラスかな?) 以前、テストに使ったソースを参考までに貼り付けます。C#で済みません。
アセンブリがアンロードされるかどうかのテストだったので、ループを回したり、ReadLine()が入っていたりしています。上記ソースのCalcが読み込みたいアセンブリとクラス名です。また、アンロードするためにはCalcという具体的なクラス名を使うわけにはいかないので、ICalcというインタフェースを経由させています。DTさんの例だと、Calcの代わりに各画面(フォーム)を生成するので、ICalcではなくForm経由でアクセスすることになると思います。(各画面はFormから継承していますよね?) アセンブリはドメイン単位でしかアンロード出来ないので、ちょっと面倒ですよね。 あと、別ドメインで生成したオブジェクトへのアクセスは遅いので、頻繁に呼び出す(ループ内とか)ようなクラスを別ドメインに生成する場合は注意してください。 # GotDotNet Japanの方で色々レスがついているみたいですね。 [ メッセージ編集済み 編集者: mei 編集日時 2004-08-17 23:16 ] |
1