- - PR -
IIS 6.0 を利用した DLL配信機能 は実装可能か?
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 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
