title: Confusion over Startup, Global, Application and Session
body: <p>I am trying to understand the various ways of storing and instantiating Application (i.e. objects available to every user) and Session level (objects created and available to users only for their session) variables.  Also, how does OWIN fit into all of this?</p>
  
  <ol>
  <li><p>Global.asax.cs - This can contain a bunch of different methods.  I believe that Application_Start is only called during the first request.  However, there are a few candidates here for methods to populate session level variables (e.g. Session_Start and Application_BeginRequest).  What is the standard way of doing this?</p></li>
  <li><p>There is also the Startup class used by OWIN.  I get that OWIN lets you store Application level variables, but why wouldn't you just use the HttpApplicationState Application variable accessible from Global.asax.cs to accomplish this?  Also - can OWIN handle Session variables?</p></li>
  </ol>