I've implemented a type of in memory database using generic Lists and Linq and it is consumed by an ASP.NET application. Building this database in memory takes about 45 seconds (it's built from a database) so we're trying to minimize ASP.NET app pool recycles to once a day at 1:00 a.m. to avoid having the worker process recycle in the middle of the day and spin for 45 seconds rebuilding the database.
I'd like to move our in memory database to another process isolated from the ASP.NET worker process but I'm unsure as to how I can get objects in the ASP.NET application talking to a separate process that would hold the database. Should I use a TCP listener type of thing? I know IIS used to be able to host libraries and make them available via remoting...is this still possible?
If you're wondering why I'm going to all the trouble of an in memory database it's because it's powering a faceted search application. Using Linq and in memory lists is faster by many orders of magnitude than going to the database for each search.
Thanks in advance for any advice.