- PR -

WebアプリとWindowsアプリでのDLL共有

1
投稿者投稿内容
やきそばパン
会議室デビュー日: 2003/12/05
投稿数: 4
投稿日時: 2006-01-05 20:55
こんにちわ

ASP.NET+VB.NETでWebシステム開発を行っています
平行してバッチプログラムもVB.NETのEXEで作成しているのですが
※IISサーバとバッチプログラムが動作するマシンは一緒です

ビジネスロジックの部分がWebとバッチの両方で共有される可能性があり
.NET開発は初めてのため、どのような形で作成しようか迷っています

ビジネスロジック部分をクラス化してDLLとして作成し、Webシステムとバッチプログラムから
うまいこと参照できないかなと考えているのですが

ちょっと試してみるとWebシステムでDLL参照を行うとsetup作成時にDLLが含まれるように見えました
これではバッチを直してDLLを差し替えるときにWeb側の再セットアップが発生するのかな?と思っているのですが
そのあたりを含めてメリット、デメリットが見えなくて困っています

やはりソースファイルだけ共有してバラバラにしたほうが保守はしやすいのでしょうか・・・

よろしくお願いします。


囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-01-06 00:55
こんにちは。

引用:

ちょっと試してみるとWebシステムでDLL参照を行うとsetup作成時にDLLが含まれるように見えました


「setup作成時」というのが何を指すのかいまいち分からなかったのですが、共通部分を別アセンブリにするという方向は正しいと思われます。

引用:

これではバッチを直してDLLを差し替えるときにWeb側の再セットアップが発生するのかな?と思っているのですが
そのあたりを含めてメリット、デメリットが見えなくて困っています


どうしたいかによります。
共通部分のアセンブリが修正、バージョンアップ等で変更になったとき、以前のバージョンのアセンブリを参照したままでいたいか、新しいアセンブリを参照したいか。

通常はアセンブリに厳密名つけて、どこか便利な場所に配置しおけば良いでしょう。その場所はアプリケーションの構成ファイルに書くなりして下さい。(GAC に登録するという手もありますが、今回は大げさかもしれませんね)
バージョン・リダイレクトという機能もあるので、バージョンアップ時にも便利です。
キーワードは羅列したので、少し調べてみてください。

もちろん、それぞれのプライベートに共通アセンブリのコピーをただ置くだけでもよいでしょう。
_________________
囚人のジレンマな日々
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2006-01-06 01:08
NAL-6295です。

引用:

囚人さんの書き込み (2006-01-06 00:55) より:
こんにちは。
通常はアセンブリに厳密名つけて、どこか便利な場所に配置しおけば良いでしょう。その場所はアプリケーションの構成ファイルに書くなりして下さい。(GAC に登録するという手もありますが、今回は大げさかもしれませんね)
バージョン・リダイレクトという機能もあるので、バージョンアップ時にも便利です。
キーワードは羅列したので、少し調べてみてください。

もちろん、それぞれのプライベートに共通アセンブリのコピーをただ置くだけでもよいでしょう。




補足として、
webアプリケーション(ASP.NET1.x)においては、
厳密名をつけた場合、GAC登録が必須となります。
GACに登録しない場合は、厳密名を設定してはいけません。

参考までに、
.NETエンタープライズWebアプリケーション開発技術大全Vol.4 セキュアアプリケーション設計編
の訂正ページ
http://bpstore.nikkeibp.co.jp/nsp/teisei/mcs_vol4.html
やきそばパン
会議室デビュー日: 2003/12/05
投稿数: 4
投稿日時: 2006-01-06 15:09
>囚人さん
>NAL-6295さん

ご返答ありがとうございます

アセンブリ、GACについて調べてみました
厳密にモジュールを共有する方法はあるようですね
できる、できないがわかっただけでも大変助かりました

方法がいくつかわかった上で、ビジネスロジックの共有率と運用上の影響を考えたのですが
それぞれのプライベートに共通アセンブリのコピーを置く形での実装がベターのような気がしてきましたので、そちらの方向で考えてみたいと思います・・・


大変参考になりました、ありがとうございました!



1

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