- PR -

IIS 6.0 を利用した DLL配信機能 は実装可能か?

1
投稿者投稿内容
ヨコヤマダ
会議室デビュー日: 2003/10/14
投稿数: 8
投稿日時: 2004-08-17 18:59
どうもこんにちは。
ヨコヤマダと申します。
本日は IIS 6.0 の新概念についてお尋ねしようと筆をとりました。

突然ですが、.NET と IIS 6.0 でWebサービスを利用した業務アプリケーションを構築しました。
このアプリはサーバ上で24時間稼動することを想定しています。
その業務アプリに改修が入った場合に、改修済みの DLL をサーバに配信するというものを、業務アプリとはまた別に作りたいと考えています。
簡単に言いますと、APサーバ上にある業務アプリの DLL を上書きして更新したい、ということです。
しかし、実際にDLLを上書きしようとすると、Webサービス使用中もしくは使用直後には DLL を上書きできないということがわかりました。

原因としましては、IIS がその DLL をキャッシュに入れてしまっている為、いわゆる「他のプロセスが使用している」状態になっているということが考えられます。
それなら、IIS 6.0 の「アプリケーションプール」の仕組みを利用し、以下のような手順で実装できないだろうかと考えました。

1.同一のDLLを持つWeb仮想ディレクトリ a, b を作成します。
2.アプリケーションプール X にワーカープロセス a と b を持たせます。( X をロードバランサにみたてたようなイメージです。)
3.まず X を操作してサーバ処理を b に集中させます。
4.a のプロセスを切り、その隙に a のDLLを上書きします。
5.次に 3と同様にしてサーバ処理を a に集中させます。
6.b のプロセスを切り、その隙に b のDLLを上書きします。

ただ、アプリケーションプールをプログラムから操作して、片方のワーカープロセスだけを殺すという芸当がまず可能なのでしょうか?

また、皆さんはこのような DLL配信機能 はどのように実現されているのでしょうか?

文中で実に見当違いなことを言っているかもしれませんが、
その辺りのご指摘も含めてどうかご教授ください。
よろしくお願いいたします。

1

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