Using COM+ as Isolation level for IIS 5 hosting multiple applications
I know its quit controversy but when I need to host many web application on single machine running IIS 5.0 (usually for consolidation reason) and I want to keep the server availability as near as possible to 24*7 I use COM+. To be more specific I ensure that all the application classes, except the visualization layer class, will run under COM+ Server Application. I don’t mean that all the classes will be registered as COM+ server but will run under the COM+ server dllhost dedicate process. The easiest way to achieve this rule is by applying a Façade design pattern and to register just the façade class as COM+ server. This way all the calling classes by the façade will be run under COM+ server but won't register as COM+ server. Yes I know COM+ hurt performance quit badly but if you willing to accept it you get much more reliable server. Every web application is running in dedicated application domain. But if for some reason one application causes aspnet_wp process to reach 100% CPU (and its happened), that application causes all other application to misbehave. But if the misbehaved application cause any problem when the application code is running under dllhost process not just that the aspnet_wp process keep on going, restarting the dllhost process cause the misbehave application to continue working as usual. In addition using COM+ statistics can help you find quickly the misbehave component and to focus more quickly on the buggy class.
It seems that IIS 6.0 that introduces application pool can provide free COM+ solution but I didn’t check it yet on production environment.