- PR -

モジュール(dllファイル)の構成について

投稿者投稿内容
ax
常連さん
会議室デビュー日: 2004/04/07
投稿数: 34
お住まい・勤務地: 東京
投稿日時: 2006-02-02 21:34
VB .NETでアプリケーションを開発しています。
作成しているvbソースファイルが数十ファイルあるのですが、コンパイルした後に、*.vbファイル1つに対してdllも1つ作成するのか、複数の*.vbファイルをまとめてdllにするのか、その方針で迷っています。
どちらの場合でも、出来上がった*.dllファイルを/binに配置すれば、IISから参照できるので実行可能だと思いますが、何か違う部分があるのでしょうか?特に決定的な理由もないので決めかねています。
ご意見をお聞かせください。よろしくお願いします。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2006-02-02 22:04
ソースファイル単位でプロジェクトを分けて別DLLにするなんて話、聞いたこと無いです。普通は機能面での纏まり毎に分割するでしょう。結果的に機能ごとに分割したら、それがソースファイル毎だったと言うことはあるかもしれませんが・・・。

プロジェクトを分割して数が増えれば、プロジェクトを管理すためのコストも増大します。DLLにすることによって得られるメリットと、それによって発生するであろうデメリットを共に判断すれば、自ずと適当なところに落ち着くのではないですか?

少なくとも私には、複数のプロセスで共有される可能性もあるモジュール、あるいは動的に差し替える可能性のあるモジュール、実行コードが大きくメモリの節約のため動的にロードする必要のあるモジュールのいずれかでない限り、DLLにするメリットと言うのは思い当たりません。また、それで分割するとしても、それは機能単位での分割であって、ソースファイル単位で分割しようとは夢にも思わないでしょう。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-03 01:20
CLR ローダーは必要最小限のものしかロードしません。
必要になった時にオンデマンドでロードします。

リソースに関して心配することはありません。
保守や運用を第一の視野に入れるべきでしょう。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
nanbu
大ベテラン
会議室デビュー日: 2004/08/19
投稿数: 178
投稿日時: 2006-02-03 05:03
逆に管理以外のデメリットってなにがあるんだろう?
やったことないので想像できない、、

、、他人に見られたらちょっと恥ずかしい、、かも < デメリット
ax
常連さん
会議室デビュー日: 2004/04/07
投稿数: 34
お住まい・勤務地: 東京
投稿日時: 2006-02-03 09:21
返答ありがとうございます。
とりあえず、どの纏まりでDLLにするかによって性能などには影響がないようでしたら、機能単位にしようかと思います。ただ、1つの*.vbファイルに対して1つの*.dllという方法を用いた場合は動いていたんですが、試しに全部まとめて1つのDLLにしたら、クラスがロードできないというエラーになってしまいました。作成したDLLの中に間違いなく含まれているクラスなんですけど、ロードできないということで、現在は原因を調査中です。
ところで、下記に「DLLにするメリット…」という返答をいただいていますが、DLLにする以外でなにか方法があるということでしょうか?
引用:

少なくとも私には、複数のプロセスで共有される可能性もあるモジュール、あるいは動的に差し替える可能性のあるモジュール、実行コードが大きくメモリの節約のため動的にロードする必要のあるモジュールのいずれかでない限り、DLLにするメリットと言うのは思い当たりません。また、それで分割するとしても、それは機能単位での分割であって、ソースファイル単位で分割しようとは夢にも思わないでしょう。



じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-03 09:30
そもそも、件名が「モジュール」となっているところからして、
DLL (アセンブリ) の単位を誤解していたのかな?

引用:

axさんの書き込み (2006-02-03 09:21) より:

試しに全部まとめて1つのDLLにしたら、クラスがロードできないというエラーになってしまいました。
作成したDLLの中に間違いなく含まれているクラスなんですけど、ロードできないということで、現在は原因を調査中です。


例外などのメッセージは正しく、例外の種類なども正しく記載してください。

引用:

ところで、下記に「DLLにするメリット…」という返答をいただいていますが、DLLにする以外でなにか方法があるということでしょうか?


リンクとして参加させる... ただ細分化しないとアセンブリが肥満化しますけど。
今やプロジェクト参照もあり、固め直す作業は不要になっているので、
クラス ライブラリで良いと思いますけどね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2006-02-03 09:40
引用:

ただ、1つの*.vbファイルに対して1つの*.dllという方法を用いた場合は動いていたんですが、試しに全部まとめて1つのDLLにしたら、クラスがロードできないというエラーになってしまいました。作成したDLLの中に間違いなく含まれているクラスなんですけど、ロードできないということで、現在は原因を調査中です。


勘ですけど
/binの中に、「1つの*.vbファイルに対して1つの*.dllという方法を用いた」dllと「全部まとめて1つのDLLにした」dllの両方が配置されていませんか?
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2006-02-03 10:09
ヒント:プロジェクトのルート名前空間(VB.NETの機能)

スキルアップ/キャリアアップ(JOB@IT)