I'm using asp.net (c#). I have a factory that uses a dictionary of keys that are mapped to objects types. I originally used a static variable to track the dictionary but realized it would be shared among all sessions. Then I'm left with the idea of passing the object map around everywhere, which seems messy. Should object maps or other contextual items get passed around, stored in the session, or should I just create a new instance each time I need one (in the case of non-contextual items)? I'm not using an IoC container. An example of a non-contextual item in my case would be mapping text commands that come in from the client to objects. In general it seems there is no good way to deal with contextual data without at least having a static object that pulls the values from a session. Otherwise I am stuck with passing tons of context objects around everywhere they are needed. Surely there is a good pattern for handling contexts, object maps, etc. without using session to store everything? 
How to manage contextual objects without IoC container (session or passing around objects)?
design patterns
static variable to track the dictionary but realized it would be shared among all sessions. Then I'm left with the idea of passing the object map around everywhere, which seems messy.Generally : cache data, but recreate objects on each request Storing too much in the session is a terrible mistake; static variables tend to be even worse (especially with ObjectContext and DBContext)Creating objects is not nearly as expensive as an IO operation and therefore isn't considered a spot you'd want to try optimizing by storing objects in the session.  Although it is a good idea to make your object initialization do as little processing as possible.  Look into Lazy to see the preferred way of delayed initialization.