EggHead
Home Support Free VPS/VM
HOSTING


ISAPI Loader
Update your ISAPI DLL while in USE and without restarting IIS!!


Download $FREE (Please check out my other products)

What is it?:

The ISAPI Loader is a tool which allows you to update a running ISAPI DLL with a new version without having to restart IIS (or the webserver you are using).

It is an ISAPI application whoes responsibility is to simply pass requests to a second ISAPI (your application) and to replace that DLL with a new version when an update is avaiable.

User Interruptions while updating:

If your design permits, your users will not be interrupted by the update. By permits, I mean for example that your ISAPI does not store session state in RAM and that unloading and loading a new DLL should not effect your users session data.

Requests made before the update will be allowed to pass through and any requests made during the update will be made to wait until the new dll is loaded and then once it is loaded those requests will be passed to the new DLL.

How it works:

The loader first works by loading your ISAPI application with a .run extension. The Loader uses a background thread to check for a new file with a .update extension. This file should have the same name as your ISAPI dll but just have a .update extension. (This extension can be changed) When the loader sees the new file then it allows all current requests to finish processing and makes new requests wait. (The new requests are not denied, they are made to wait) Then the loader unloads the current ISAPI and then loads the new ISAPI DLL, then any requests that have been on wait are then passed to the new ISAPI. The goal being an update in which users are unaware.

Instructions for use:

  • Your current ISAPI DLL extension should be changed to .run
  • The loader should be renamed to the same name as your DLL so that it replaces your DLL. Thats it
  • When you need to updated your ISAPI, change the extension to .update and copy it over.
    In 10 seconds or less, the loader will unload the .run and rename it to .backup and then rename the .update to .run and then load the .run


ISAPILoader.zip Contents:

The ZIP file contains the source code, 2 compiled versions of the loader, and a sample HelloWorld app for testing.

The 2 compiled versions are in the BIN directory, one has _DEBUG appended and the other is _NODEBUG. If you use the _DEBUG version then it will create a subdirectory and place logging information in there. This may be usefull if your ISAPI is not loading or is hanging when being updated - you will be able to see the steps the loader has taken and at which point it has failed. The _NODEBUG version has no logging and does not create a subdirectory for logging.