I have implemented a kind of in memory database using generic Lists and Linq which is consumed by an ASP.Internet application. Building this database in memory takes about 45 seconds (it's constructed from a database) so we are attempting to minimize ASP.Internet application pool recycles to daily at 1:00 a.m. to prevent getting the staff member process recycle in the center of your day and spin for 45 seconds repairing the database.

Let me move our in memory database to a different process isolated in the ASP.Internet worker process but I am unsure regarding the way i could possibly get objects within the ASP.Internet application speaking to some separate procedure that would contain the database. Must I make use of a TCP listener kind of factor? I understand IIS accustomed to have the ability to host libraries making them available via remoting...is still possible?

If you are wondering why I am likely to all of the trouble of the in memory database it is because it's running a faceted search application. Using Linq as well as in memory lists is faster by many people orders of magnitude than visiting the database for every search.

Thanks ahead of time for just about any advice.

You need to most likely take a look at WCF over named pipes: http://www.switchonthecode.com/tutorials/wcf-tutorial-basic-interprocess-communication.

You can host your DB inside a simple home windows service.

Named pipes is one option to get it done. You are able to abstract that off to a degree using WCF Named Pipes bindings. You may also apply security permission to stated named pipes to enhance security against arbitrary programs doing stuff for your in memory database.

CK1, WCF and Named Pipes as other stated are fine inside the same server, should you then place in another machine ( as an application server ) your in memory db hosting, you can simply alter the binding and employ netTCP for fast binary communication across machines over TCP...